Avatar billede zeusdk Nybegynder
18. marts 2003 - 22:47 Der er 22 kommentarer og
2 løsninger

Hjælp

Hej

Jeg har et script, som skal finde datoer, som forekommer 2 gange eller derover. I mængden af datoer i min db, er der dog kun en dato, som forekommer 2 gange, og det er datoen "03-05-2003".

Men selv se på følgende side - det virker slet ikke:
http://www.selvet.dk/exp.asp


<%

Set myConn=Server.CreateObject("ADODB.Connection")
myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb"))

strSQL = "SELECT datopublish FROM search WHERE datopublish >= #"  & Year(date) & "-" & month(date) & "-" & Day(date) &  "# AND datopublish < #" & Year(dateadd("yyyy",1,date)) & "-" & month(dateadd("yyyy",1,date)) &  "-" & Day(dateadd("yyyy",1,date)) & "# order by datopublish"
set rs = myConn.execute(strSQL)
response.write "<br>strSQL: " & strSQL & "<br><br>"
   
do while not rs.EOF
    if isDate(rs("datopublish")) then
        myDates = myDates & rs("datopublish") & ", "
    End If
    rs.MoveNext
Loop
   
if right(myDates, 2) = ", " then
    myDates = left(myDates,len(myDates)-2)
end if

response.write "<br>Skal undersøge: <br>" & myDates & "<br><br><br>"
response.write "<br>Finder: <br>"
   
myDateArr = Split(myDates,",")

dato = date ()
datoSlut = DateAdd("yyyy",1,date)
i = 0
do while dato <= datoSlut
    if countDates(myDateArr(i), myDates) < 2 AND CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
    else
        i = i + 1
        if i > ubound(myDateArr) then i = ubound(myDateArr)
    end if
    dato = dateAdd("d",1,dato)
loop

response.write "<br><br>Det havde været rigtigt, hvis den havde skrevet alle datoerne, undtagen 03-05-2003<br>"

Function countDates(patrn, strng)

    Dim regEx, Match, Matches  ' Create variable.
      Set regEx = New RegExp  ' Create regular expression.
      regEx.Pattern = patrn  ' Set pattern.
      regEx.IgnoreCase = True  ' Set case insensitivity.
      regEx.Global = True  ' Set global applicability.
      Set Matches = regEx.Execute(strng)  ' Execute search.
      For Each Match in Matches  ' Iterate Matches collection.
        intMatchCount = intMatchCount + 1
      Next
      countDates = intMatchCount
     
End Function

%>
Avatar billede ellebaek Nybegynder
18. marts 2003 - 22:58 #1
<%

Set myConn=Server.CreateObject("ADODB.Connection")
myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb"))

strSQL = "SELECT datopublish FROM search WHERE datopublish >= #"  & Year(date) & "-" & month(date) & "-" & Day(date) &  "# AND datopublish < #" & Year(dateadd("yyyy",1,date)) & "-" & month(dateadd("yyyy",1,date)) &  "-" & Day(dateadd("yyyy",1,date)) & "# order by datopublish"
set rs = myConn.execute(strSQL)
response.write "<br>strSQL: " & strSQL & "<br><br>"
   
do while not rs.EOF
    if isDate(rs("datopublish")) then
        myDates = myDates & rs("datopublish") & ", "
    End If
    rs.MoveNext
Loop
   
if right(myDates, 2) = ", " then
    myDates = left(myDates,len(myDates)-2)
end if

response.write "<br>Skal undersøge: <br>" & myDates & "<br><br><br>"
response.write "<br>Finder: <br>"
   
myDateArr = Split(myDates,",")

dato = date ()
datoSlut = DateAdd("yyyy",1,date)
i = 0
do while dato <= datoSlut
    if countDates(myDateArr(i), myDates) < 2 AND CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
i = i+1
    else
        i = i + 1
        if i > ubound(myDateArr) then i = ubound(myDateArr)
    end if
    dato = dateAdd("d",1,dato)
loop

response.write "<br><br>Det havde været rigtigt, hvis den havde skrevet alle datoerne, undtagen 03-05-2003<br>"

