Avatar billede ste Nybegynder
13. december 2003 - 18:35 Der er 15 kommentarer og
1 løsning

Størren søgning på dato.

Jeg har følgende SQL streng.
strSQL = "Select ObNr, LokId,Obtype, Obinitialer, Afdeling, Lokation, RisikoGentagelse,ObDato from qryObservationersamlet  Where LokId ="&Request("LokId")&" AND ObDato Like'"&Request("ObDato")&"' AND Obtype Like'"&Request("Obtype")&"' AND ObInitialer Like'"&Request("ObInitialer")&"' AND Afdeling Like'"&Request("Afdeling")&"' order by ObNr Desc"

Den virker udemærket, men hvad skal jeg ændre for at søge på større en ObDato. Resultater skulle gerne være at den returnere alle poster der er større end den dato der er angives i formularen.

Håber på et hurtigt svar.
Avatar billede kabbak Professor
13. december 2003 - 18:41 #1
strSQL = "Select ObNr, LokId,Obtype, Obinitialer, Afdeling, Lokation, RisikoGentagelse,ObDato from qryObservationersamlet  Where LokId ="&Request("LokId")&" AND ObDato >='"&Request("ObDato")&"' AND Obtype Like'"&Request("Obtype")&"' AND ObInitialer Like'"&Request("ObInitialer")&"' AND Afdeling Like'"&Request("Afdeling")&"' order by ObNr Desc"
Avatar billede ste Nybegynder
13. december 2003 - 18:42 #2
Nej så melder den følgende fejl.
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
Avatar billede eagleeye Praktikant
13. december 2003 - 19:01 #3
Så det er Access og kolonnen ObDato er af typen date/time?
Avatar billede ste Nybegynder
13. december 2003 - 19:06 #4
Ja kolonnon er af typen data/time typen. Kqa det være fordi jeg henter forespørgslen i en forespørgsel.
Avatar billede eagleeye Praktikant
13. december 2003 - 19:10 #5
Nej det skal virker der bare nogle ting man skal gøre på en bestem måde når det er dato'er og det betyder at der skal # omkring datoen og datoen skal overføres i formatet yyyy-mm-dd eller mm-dd-yyyy og ikke DK format dd-mm-yyyy da access så vil bytte rundt på månede og dag.
Det kan dog let formateres med Year, Month, Day.

strDato = Request("ObDato")
strDato = Year(strDato) & "-" & Month(strDato) & "-" & Day(strDato)

strSQL = "Select ObNr, LokId,Obtype, Obinitialer, Afdeling, Lokation, RisikoGentagelse,ObDato from qryObservationersamlet  Where LokId ="&Request("LokId")&" AND ObDato >=#" & strDato & "# AND Obtype Like'"&Request("Obtype")&"' AND ObInitialer Like'"&Request("ObInitialer")&"' AND Afdeling Like'"&Request("Afdeling")&"' order by ObNr Desc"
Avatar billede ste Nybegynder
13. december 2003 - 19:17 #6
Hvor skal jeg lige indsætte de 2 første linier. Skal de ind i formularen.
Avatar billede ste Nybegynder
13. december 2003 - 19:17 #7
søge formularen
Avatar billede eagleeye Praktikant
13. december 2003 - 19:20 #8
De skal bare ligge lige før SQL sætningen.
Avatar billede ste Nybegynder
13. december 2003 - 19:25 #9
Nu melder den følgende fejl

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/Formular/Observation/søghandlingsresultat.asp, line 31
Avatar billede eagleeye Praktikant
13. december 2003 - 19:33 #10
Hvad står der i linje 31.
Det lyder som om du mangler at definere et object som enten kan være et rcordset eller connection,
Avatar billede ste Nybegynder
13. december 2003 - 19:41 #11
<%
' ADODB connection objektet
Set Conn = Server.CreateObject("ADODB.Connection")
' Husk at angive den rigtige sti til din database
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../fpdb/Miljodatabase.mdb")
' Åben databaseforbindelsen
Conn.Open DSN

strDato = Request("ObDato")
strDato = Year(strDato) & "-" & Month(strDato) & "-" & Day(strDato)

strSQL = "Select ObNr, LokId,Obtype, Obinitialer, Afdeling, Lokation, RisikoGentagelse,ObDato from qryObservationersamlet  Where LokId ="&Request("LokId")&" AND ObDato >=#" & strDato & "# AND Obtype Like'"&Request("Obtype")&"' AND ObInitialer Like'"&Request("ObInitialer")&"' AND Afdeling Like'"&Request("Afdeling")&"' order by ObNr Desc"
    dim antal
(Dette er linie 31)            DO WHILE NOT RS.EOF
                Obtype = rs("Obtype")
                Obinitialer =rs("Obinitialer")
                Afdeling= rs("Afdeling")
                Lokation= rs("Lokation")
                RisikoGentagelse= rs("RisikoGentagelse")
                Obdato = rs("Obdato")
                ObNr = rs("ObNr")
                LokId =rs("LokId")
                antal = antal + 1
                if antal = 10 then
                response.write "<P CLASS=page>"
                antal = 1
                end if
               
               
            %>
Avatar billede eagleeye Praktikant
13. december 2003 - 19:43 #12
Du skal lige havde denne linje ind i linjen lige før 31 den DO WHILE NOT RS.EOF

Set rs = Conn.Execute(strSQL)
Avatar billede ste Nybegynder
13. december 2003 - 19:47 #13
Nå ja. Den var smuttet da jeg klippede din løsning ind. Jeg er ved at miste overblikket måske jeg skulle stoppe for i dag. Men nu til sagens kerne. Nu virker det. Så jeg afleveret tilfreds og fornøjet pointene. Tak for hjælpen.
Ligger du lige et svar.
Avatar billede eagleeye Praktikant
13. december 2003 - 19:48 #14
Ok, ja det gør jeg da gerne ;)
Avatar billede eagleeye Praktikant
13. december 2003 - 19:48 #15
...doh
Avatar billede ste Nybegynder
13. december 2003 - 19:50 #16
Tak
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