Hej! SQL Server gillar strängar som datum !?! Testa med: Hej igen! Nu har jag löst det!Fel datumformat i SQL?
Jag har skrivit en liten kodsnutt som plockar ett citat ur en databas beroende på vad det är för datum.
När jag provkör den på min egen maskin (XP Pro, IIS) fungerar det bra men när jag lägger ut den på mitt webbhotell (Win 2000 Server) så får jag följande felmeddelande:
--------------
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/Bokcitat/citat.asp, line 37
--------------
Den del av koden som genererar felet ser ut så här:
<code>
Set rst = Server.CreateObject("ADODB.Recordset")
strSQL="SELECT * FROM Citat WHERE CitatDag=#" & FormatDateTime(Date, 2) & "#"
rst.Open strSQL, con, adOpenKeySet, adLockPessimistic</code>
Jag har ingen aning om var jag ska börja felsöka detta. Finns det nån som kan ge mig ett tips?
MVHSv: Fel datumformat i SQL?
Oavsett vilken setting SQL har, så köper den '2002-03-30' - formatet. Det är en standard.
strSQL skall alltså se ut ungefär som:
SELECT * FROM Citat WHERE CitatDag = '2004-03-20'
/mickeSv: Fel datumformat i SQL?
<code>
Function SQLDate(ByVal Value As Variant)
If IsDate(Value) Then
SQLDate = """" & Year(Value) & "-" & Right("0" & Month(Value), 2) & "-" & Right("0" & Day(Value), 2) & """"
Else
SQLDate = "Null"
End If
End Function
Dim rst
Dim con
Dim strSQL
Set con = Server.CreateObject("ADODB.Connection")
con.Open "<<<Anslutningssträng>>>"
strSQL = "SELECT * FROM Citat WHERE CitatDag=" & SQLDate(Date, 2)
Set rst = Server.CreateObject("ADODB.Recordset")
rst.Open strSQL, con
If rst.EOF Then
Else
End If
rst.Close
Set rst = Nothing
</code>
Det finns ett exempel på hur man plockar fram dagens ordspråk i filarean: Programarkivet:Dagens ordspråkSv: Fel datumformat i SQL?
Jag glömde tala om att jag skriver asp-kod! (sorry) mot en accessdatabas.
Jag har provat era förslag; jag har ändrat till strängformat, med olika strängavgränsare och helt utan (som i ordet-för-dagen-exemplet); med funktionen som Andreas gav som förslag och jag har bytt anslutningssträng (till "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" ...)
Allt detta utan att det fungerar.
Det som fungerar i min dator är med #-tecknet runt datumet och jag får <b>inget</b> att fungera på webbhotellet.
Jag är jättetacksam för era tips och engagemang, men för tillfället lika nollad som förut. Kan felet ligga nån helt annan stans?Sv: Fel datumformat i SQL?
Det hade egentligen inte alls med SQL-strängen eller datumformatet att göra.
Jag hade strulat till det ordentligt med att lägga min connection i en mycket felskriven function (jag måste ha varit väldigt trött när jag gjorde den ;) ).
Efter mycket felsökning och en del osannolika slumpartade sammanträffanden har jag nog fått till alltihopa och det fungerar.
Tack för hjälpen hur som helst – jag lärde mig en del av det också.