Avatar billede eyes Nybegynder
23. februar 2007 - 07:35 Der er 5 kommentarer og
1 løsning

Undgå fejl ved tomt Recordset

Hej eksperten.

Findes der en simpel måde man kan undgå at den smider denne fejl når mit recordsæt er tomt?

-----------------------------
ADODB.Recordset.1 (0x80020009)
Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record.
-----------------------------

jeg bruger følgende kode til udtræk

<%
StrSQL = ""
StrSQL = "Select * from person WHERE ID="+id
Set objRSx = objConn.Execute(strSQL)
%>

<table width="400" border="0" cellpadding="3" cellspacing="0" bgcolor="EEEEEE" class="text">
    <tr bgcolor="#c1c1c1">
      <td colspan="3"><strong>Historik</strong></td>
    </tr>
    <tr>
      <td width="80"><strong>Dato</strong></td>
      <td><strong>Beskrivelse</strong></td>
      <td width="40"><strong>Status</strong></td>
    </tr>
<%Do%>
    <tr>
      <td width="80"><%=objRSx("dato")%></td>
      <td><%=objRSx("beskrivelse")%></td>
      <td width="40"><%=objRSx("status")%></td>
    </tr>
<%
    objRSx.MoveNext
    Loop While Not objRSx.EOF
%>
  </table>
Avatar billede anri Novice
23. februar 2007 - 07:39 #1
Lav et check der hedder
If objRSx.EOF > objRSx.BOF then begin
[lav dit loop]
else
[håndter fejl]
END IF
Avatar billede kalp Novice
23. februar 2007 - 08:04 #2
If Not (objRSx.BOF Or objRSx.EOF) Then
Do While Not objRSx.EOF
Response.write (objRSx("beskrivelse"))
rs.MoveNext
Loop
else
Response.write "TOMT RECORDSET"
end if
Avatar billede kalp Novice
23. februar 2007 - 08:05 #3
oops



If Not (objRSx.BOF Or objRSx.EOF) Then
Do While Not objRSx.EOF
Response.write (objRSx("beskrivelse"))
objRSx.MoveNext
Loop
else
Response.write "TOMT RECORDSET"
end if
Avatar billede softspot Forsker
23. februar 2007 - 08:37 #4
Hvis det bare er for at undgå iteration af et tomt recordset, er der ikke nogen grund til at lav en if-then omkring løkken, hvis bare du flytter stopbetingelsen op i starten af løkken i stedet for at lade den ligge i bunden. Så den løsning som gawi skriver til sidst bare uden if-sætningen omkring:

Do While Not objRSx.EOF
  Response.write (objRSx("beskrivelse"))
  objRSx.MoveNext
Loop

Det er så ganske korrekt at hvis du vil lave et speciel håndtering af at recordsettet er tomt, så skal du have if-sætningen med - og det er altså ikke nødvendigt at checke på BOF, når man benytter firehose recordset (Forward Only), som er den slags recordset der som standard returneres af en connection.execute.

If Not objRSx.EOF Then
  Do While Not objRSx.EOF
    Response.write objRSx("beskrivelse")
    objRSx.MoveNext
  Loop
Else
  Response.write "ingen poster i resultatet"
End If
Avatar billede eyes Nybegynder
23. februar 2007 - 08:54 #5
I forstå da at gøre en glad på en træls vinterdag :D

tak for svar, brugte din løsning softspot, da der gerne må vises et "tomt" recordsæt men uden fejl

/simon
Avatar billede softspot Forsker
23. februar 2007 - 09:00 #6
OK, men der var som sådan ikke noget nyt i det jeg skrev ifht. gawi, bare en uddybende bemærkning, så jeg synes gawi skal krediteres for sin løsning :)
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

Data Engineers til bekæmpelse af skatteunddragelse

Udviklings- og Forenklingsstyrelsen

Backend-udvikler til ny platform i Azure

Sentia Denmark A/S

Service Delivery Manager

Udviklings- og Forenklingsstyrelsen

Testmanager til Partsrepræsentation