On Mon, 23 Jun 2003 22:49:23 +0200, "Janni" <suspefjern@hotmail.com>
wrote:
>fejlmedd:
>Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
>[Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query
>expression 'dte = #12-juni-2003#'.
<snip>
>StrSql= "Select * from diary where dte = #" & Request("view_Date") & "#
>ORDER BY dte"
Jeg tror dit problem er, at scriptet er *for dårligt*.
Det er "for nemt" blot at indsætte dato i SQL'en i et format, som i
virkeligheden blot er en tekststreng med et par havelåger omkring.
(Og så oven i købet direkte fra en Request uden validering ... Se fx:
<url:
http://www.asp-faq.dk/article/?id=95>)
Som du kan se af linken her:
<url:
http://www.asp-faq.dk/article/?id=98>
så er man langt bedre sikret, hvis man overfører værdierne frem for
noget, som er afhængigt af et bestemt dato-format.
>' If no records found then no worries just trap error
>on Error Resume next
Bekræfter blot en lidt for lemfældighed omgang med god kodeskik: Her
er kode-skriveren godt klar over, at der kan ske en fejl. I stedet for
så at tage højde for dette med fx:
If Not rs.EOF Then ...
så siger han/hun blot: "Spring over en evt. fejl" ...
Jeg tror ikke der er nogen vej uden om at lære lidt mere grundlæggende
ASP. Bagefter er det en *rigtig* god træning at gå igennem et færdigt
script og rette op på de ting, der er for dårlige.
Til dit meget konkrete problem vil jeg foreslå, at du retter Sql'en
ved hjælp af ovenstående link:
<url:
http://www.asp-faq.dk/article/?id=98>
Det kunne måske blive noget i retning af (ikke testet):
<%
Dim datViewDate
datViewDate = Request("view_Date")
If IsDate(datViewDate) Then
StrSql= "Select * from diary" & _
" WHERE dte = " & DateToSql(datViewDate) & _
" ORDER BY dte"
Set my_conn = Server.CreateObject("ADODB.Connection")
my_Conn.Open DBcon
' Bemærk: Der skal "Set" foran rs =
Set rs = my_conn.Execute (StrSql)
' Træk ud
' Luk og sluk Conn og rs
Else
' En eller anden form for fejlmelding
End If
' Funktionen fra ovenstående link:
Dim DateToSql
Function DateToSql(Value)
' Dette skal være på én linie:
DateToSql = "DateSerial(" & Year(Value) & ", " & Month(Value) & ", " &
Day(Value) & ") "
End Function
%>
Sorry, ingen lette løsninger ...
Good luck!
--
Jørn Andersen,
Brønshøj