PDA

Bekijk Volledige Versie : ASP : ADODB.Field (0x80020009)



de Grooot
20/03/06, 12:20
Goeies,

Ik heb een gevulde database waaruit ik gegevens wil laten zien. Wat is de
bedoeling? Medewerker vult een aantal vragen in, deze worden geupload naar
de database en vervolgens wordt er een overzichtje weergegeven van wat de
medewerker heeft ingevuld. Om te verifieren dat de juiste medewerker zijn
gegevens krijgt haal ik het medewerkersID en inlognaam uit de cookie.

Dit ziet eruit als volgt:

===
<%
MedewerkerID = request.cookies ("intranet")("MedewerkerID")
Inlognaam = request.cookies("intranet")("Inlognaam")
%>

<%
SQL = "Select * FROM Reacties WHERE med_id='&MedewerkerID&' AND
Inlognaam="&Inlognaam&""
Set objRS=Server.CreateObject("ADODB.Recordset")
objRS.Open SQL, objConn
%>
===

Het rare is nu dat ik, ondanks dat ik een gevulde database heb, een
foutmelding krijg:

"ADODB.Field (0x80020009)
BOF of EOF is Waar, of de huidige record is verwijderd. Voor de gewenste
bewerking moet er een huidige record zijn."

Als ik in de SQL de waarde's voor med_id en inlognaam "hard" invul (dus
niet o.b.v. van de cookie, maar de daadwerkelijke naam die in de record
staat) dan krijg ik de foutmelding niet.

Wie weet waar de fout zou kunnen zitten?

Voor eventuele hulp alvast bedankt!

Grtz,

X@nder

Erik Baas
20/03/06, 19:00
de Grooot wrote:

> Ik heb een gevulde database waaruit ik gegevens wil laten zien. Wat is de
> bedoeling? Medewerker vult een aantal vragen in, deze worden geupload naar
> de database en vervolgens wordt er een overzichtje weergegeven van wat de
> medewerker heeft ingevuld. Om te verifieren dat de juiste medewerker zijn
> gegevens krijgt haal ik het medewerkersID en inlognaam uit de cookie.

> MedewerkerID = request.cookies ("intranet")("MedewerkerID")
> Inlognaam = request.cookies("intranet")("Inlognaam")

> SQL = "Select * FROM Reacties WHERE med_id='&MedewerkerID&' AND
> Inlognaam="&Inlognaam&""
> Set objRS=Server.CreateObject("ADODB.Recordset")
> objRS.Open SQL, objConn

> Het rare is nu dat ik, ondanks dat ik een gevulde database heb, een
> foutmelding krijg:
> "ADODB.Field (0x80020009)
> BOF of EOF is Waar, of de huidige record is verwijderd. Voor de gewenste
> bewerking moet er een huidige record zijn."

> Als ik in de SQL de waarde's voor med_id en inlognaam "hard" invul (dus
> niet o.b.v. van de cookie, maar de daadwerkelijke naam die in de record
> staat) dan krijg ik de foutmelding niet.

De waarden van de variabelen MedewerkerID en Inlognaam worden niet goed ingevuld in de query.

> SQL = "Select * FROM Reacties WHERE med_id='&MedewerkerID&' AND Inlognaam="&Inlognaam&""

SQL = "Select * FROM Reacties WHERE med_id='" & MedewerkerID & "' AND Inlognaam='" & Inlognaam & "'"

(niet getest, maar zou moeten werken)

P.S.: Dit soort fouten kun je meestal opsporen door (tijdelijk) een regel toe
te voegen aan je script:

Response.Write SQL & "<br>"

--
Erik.

Stefan Arentz
20/03/06, 19:00
Erik Baas <ejbaas@gmail.com.invalid> writes:

> de Grooot wrote:
>
> > Ik heb een gevulde database waaruit ik gegevens wil laten zien. Wat is de
> > bedoeling? Medewerker vult een aantal vragen in, deze worden geupload naar
> > de database en vervolgens wordt er een overzichtje weergegeven van wat de
> > medewerker heeft ingevuld. Om te verifieren dat de juiste medewerker zijn
> > gegevens krijgt haal ik het medewerkersID en inlognaam uit de cookie.
>
> > MedewerkerID = request.cookies ("intranet")("MedewerkerID")
> > Inlognaam = request.cookies("intranet")("Inlognaam")
>
> > SQL = "Select * FROM Reacties WHERE med_id='&MedewerkerID&' AND
> > Inlognaam="&Inlognaam&""
> > Set objRS=Server.CreateObject("ADODB.Recordset")
> > objRS.Open SQL, objConn
>
> > Het rare is nu dat ik, ondanks dat ik een gevulde database heb, een
> > foutmelding krijg:
> > "ADODB.Field (0x80020009)
> > BOF of EOF is Waar, of de huidige record is verwijderd. Voor de gewenste
> > bewerking moet er een huidige record zijn."
>
> > Als ik in de SQL de waarde's voor med_id en inlognaam "hard" invul (dus
> > niet o.b.v. van de cookie, maar de daadwerkelijke naam die in de record
> > staat) dan krijg ik de foutmelding niet.
>
> De waarden van de variabelen MedewerkerID en Inlognaam worden niet goed ingevuld in de query.
>
> > SQL = "Select * FROM Reacties WHERE med_id='&MedewerkerID&' AND Inlognaam="&Inlognaam&""
>
> SQL = "Select * FROM Reacties WHERE med_id='" & MedewerkerID & "' AND Inlognaam='" & Inlognaam & "'"
>
> (niet getest, maar zou moeten werken)

Je beseft je wel goed dat op deze manier je queries samenstellen potentieel kan leiden
tot sql injection hacks? Altijd placeholders gebruikers. Of kan dat niet vanuit ASP?

S.

de Grooot
21/03/06, 01:00
"Erik Baas" <ejbaas@gmail.com.invalid> schreef in bericht
news:441EE3EA.F3C7C585@gmail.com.invalid...
> de Grooot wrote:
>
>> Ik heb een gevulde database waaruit ik gegevens wil laten zien. Wat is de
>> bedoeling? Medewerker vult een aantal vragen in, deze worden geupload
>> naar
>> de database en vervolgens wordt er een overzichtje weergegeven van wat de
>> medewerker heeft ingevuld. Om te verifieren dat de juiste medewerker zijn
>> gegevens krijgt haal ik het medewerkersID en inlognaam uit de cookie.
>
>> MedewerkerID = request.cookies ("intranet")("MedewerkerID")
>> Inlognaam = request.cookies("intranet")("Inlognaam")
>
>> SQL = "Select * FROM Reacties WHERE med_id='&MedewerkerID&' AND
>> Inlognaam="&Inlognaam&""
>> Set objRS=Server.CreateObject("ADODB.Recordset")
>> objRS.Open SQL, objConn
>
>> Het rare is nu dat ik, ondanks dat ik een gevulde database heb, een
>> foutmelding krijg:
>> "ADODB.Field (0x80020009)
>> BOF of EOF is Waar, of de huidige record is verwijderd. Voor de gewenste
>> bewerking moet er een huidige record zijn."
>
>> Als ik in de SQL de waarde's voor med_id en inlognaam "hard" invul (dus
>> niet o.b.v. van de cookie, maar de daadwerkelijke naam die in de record
>> staat) dan krijg ik de foutmelding niet.
>
> De waarden van de variabelen MedewerkerID en Inlognaam worden niet goed
> ingevuld in de query.
>
>> SQL = "Select * FROM Reacties WHERE med_id='&MedewerkerID&' AND
>> Inlognaam="&Inlognaam&""
>
> SQL = "Select * FROM Reacties WHERE med_id='" & MedewerkerID & "' AND
> Inlognaam='" & Inlognaam & "'"
>
> (niet getest, maar zou moeten werken)
>
> P.S.: Dit soort fouten kun je meestal opsporen door (tijdelijk) een regel
> toe
> te voegen aan je script:
>
> Response.Write SQL & "<br>"
>
> --
> Erik.

En werken doet het....! THX!

X@nder