webForumDet fria alternativet

hittar ingen post fast det finns

13 svar · 306 visningar · startad av ampy

ampyMedlem sedan feb. 20011 498 inlägg
#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.

nikoMedlem sedan juni 20022 599 inlägg
#2

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?

ampyMedlem sedan feb. 20011 498 inlägg
#3

Fältet är tyvärr av typen text.

nikoMedlem sedan juni 20022 599 inlägg
#4

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.)

ampyMedlem sedan feb. 20011 498 inlägg
#5

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.

nikoMedlem sedan juni 20022 599 inlägg
#6

Vi talar Access, antar jag?

.. where datediff('d',datum2,#" & Date & "#)=1 ..
ampyMedlem sedan feb. 20011 498 inlägg
#7

Det är till en mysql-databas.

nikoMedlem sedan juni 20022 599 inlägg
#8

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 ..
ampyMedlem sedan feb. 20011 498 inlägg
#9

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).

nikoMedlem sedan juni 20022 599 inlägg
#10

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".

ampyMedlem sedan feb. 20011 498 inlägg
#11

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?

nikoMedlem sedan juni 20022 599 inlägg
#12

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.

ampyMedlem sedan feb. 20011 498 inlägg
#13

Kom på felet. Var en miss av mig. :r

Hade även

sort = 'fakta'

med i sql-satsen av misstag.

@ndersMedlem sedan juni 200032 969 inlägg
#14

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,

133 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)