Avatar billede jochke Nybegynder
14. juni 2002 - 19:23 Der er 12 kommentarer og
3 løsninger

Trække dato interval ud af Access Database.

Heysa.

Mit problem ligger i at jeg skal trække data ud fra en Access database. Det skal være i et interval der er varierende.

Her er en bid af koden:
SQL = "SELECT * FROM "& CPR & " WHERE (Dato > #" & fra & "# And Dato < #" & til & "#)"

Mit problem er at der ikke bliver udskrevet nogen resultater, selvom jeg indtaster et datointerval jeg ved der ligger i databasen.

Dato formaterne er alle danske, både i databasen og dem der søges på(variablerne). Feltet hvor datoerne ligger i er i formatet Data/Time.

Håber nogen snart kommer til undsætning. :D

/Jochke
Avatar billede eagleeye Praktikant
14. juni 2002 - 19:27 #1
Ja måske. Dansk dato format bliver som regn selvom det er dansk i SQL og Access databasen lavet om til mm-dd-yy når man executer SQL'en. Prøv at bruge dato formatet yyyy-mm-dd i SQL'en altså fra og til.
Avatar billede frosig Nybegynder
14. juni 2002 - 19:33 #2
Man har også en mulighed i SQL, der hedder BETWEEN... Altså

Where Dato BETWEEN dato1 AND dato2

Prøv det
Avatar billede frosig Nybegynder
14. juni 2002 - 19:35 #3
Evt. prøv at få en simpel statement til at virke, hvor du bare vælge en bestemt dato, som er i DB'en. På den måde kan du se, hvordan formatet skal være...
Avatar billede pato Nybegynder
14. juni 2002 - 22:11 #4
tilføjer lige til frosig's svar....

når man bruger BETWEEN...AND... er begge datoer inklusive!
Avatar billede nih Novice
14. juni 2002 - 23:38 #5
Det der ofte driller med datoer er formattet.
SELECT ...... WHERE dato BETWEEN #mm/dd/yy# AND #mm/dd/yy#

jeg kender ikke ASP men dine variabler skal formateres til tekststrenge i formattet mm/dd/yy eller yyyy/mm/dd.

det er et irriterende problem, fordi koden ikke giver fejl, men der søges simpelthen på forkerte datoer.

Niels
Avatar billede jochke Nybegynder
15. juni 2002 - 00:03 #6
vil det sige at problemet bare ligger i at det skal stå i formatet: mm/dd/yy i stedet for det jeg i forvejen bruger dd-mm-yy.
Er det seperatorne eller dage og måneder der skal rettes?

/Jochke
Avatar billede eagleeye Praktikant
15. juni 2002 - 00:09 #7
Ja.. Men det er ligeneget om du bruger / eller -
Avatar billede jochke Nybegynder
15. juni 2002 - 00:14 #8
aha....inputtet skulle åbenbart være i engelsk format som: mm/dd/yy og fandt ud af at det er lige meget om det er / eller -.

Så er det problem næsten løst. Bortset fra det skal være på dansk, altså dato formatet når man indtaster det.

Nogen der ved hvordan man konvertere det med nogen linjers kode?

/Jochke
Avatar billede eagleeye Praktikant
15. juni 2002 - 00:17 #9
du kan gøre noget i stil med:

datoDKstr = Request.Form("dato")
datoStr = mid(datoDKstr,4,2) & "-" & mid(datoDKstr,1,2) & "-" & mid(datoDKstr,7,2)

Så kan du bruge datoStr i din SQL.
Avatar billede jochke Nybegynder
15. juni 2002 - 00:26 #10
Oki prøver lige....du kan vel ikke lige kort forklare hvad mid() gør? Har lige slået op "VBScript Language Reference" men fattede det ikke lige.
Avatar billede nih Novice
15. juni 2002 - 00:36 #11
Mid(string, start[, length])

Syntaksen til funktionen Mid indeholder følgende navngivne argumenter:

Argument    Beskrivelse
string    Obligatorisk. Strengudtryk, der returneres tegn fra. Hvis string indeholder Null, returneres en nulværdi.
start    Obligatorisk. Long, Den tegnposition i string, hvor det argument, der skal tages, begynder. Hvis start er større end antallet af tegn i string, returnerer Mid en streng af længden nul ("").
length    Valgfrit. Variant (Long). Det antal tegn, der skal returneres. Hvis det udelades, eller hvis der er færre tegn i teksten end angivet i length (herunder tegnet ved start), returneres alle tegnene fra positionen start til slutningen af strengen.
Avatar billede nih Novice
15. juni 2002 - 00:39 #12
returner altså en delstreng af en string, startposition, længde af delstreng.

Niels
Avatar billede pato Nybegynder
15. juni 2002 - 00:44 #13
her er en lille funktion hvor du kan formater en dato fra DK til UK eller omvendt


' ------------------------------------------------------------------------------------------
'    Convert Date From Language Format To Language Format Function
' ------------------------------------------------------------------------------------------
Function ConvertDateFromTo(vdate,FromFormat, ToFormat)
Dim parsedDate, splitter, sDay, sMonth, sYear
Dim indexDay, indexMonth, indexYear

    Select Case FromFormat
        case "DK"
            splitter = "-"
            indexDay = 0
            indexMonth = 1
            indexYear = 2
        case else
            splitter = "-"
            indexDay = 1
            indexMonth = 0
            indexYear = 2
    End Select   
   
    parsedDate = split(vdate,splitter,-1,1)
    sDay = parsedDate(indexDay)
    sMonth = parsedDate(indexMonth)
    sYear = Year("01-01-" & parsedDate(indexYear))
   
    Select case ToFormat
            case "DK"
                ConvertDateFromTo = sDay & splitter & sMonth & splitter & sYear
            case else   
                ConvertDateFromTo = sMonth & splitter & sDay & splitter & sYear
    End select   

End Function



den kaldes med

DatotoUse = convertDateFromTo(Request.Form("dato"),"DK","UK")
Avatar billede jochke Nybegynder
15. juni 2002 - 00:47 #14
Takker for svarene...jeg deler pointene imellem jer da alle jeres svar har væres brugbare.
Tak for hjælpen.
Avatar billede pato Nybegynder
15. juni 2002 - 15:45 #15
anytime
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