Function countDates(patrn, strng)

    Dim regEx, Match, Matches  ' Create variable.
      Set regEx = New RegExp  ' Create regular expression.
      regEx.Pattern = patrn  ' Set pattern.
      regEx.IgnoreCase = True  ' Set case insensitivity.
      regEx.Global = True  ' Set global applicability.
      Set Matches = regEx.Execute(strng)  ' Execute search.
      For Each Match in Matches  ' Iterate Matches collection.
        intMatchCount = intMatchCount + 1
      Next
      countDates = intMatchCount
     
End Function

%>
Avatar billede ellebaek Nybegynder
18. marts 2003 - 22:59 #2
jeg tror nok du manglede en i= i+1 der i dit script...!
Jeg kunne ikke finde andre fejl umiddelbart, men prøv det, og meld tilbage...
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:02 #3
http://www.selvet.dk/exp2.asp

Subscript out of range: 'i'
/exp2.asp, line 30
Avatar billede ellebaek Nybegynder
18. marts 2003 - 23:04 #4
do while dato <= datoSlut 
    if countDates(myDateArr(i), myDates) < 2 AND CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
i = i+1
if i > ubound(myDateArr) then i = ubound(myDateArr)

    else
        i = i + 1
        if i > ubound(myDateArr) then i = ubound(myDateArr)
    end if
    dato = dateAdd("d",1,dato)
loop
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:08 #5
Den finder en helt masse, som den ikke skal finde, og når den kommer til "05-09-2003" (og jeg aner ikke hvor lige denne værdi), så går den helt i selvsving.

http://www.selvet.dk/exp2.asp
Avatar billede ellebaek Nybegynder
18. marts 2003 - 23:09 #6
do while dato <= datoSlut AND i <= ubound(myDateArr) 
    if countDates(myDateArr(i), myDates) < 2 AND CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
i = i+1
if i > ubound(myDateArr) then i = ubound(myDateArr)

    else
        i = i + 1
        end if
    dato = dateAdd("d",1,dato)
loop
Avatar billede ellebaek Nybegynder
18. marts 2003 - 23:11 #7
do while dato <= datoSlut AND i <= ubound(myDateArr) 
    if countDates(myDateArr(i), myDates) < 2 AND CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
i = i+1
    else
        i = i + 1
        end if
    dato = dateAdd("d",1,dato)
loop

Ups...! Det skulle være sådan her...
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:13 #8
Lidt bedre, men...

Hele striben af "18-03-2003, 19-03-2003, 20-03-2003, 21-03-2003....." mangler og så går den i selvsving ved "05-09-2003".
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:13 #9
Avatar billede ellebaek Nybegynder
18. marts 2003 - 23:17 #10
Ja...!
Synes jeg også er mærkeligt...!

Var det nr. 2 jeg skrev før du testede der ??

Kan du ikke sende db'en til min mail, så kan jeg lige prøve det lidt...
Avatar billede ellebaek Nybegynder
18. marts 2003 - 23:17 #11
jens_ellebaek@hotmail.com
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:20 #12
Hermed sendt... :)
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:21 #13
>Var det nr. 2 jeg skrev før du testede der ??
jeg har testet begge dele
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:21 #14
Koden er p.t:

<%

Set myConn=Server.CreateObject("ADODB.Connection")
myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb"))

strSQL = "SELECT datopublish FROM search WHERE datopublish >= #"  & Year(date) & "-" & month(date) & "-" & Day(date) &  "# AND datopublish < #" & Year(dateadd("yyyy",1,date)) & "-" & month(dateadd("yyyy",1,date)) &  "-" & Day(dateadd("yyyy",1,date)) & "# order by datopublish"
set rs = myConn.execute(strSQL)
response.write "<br>strSQL: " & strSQL & "<br><br>"
   
do while not rs.EOF
    if isDate(rs("datopublish")) then
        myDates = myDates & rs("datopublish") & ", "
    End If
    rs.MoveNext
Loop
   
