Resultset.getInt() => Ungültiger Cursorstatus

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Resultset.getInt() => Ungültiger Cursorstatus

Re: Resultset.getInt() => Ungültiger Cursorstatus

von StyloMilo » Fr, 08.06.2007 17:01

Super! Läuft wie eine Eins. Vielen Dank, Thomas.

Re: Resultset.getInt() => Ungültiger Cursorstatus

von Toxitom » Fr, 08.06.2007 08:15

Hey StyloMilo,

Die Fehlermeldung resultiert daher, dass du noch gar keine Zeile ausgewählt hast, der Zeilenzähler also noch bei -1 steht. Und der ist ungültig!
Stell dir dein Resultset als Tabelle vor, es gibt dann einen Zeilenzeiger (das ist jetzt der benannte Cursor), der auf einen Zeilensatz deutet. In der Regel kannst du den Zeilenzeiger nur vorwärts bewegen. Hast du das Resultset erzeugt, dann steht dieser Zeiger vor dem ersten Datensatz. Du willst aber mit "oResultset.getInt(..)" den ersten Datensatz auswerten, also fehlt der Befehl, den Zeilenzeiger um eins vorzusetzen. Das erreichst du zum Beispiel mit:
"oResultset.Next" Dein Code müsste also lauten:

Code: Alles auswählen

sSQL = "SELECT MAX(PersNr) AS PNr FROM mitarbeiter"
oResultset = oStatement.executeQuery(sSQL)
if not isNull(oResultset) then
   sIndex = oResultset.findcolumn("PNr")
   oResultset.next
   sPersNr = oResultset.getInt(sIndex)
   sPersNr = sPersNr+1
end if
Das geht, solange du sicherstellen kannst, dass immer nur ein Datensatz vorhanden ist bezw. das du nur den ersten Datensatz auswerten willst.

Gruss
Thomas

Resultset.getInt() => Ungültiger Cursorstatus

von StyloMilo » Fr, 08.06.2007 00:48

Hallo zusammen,

ich bin grad dabei erste Schritte in Base und OOo Basic zu unternehmen. Klappt soweit auch ganz gut, allerdings stoße ich auf folgenden Fehler. Ich möchte den Eintrag mit dem höchsten Wert im Feld 'PersNr' (Integer) auslesen, um dem nächsten Eintrag eben die nächsthöhere Nummer zu geben. Alles was kommt ist allerdings die folgende Fehlermeldung:

Type: com.sun.star.sdbc.SQLException
Message: [Microsoft][ODBC Driver Manager] Ungültiger Cursorstatus.

Der Code, der den Fehler verursacht ist folgender, genauer gesagt ist der Übeltäter die Zeile mit '.getInt(sIndex)':

Code: Alles auswählen

sSQL = "SELECT MAX(PersNr) AS PNr FROM mitarbeiter"
oResultset = oStatement.executeQuery(sSQL)
if not isNull(oResultset) then
   sIndex = oResultset.findcolumn("PNr")
	sPersNr = oResultset.getInt(sIndex)
	sPersNr = sPersNr+1
end if
Wenn ich mir die Spaltenanzahl und Index ausgeben lasse, dann ist das beides '1', darum versteh ich die Meldung nicht ganz. Konnte leider weder über Google noch die Forumssuche was finden, darum hoffe ich, dass Ihr mir helfen könnt. Vielen Dank schon mal im Voraus.

Gruß
StyloMilo

Nach oben