Avatar billede mortenbock Nybegynder
14. februar 2006 - 23:24 Der er 5 kommentarer og
1 løsning

dato problemer igen i SQL

Nu er jeg ved at være grundigt forvirret over det her dato halløj.

Jeg har en select sætning:

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

Dette virker fint på datoer der kun kan læses på én måde:
03-03-2006
30-03-2006

Men når datoen kan vende på to måder:
04-03-2006 ~ 03-04-2006, så finder den ikke nogen dato i databasen.

Hvordan skal min dato streng se ud for at blive konverteret til det rigtige format så SQL kan sammenligne på det rette grundlag?
Avatar billede jansangill Nybegynder
14. februar 2006 - 23:44 #1
Kan du ikke bare sørge for at datoen kun kan vende på en måde når du indsætter datoen i databasen? brug den danske LCID, så burde den da sætte dansk tidsformat ind i databasen, formoder jeg da. Jeg har ihvertfald aldrig haft problemer med dato format.
Avatar billede mortenbock Nybegynder
14. februar 2006 - 23:49 #2
Når jeg ser i databasen står der dd-mm-yyy
Når jeg udskriver dato fra mit recordset står der dd-mm-yyy

Men når jeg skal sammenligne fra min select sætning, så går det galt så snart datoen kan fortolkes på to måder.
Avatar billede mortenbock Nybegynder
14. februar 2006 - 23:49 #3
Præcist hvos skal et LCID tag sættes ind?
Avatar billede mortenbock Nybegynder
14. februar 2006 - 23:56 #4
nu lykkedes det mig at få det til at fungere.

For at sammenligne korrekt i min select sætning skal datoen skrives i formatet mm-dd-yyyy.

Jeg løste det sådan her:

<%
Function ConvertDate(Format, streng)

    Format = Replace(Format, "dd", Day(streng))
    Format = Replace(Format, "mm", Month(streng))
    Format = Replace(Format, "yyyy", Year(streng))
    ConvertDate = Format

End Function

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=#" & ConvertDate("mm-dd-yyyy", 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") = Request.QueryString("date")
            rs.Update
       
        rs.Close
        set rs = Nothing
   
else

        sql = "DELETE FROM afbud WHERE Member_id=" & Request.QueryString("member") & " AND dato=#" & ConvertDate("mm-dd-yyyy", Request.QueryString("date")) & "#"
        conn.Execute(sql)

end if

rscheck.close
set recheck = Nothing   
conn.Close
set conn = Nothing
%>
Avatar billede jansangill Nybegynder
15. februar 2006 - 00:04 #5
hehe godt det kunne lykkedes. Det burde dog ikke være nøjvendigt efter min mening at lave en funktion for at få det til at virke. Men så lang tid det virker skal man ikke pille ved det:D
Avatar billede mortenbock Nybegynder
27. september 2006 - 20:18 #6
lukker her
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