Avatar billede mortenbock Nybegynder
14. februar 2006 - 22:11 Der er 7 kommentarer og
1 løsning

dato i SELECT sætning

Hejsa

Jeg sidder og bryder min hjerne med det her:

Når jeg gør således, så er de to datoer ens:

sqlcheck = "SELECT * FROM afbud"
set rscheck = conn.Execute(sqlcheck)

if rscheck.EOF then
    Response.Write("de er ikke ens")
else
    if rscheck("dato") = CDATE(Request.QueryString("date")) then
        Response.Write("de er ens")
    end if
end if


Men, hvis jeg sætter det ind i min select sætning:

sqlcheck = "SELECT * FROM afbud WHERE dato=" & CDATE(Request.QueryString("date"))
set rscheck = conn.Execute(sqlcheck)

if rscheck.EOF then
    Response.Write("de er ikke ens")
else
    if rscheck("dato") = CDATE(Request.QueryString("date")) then
        Response.Write("de er ens")
    end if
end if

Så er mit recordset EOF.

Hva dælen sker der med de datoer?
Avatar billede cpufan Juniormester
14. februar 2006 - 22:21 #1
sqlcheck = "SELECT * FROM afbud WHERE dato=#" & CDATE(Request.QueryString("date"))&"#"
set rscheck = conn.Execute(sqlcheck)
Avatar billede cpufan Juniormester
14. februar 2006 - 22:22 #2
der skal # omkring datoer i sqlsætningen
Avatar billede cpufan Juniormester
14. februar 2006 - 22:22 #3
hvis altså dato er defineret som "dato" i db'en
Avatar billede mortenbock Nybegynder
14. februar 2006 - 22:27 #4
det er den. Det var lige præcis det jeg manglede.

Tak for det.
Avatar billede mortenbock Nybegynder
14. februar 2006 - 22:47 #5
Nu er jeg helt lost.....

Hele mit script ser således ud:

<%
set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../../db/bwm.mdb")

sqlcheck = "SELECT * FROM afbud WHERE Member_id=" & Request.QueryString("member") & " AND dato=#" & CDATE(Request.QueryString("date")) & "#"
set rscheck = conn.Execute(sqlcheck)

if rscheck.EOF then

        set rs = Server.CreateObject("ADODB.RecordSet")
        sql = "SELECT * FROM afbud"
        rs.Open sql, conn, 1, 3
       
            rs.AddNew
            rs("Member_id") = Request.QueryString("member")
            rs("dato") = CDATE(Request.QueryString("date"))
            rs.Update
       
        rs.Close
        set rs = Nothing
   
else

        sql = "DELETE FROM afbud WHERE Member_id=" & Request.QueryString("member") & " AND dato=#" & CDATE(Request.QueryString("date")) & "#"
        conn.Execute(sql)

end if

rscheck.close
set recheck = Nothing   
conn.Close
set conn = Nothing


Det virker når datoen er 17-02-2006, men ikke når den er 10-02-2006
Avatar billede cpufan Juniormester
15. februar 2006 - 09:43 #6
datoer opbevares altid som mm-dd-yyyy i access-databasen

så det kan være lidt noget hø, at få sat rigtigt op.


prøv dette:

sqlcheck = "SELECT * FROM afbud WHERE Member_id=" & Request.QueryString("member") & " AND dato=#" & month(Request.QueryString("date")) &"-"& day(Request.QueryString("date"))&"-"& year(Request.QueryString("date"))& "#"
Avatar billede cpufan Juniormester
15. februar 2006 - 09:48 #7
hvis den ikke findes, er det fordi den er opbevaret som

oktober, 02, 2006  (10-02-2006)

når du sætter datoen ind i db, vil det være en fordel for dig,
at du sætter den ind som mm-dd-yyyy sådan:

month(Request.QueryString("date")) &"-"& day(Request.QueryString("date"))&"-"& year(Request.QueryString("date"))

så ved du nøjagtig hvordan dataene sættes ind.
da der ellers opstår problemer med dagene 1-12, som kan opfattes som måneder.
Avatar billede mortenbock Nybegynder
15. februar 2006 - 11:50 #8
Jeg fik løst problemet i denne tråd, og du har ret i det med mm-dd-yyyy.

http://www.eksperten.dk/spm/688122
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