if right(myDates, 2) = ", " then
    myDates = left(myDates,len(myDates)-2)
end if

response.write "<br>Skal undersøge: <br>" & myDates & "<br><br><br>"
response.write "<br>Finder: <br>"
   
myDateArr = Split(myDates,",")

dato = date ()
datoSlut = DateAdd("yyyy",1,date)
i = 0
do while dato <= datoSlut AND i <= ubound(myDateArr) 
    if countDates(myDateArr(i), myDates) < 2 AND CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
i = i+1
if i > ubound(myDateArr) then i = ubound(myDateArr)

    else
        i = i + 1
        end if
    dato = dateAdd("d",1,dato)
loop
response.write "<br><br>Det havde været rigtigt, hvis den havde skrevet alle datoerne, undtagen 03-05-2003<br>"

Function countDates(patrn, strng)

    Dim regEx, Match, Matches  ' Create variable.
      Set regEx = New RegExp  ' Create regular expression.
      regEx.Pattern = patrn  ' Set pattern.
      regEx.IgnoreCase = True  ' Set case insensitivity.
      regEx.Global = True  ' Set global applicability.
      Set Matches = regEx.Execute(strng)  ' Execute search.
      For Each Match in Matches  ' Iterate Matches collection.
        intMatchCount = intMatchCount + 1
      Next
      countDates = intMatchCount
     
End Function

%>
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:24 #15
Jeg beskærer lige databasen.


The original message was received at Tue, 18 Mar 2003 23:18:02 +0100

  ----- The following addresses had permanent fatal errors ----- <jens_ellebaek@hotmail.com>

  ----- Transcript of session follows -----
... while talking to mx4.hotmail.com
>>> RCPT To:<jens_ellebaek@hotmail.com>
<<< 552 Requested action not taken: exceeded size limit
Avatar billede ellebaek Nybegynder
18. marts 2003 - 23:26 #16
ellers så send den til:
ellebaek@post6.tele.dk
Avatar billede zeusdk Nybegynder
18. marts 2003 - 23:31 #17
Afsendt... jeg går i seng nu. Jeg glæder mig meget til at læse dit svar i morgen, fordi jeg virkelig brugt meget tid på at programmere ovenstående kode. Ses :-)
Avatar billede ellebaek Nybegynder
18. marts 2003 - 23:36 #18
Håber stadig du er der, for jeg får ikke nogen db...

Kan du ikke sende den til jens@mail.zix.dk ??
Avatar billede medions Nybegynder
19. marts 2003 - 08:01 #19
Prøv sådan her:

<%

Set myConn=Server.CreateObject("ADODB.Connection")
myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb"))

strSQL = "SELECT DISTINCT datopublish FROM search WHERE datopublish >= #"  & Year(date) & "-" & month(date) & "-" & Day(date) &  "# AND datopublish < #" & Year(dateadd("yyyy",1,date)) & "-" & month(dateadd("yyyy",1,date)) &  "-" & Day(dateadd("yyyy",1,date)) & "# order by datopublish"
set rs = myConn.execute(strSQL)
response.write "<br>strSQL: " & strSQL & "<br><br>"
   
do while not rs.EOF
    if isDate(rs("datopublish")) then
        myDates = myDates & rs("datopublish") & ", "
    End If
    rs.MoveNext
Loop
   
if right(myDates, 2) = ", " then
    myDates = left(myDates,len(myDates)-2)
end if

response.write "<br>Skal undersøge: <br>" & myDates & "<br><br><br>"
response.write "<br>Finder: <br>"
   
myDateArr = Split(myDates,",")

dato = date ()
datoSlut = DateAdd("yyyy",1,date)
i = 0
do while dato <= datoSlut AND i <= ubound(myDateArr) 
    if countDates(myDateArr(i), myDates) < 2 AND CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
i = i+1
if i > ubound(myDateArr) then i = ubound(myDateArr)

    else
        i = i + 1
        end if
    dato = dateAdd("d",1,dato)
loop
response.write "<br><br>Det havde været rigtigt, hvis den havde skrevet alle datoerne, undtagen 03-05-2003<br>"

