Avatar billede jnissen Nybegynder
03. oktober 2001 - 19:01 Der er 29 kommentarer og
1 løsning

Hvad betyder denne fejl?

Hej

Hvad betyder denne fejl helt præcis??

---
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
---

Og hvordan løser man problemet?
Avatar billede eagleeye Praktikant
03. oktober 2001 - 19:04 #1
det betyder at det recordset du har hendtet er tomt.

Du kan efter du har åbet et record test om BOF eller EOF er sat:

if not (rs.BOF or rs. EOF) then
  ...<udskriv data>...
else
  Søgningen/Databasen er tom
end if
Avatar billede 2-maz Nybegynder
03. oktober 2001 - 19:04 #2
Kan jeg se dit script?
Avatar billede jnissen Nybegynder
03. oktober 2001 - 19:10 #3
Nu kommer den ikke med fejlen,når jeg har sat koden ind.
Men det er altså ikke rigtigt. Der er noget i databsen.

Min kode ser sådan ud:

<%
set conn = server.createobject(\"ADODB.connection\")
path = Server.MapPath(\"_private/db.mdb\")
conn.Open \"DBQ=\"& path &\";DefaultDir=\"& path & \";Driver={Microsoft Access Driver (*.mdb)}\"


SQL = \"SELECT * FROM info INNER JOIN ekstra ON info.cpr = ekstra.cpr WHERE info.cpr=\" & request.Querystring(\"cpr\")
set RS = Conn.Execute(SQL)
%>

Mvh. Jacob
Avatar billede eagleeye Praktikant
03. oktober 2001 - 20:27 #4
Får du en fejl?
Avatar billede jnissen Nybegynder
03. oktober 2001 - 21:42 #5
Ja, nu får jeg denne fejl - igen :-)

Too few parameters. Expected 1.

Hvad kan dette skyldes?
Avatar billede eagleeye Praktikant
03. oktober 2001 - 21:46 #6
Det kunne skyldes at request.Querystring(\"cpr\") ikke har en værdi.

prøv response.write SQL
lige inden,
set RS = Conn.Execute(SQL)
Avatar billede jnissen Nybegynder
03. oktober 2001 - 21:52 #7
Jeg får stadig den samme fejl.
Avatar billede eagleeye Praktikant
03. oktober 2001 - 21:57 #8
ja men hvad skriver den?

Noget i stil med : SELECT * FROM info INNER JOIN ekstra ON info.cpr = ekstra.cpr WHERE info.cpr=
Avatar billede jnissen Nybegynder
03. oktober 2001 - 22:00 #9
Nej, den skriver kun den sammen fejl med \"Too few parameters. Expected 1.\"
Avatar billede eagleeye Praktikant
03. oktober 2001 - 22:04 #10
Jeg ville prøve dette:  Skriver den ikke noget ud?

SQL = \"SELECT * FROM info INNER JOIN ekstra ON info.cpr = ekstra.cpr WHERE info.cpr=\" & request.Querystring(\"cpr\")
response.write SQL
set RS = Conn.Execute(SQL)
%>

Hvordan linker du til filen?    filnavn.asp?cpr=xxx
Avatar billede jnissen Nybegynder
03. oktober 2001 - 22:21 #11
Nu får jeg denne fejl:

Data type mismatch in criteria expression.

Hvad betyder det?
Avatar billede eagleeye Praktikant
03. oktober 2001 - 22:24 #12
er cpr et tal eller tekst?

Hvis det er tekst:
SQL = \"SELECT * FROM info INNER JOIN ekstra ON info.cpr = ekstra.cpr WHERE info.cpr=\'\" & request.Querystring(\"cpr\") & \"\'\"
Avatar billede jnissen Nybegynder
03. oktober 2001 - 22:32 #13
Det var et tekstfelt, så nu gik fejlen væk, men jeg er nu tilabge hvor jeg startede, nemlig med denne fejl:

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

Men hvis jeg lave den if-sætning, og udskriver sql, så står der:

SELECT * FROM info INNER JOIN ekstra ON info.cpr1 = ekstra.cpr WHERE info.cpr1=\'1809693019\'

Avatar billede eagleeye Praktikant
03. oktober 2001 - 22:40 #14
I databsen findes cpr1=\'1809693019\' ikke.
Det er sikket fordi du udskriver fra recordset\'et

response.write rs(\"cpr1\")

Hvis recordset\'et (rs) er tomt kommen den fejl når man eks.vis forsøger at udskrive.



set conn = server.createobject(\"ADODB.connection\")
path = Server.MapPath(\"_private/db.mdb\")
conn.Open \"DBQ=\"& path &\";DefaultDir=\"& path & \";Driver={Microsoft Access Driver (*.mdb)}\"

SQL = \"SELECT * FROM info INNER JOIN ekstra ON info.cpr = ekstra.cpr WHERE info.cpr=\'\" & request.Querystring(\"cpr\") & \"\'\"
set RS = Conn.Execute(SQL)

if not(rs.BOF or rs.EOF) then
  ...udskriv fra recordset...
else
  Response.write \"Ingen cpr fundet\"
end if
Avatar billede jnissen Nybegynder
03. oktober 2001 - 22:45 #15
Nej cpr\'et findes i databasen. Den gør det med alle poster.
Avatar billede eagleeye Praktikant
03. oktober 2001 - 22:47 #16
udskriver du i et loop ?
Avatar billede jnissen Nybegynder
03. oktober 2001 - 22:50 #17
Ja, det gør jeg, men der står, at fejlen er helt oppe i startet af koden, og mit loop, er helt nede.

Har det noget at sige?
Avatar billede eagleeye Praktikant
03. oktober 2001 - 22:53 #18
har du dit loop sådan her

do while not rs.EOF
  ...udskriv
  rs.movenext
loop

?
Avatar billede jnissen Nybegynder
03. oktober 2001 - 22:54 #19
Jep, det har jeg.
Avatar billede eagleeye Praktikant
03. oktober 2001 - 22:59 #20
hvilken liner kommer fejlen i ?
Avatar billede jnissen Nybegynder
03. oktober 2001 - 23:03 #21
Nej, det er min fejl. Her står der ikke noget om hvor det er henne. Beklager.
Avatar billede eagleeye Praktikant
03. oktober 2001 - 23:11 #22
set her hvad flagne betyder og hvornår de bliver sat:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdprobof.asp

du har ikke en rs.movenext uden for dit loop?
Avatar billede jnissen Nybegynder
03. oktober 2001 - 23:17 #23
Jeg er desværre nød til at hoppe til køjs nu, så jeg ser nærmere på det i morgen.
Foreløbig tak for din hjælp.

Og nej, jeg har ikke noget rs.movenext uden for mit loop. Jeg har også sat en \' foran hele mit loop.
Avatar billede eagleeye Praktikant
03. oktober 2001 - 23:20 #24
Bruger du rs et sted uden for loop\'et?
Avatar billede jnissen Nybegynder
04. oktober 2001 - 16:30 #25
Nu har jeg fundet ud af hvad fejlen er.
Den kommer nemlig kun, når du vil vise en post, som ikke har en relation i den anden tabel.
Altså hvis der kun er noget i den ene, så kommer fejlen.

Hvordan kan man løse dette problem?
Avatar billede eagleeye Praktikant
04. oktober 2001 - 17:35 #26
Prøv at lave en LEFT JOIN i stedet for en INNER JOIN:

SQL = \"SELECT * FROM info LEFT JOIN ekstra ON info.cpr = ekstra.cpr WHERE info.cpr=\'\" & request.Querystring(\"cpr\") & \"\'\"
Avatar billede jnissen Nybegynder
04. oktober 2001 - 17:41 #27
Sådan du!

Du kører det sku bare.

Jeg bukker og takker.

Du får dine point - håber du er tilfreds?

Mvh. Jacob
Avatar billede eagleeye Praktikant
04. oktober 2001 - 17:41 #28
hov hed cpr ikke cpr1 i info tabellen...
Avatar billede eagleeye Praktikant
04. oktober 2001 - 17:43 #29
mange tak, ja jeg er tilfreds.
Avatar billede jnissen Nybegynder
04. oktober 2001 - 17:45 #30
Jo den hed cpr1, men det opdagede jeg selv :-)

Det er godt du er tilfreds.

Endnu engang mange tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester