A ampy Medlem sedan feb. 2001 1 498 inlägg Frågan 31 mars 2003 15:30 #1 Har denna kod:
sql = "select id from gastbok where left(datum,10) = '" & Date - 1 & "' and sort = 'fakta' order by id asc"
Set rs = connect.execute(sql)
gastbok_id = rs("id")
Set rs = Nothing
När jag kör den koden på en vanlig .asp-sida så hittar den en massa poster. Men när jag kör den i Visual Basic så hittar den ingen post.
Hur kan det bli så?
Felmeddelandet jag får i VB är:
Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.
N niko Medlem sedan juni 2002 2 599 inlägg Antagligen använder du olika datumformat på ASP-sidan och i VB-programmet.
Att göra strängjämförelser på datum av typen:
where left(datum,10) = '" & Date - 1 & "'
är som att spela rysk roulette. Du får helt olika resultat beroende på maskinens landsinställningar.
Är fältet datum av typen datum i databasen eller text?
A ampy Medlem sedan feb. 2001 1 498 inlägg Fältet är tyvärr av typen text.
N niko Medlem sedan juni 2002 2 599 inlägg
Fältet är tyvärr av typen text.
Då får du ta ditt straff och formatera allt i programmet på samma sätt:
where left(datum,10) = '" & Left(Format(Date - 1, "yyyy-MM-dd") & "' ..
.. eller hur det nu ska vara?
Sen måste du göra samma sak på alla andra ställen i synnerhet när du gör INSERTS så att du inte får blandade format i DB:en. (Alternativet är att göra om fältet till datumtypen.)
A ampy Medlem sedan feb. 2001 1 498 inlägg Jag har nu gjort om fältet till typ datetime men när jag skriver så här hittar den ändå inga poster:
...where left(datum2, 10) = '" & Date - 1 & "'...
Testade då att skriva så här:
...where date(datum2) = '" & Date - 1 & "'...
Men då får jag syntaxfel.
N niko Medlem sedan juni 2002 2 599 inlägg Vi talar Access, antar jag?
.. where datediff('d',datum2,#" & Date & "#)=1 ..
A ampy Medlem sedan feb. 2001 1 498 inlägg Det är till en mysql-databas.
N niko Medlem sedan juni 2002 2 599 inlägg MySQL? Verkligen inte mitt favoritämne, men jag antar att man kanske kan skriva så här?
.. where (TO_DAYS('" & Format(Date, "yyyy-MM-dd") & "')-TO_DAYS(datum2))=1 ..
A ampy Medlem sedan feb. 2001 1 498 inlägg Koden fungerade men konstigt nog så hittar den inga poster. :l
Jag är säker på att det finns poster från igår (2003-04-01).
N niko Medlem sedan juni 2002 2 599 inlägg
Jag är säker på att det finns poster från igår
Ja, men i så fall kan du kanske köra:
SELECT TO_DAYS('" & Format(Date, "yyyy-MM-dd") & "')-TO_DAYS(datum2) from gastbok where id= .. ?
för någon av dessa poster och se vad resultatet blir?
Jag tycker det borde bli "1".
A ampy Medlem sedan feb. 2001 1 498 inlägg Det blir 0. :(
Värdet som finns i kolumnen datum2 i den posten jag valde ut är:
2003-04-01 16:59:22
Den borde ju ha hittat det?
N niko Medlem sedan juni 2002 2 599 inlägg Ja. I "min" MySQL så returnerar iaf:
SELECT TO_DAYS('2003-04-02')-TO_DAYS('2003-04-01 16:59:22') from tabell
garanterat 1.
Jag har alltså ingen förklaring på ditt problem. Tyvärr.
A ampy Medlem sedan feb. 2001 1 498 inlägg Kom på felet. Var en miss av mig. :r
Hade även
sort = 'fakta'
med i sql-satsen av misstag.
@nders Medlem sedan juni 2000 32 967 inlägg Tråden har egentligen ingenting att göra med Visual Basic, utan flyttas på studs, utan vidare dröjsmål, till mer lämpat forum.
Mvh,