Function countDates(patrn, strng)

    Dim regEx, Match, Matches  ' Create variable.
      Set regEx = New RegExp  ' Create regular expression.
      regEx.Pattern = patrn  ' Set pattern.
      regEx.IgnoreCase = True  ' Set case insensitivity.
      regEx.Global = True  ' Set global applicability.
      Set Matches = regEx.Execute(strng)  ' Execute search.
      For Each Match in Matches  ' Iterate Matches collection.
        intMatchCount = intMatchCount + 1
      Next
      countDates = intMatchCount
     
End Function

%>
 
//>Rune
Avatar billede pelkjaer Nybegynder
19. marts 2003 - 08:26 #20
Du har allerede et sp. åbent http://www.eksperten.dk/spm/330266
Derfor skal du lukke dette omgående.

pelkjaer - coadmin
Avatar billede zeusdk Nybegynder
19. marts 2003 - 10:08 #21
>>pelkjaer
Hermed ordnet - se begundelse i det andet spg.
Avatar billede ellebaek Nybegynder
19. marts 2003 - 15:26 #22
medions -> hvad er det du har ændret ??
Avatar billede ellebaek Nybegynder
19. marts 2003 - 15:49 #23
<%

Set myConn=Server.CreateObject("ADODB.Connection")
myConn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+server.Mappath("/db/selvet.mdb"))

strSQL = "SELECT datopublish FROM search WHERE datopublish >= #"  & Year(date) & "-" & month(date) & "-" & Day(date) &  "# AND datopublish < #" & Year(dateadd("yyyy",1,date)) & "-" & month(dateadd("yyyy",1,date)) &  "-" & Day(dateadd("yyyy",1,date)) & "# order by datopublish"
set rs = myConn.execute(strSQL)
response.write "<br>strSQL: " & strSQL & "<br><br>"
   
do while not rs.EOF
    if isDate(rs("datopublish")) then
        myDates = myDates & rs("datopublish") & ", "
    End If
    rs.MoveNext
Loop
   
if right(myDates, 2) = ", " then
    myDates = left(myDates,len(myDates)-2)
end if

response.write "<br>Skal undersøge: <br>" & myDates & "<br><br><br>"
response.write "<br>Finder: <br>"
   
myDateArr = Split(myDates,",")

dato = date ()
datoSlut = DateAdd("yyyy",1,date)
i = 0


do while dato <= datoSlut AND i <= ubound(myDateArr) 
    if countDates(myDateArr(i), myDates) < 2 then
        if CDate(myDateArr(i)) <> CDate(dato) then
        response.write myDateArr(i) & ", "
i = i+1
end if
    else
        i = i + 2
        end if
    dato = dateAdd("d",1,dato)
loop

response.write "<br><br>Det havde været rigtigt, hvis den havde skrevet alle datoerne, undtagen 03-05-2003<br>"

Function countDates(patrn, strng)

    Dim regEx, Match, Matches  ' Create variable.
      Set regEx = New RegExp  ' Create regular expression.
      regEx.Pattern = patrn  ' Set pattern.
      regEx.IgnoreCase = True  ' Set case insensitivity.
      regEx.Global = True  ' Set global applicability.
      Set Matches = regEx.Execute(strng)  ' Execute search.
      For Each Match in Matches  ' Iterate Matches collection.
        intMatchCount = intMatchCount + 1
      Next
      countDates = intMatchCount
     
End Function

%>

Hej Zeus...

Nu har jeg testet den ved hjælp af det array du har brugt, hentede det bare som en streng fra din hjemmeside...
Ovenstående script fungere 100% som det skal.
Problemet var at hvis der var et element der gik igen skulle i ikke flyttes 1 men 2 pladser i stedet...
Samtidig kunne du ikke lave de 2 tjek i din if sætning, har lavet disse om til 2 if sætninger i stedet..

Men nu virker det...
Mvh. Jens!
Avatar billede zeusdk Nybegynder
19. marts 2003 - 22:13 #24
Mange tak for hjælpen, ellebaek

Super godt gået :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester