Peter U.: leeren Datensatz abfangen

Hallo Leute.

Ich habe unten eine (stark gekürzte) ASP Seite stehen, die zwei Datenbanken abfragt und die Ergebnisse als Tabelle ausgibt (bzw. ausgeben soll). Mein Problem ist jetzt, dass ich nicht weiss ob die Auftragsnummer in Datenbank 1 oder in db2 steht. Also muss ich beide Datenbanken abfragen. Wenn jetzt aber in der ersten Datenbank nichts gefunden wird, kommt folgende Fehlermeldung:

ADODB.Recordset-Fehler '800a0bcd'
Entweder BOF oder EOF ist True, oder der aktuelle Datensatz wurde gelöscht; die von der Anwendung angeforderte Operation benötigt einen aktuellen Datensatz.

und das Script wird beendet.

Wie kann ich das abfangen? Ich hab' schon versucht IF rs.BOF <> rs.EOF vor die Ausgabe (also vor die DO...WHILE Schleife) zu schreiben, aber das war natürlich nix.

Ich hoffe ihr könnt mir helfen.

Ciao, Peter.

-----------------------------------------------------------------------------------

<html><body>
<table>
<%  
abfrage "structura NOVA", "PPS5C", "64-KP53169A"
abfrage "Berlin", "PPSas61", "64-KP53169A"
%>
</table>
</body></html>

<%
sub abfrage(odbc, db, auftnr)
     sql = "SELECT * FROM " & db & ".AUFTRAG AUFTRAG WHERE AUFTRAG.AUFTRNR='" & auftrnr & "'
     set conn = server.CreateObject("ADODB.Connection")
     conn.open odbc
     set rs = conn.execute(sql)
     rs.MoveFirst
     DO WHILE NOT rs.EOF
        response.write"<tr>"

response.write "<td>"
        response.write rs.Fields("ARTIKEL.ARTTEILNR")
        response.write "</td>"

response.write "</tr>"
        rs.MoveNext
     LOOP
     rs.close
     set rs=nothing
     conn.close
     set conn=nothing
end sub
%>
-----------------------------------------------------------------------------------

  1. Tach auch.

    Schreib einfach "IF NOT rs.EOF THEN rs.MoveFirst"
    statt "rs.MoveFirst"
    und es sollte funzen!

    Stuessy

  2. Hallo

    Wie kann ich das abfangen? Ich hab' schon versucht IF rs.BOF <> rs.EOF vor die Ausgabe (also vor die DO...WHILE Schleife) zu schreiben, aber das war natürlich nix.

    rs.BOF<> rs.EOF - häh? sind die nicht sowieso immer unterschiedlich ?

    Aber probier einfach mal vor der ganzen do while geschichte:

    If NOT(rs.BOF or rs.EOF) Then

    sollte eigentlich tun.

    Achtung: das if muss auch vor dem rs.MoveFirst stehen, da du sonst im falle von BOF den gleichen fehler bekommst.

    have fun, Eeye