Auswertung des Ergebnisses einer SQL Abfrage

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Jensemann
***
Beiträge: 59
Registriert: Mo, 08.10.2007 12:51

Auswertung des Ergebnisses einer SQL Abfrage

Beitrag von Jensemann »

Hallo,

ich habe hier gerade folgendes Problem und bekomme nur die Fehlermeldung:
Fehler_Ungültiger Cursorstatus.png
Fehler_Ungültiger Cursorstatus.png (4.17 KiB) 916 mal betrachtet
Aber von Anfang an.
Ich habe eine MySQL Datenbank mit dem MySQL ODBC Connector an OpenOffice.org 2.4.0 angebunden.
In einem Base Formular wähle ich nun einen Eintrag aus der Datenbank aus, dieser Eintrag ist Bestandteil einer SQL Abfrage die über den folgenden Code erstellt wird:

Code: Alles auswählen

SUB SQL_Name
SQL_Anweisung = Verbindung.createStatement()
SQL="SELECT `status`, `name`, `vorname`, `strasse`, `nr`, `plz`, `ort`, `bezirk` FROM `tn` WHERE `name` = '" & FormName & "'"
SQLName = SQL_Anweisung.executeQuery(SQL)
END SUB
Das Ergebnis der Abfrage sollte nun im ResultSet SQLName vorliegen.
Den Index der Spalten kann ich ermitteln, so ergibt beispielsweise:

Code: Alles auswählen

SQLIndex=SQLName.findcolumn("name")
das Ergebnis 2. Ist ja auch korrekt.
Will ich aber nun über

Code: Alles auswählen

SQLName.getString(SQLIndex) 
auf den Inhalt zugreifen, kommt obige Fehlermeldung.

Hat jemand eine Idee, wo hier gerade mein Gedankenfehler liegt?

Kann es sein, dass in SQLName lediglich die Spalten vorhanden sind und keine Daten?
Wenn ja, wie kann ich mir den Inhalt des RecordSet ansehen?

Grüße

Jens
openSuSE 11.2 LibreOffice 3.6.1
Windows XP SP3 (in VirtualBox unter openSUSE 11.2) mit LibreOffice 3.5.4 sowie Apache OpenOffice 3.4.0
Jensemann
***
Beiträge: 59
Registriert: Mo, 08.10.2007 12:51

Re: Auswertung des Ergebnisses einer SQL Abfrage

Beitrag von Jensemann »

Ich habe das Problem gelöst.

Bei der direkten Zuweisung des Inhaltes über

Code: Alles auswählen

thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschStatus").text=SQLName.getString(1)
kam immer die bekannte Fehlermeldung. Kopiere ich den ResultSet aber zuerst in einen Array

Code: Alles auswählen

If Not IsNull(SQLName) Then
   While SQLName.next
   	for i=1 to 8
   		SQLText(i)=SQLName.getString(i)
    next i
   Wend
End If
und weise dann den Inhalt des Arrays zu

Code: Alles auswählen

thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschStatus").text=SQLText(1)
thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschName").text=SQLText(2)
thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschVorname").text=SQLText(3)
thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschStrasse").text=SQLText(4)
thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschNr").text=SQLText(5)
thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschPLZ").text=SQLText(6)
thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschOrt").text=SQLText(7)
thisComponent.drawpage.forms.getByName("Standard").getByName("txtVorschBezirk").text=SQLText(8)
klappt es...

Ich habe nicht wirklich verstanden warum das so ist, aber gut, es ist eine Lösung.

Evtl. hilft das ja hier jemandem.

Grüße

Jensemann
openSuSE 11.2 LibreOffice 3.6.1
Windows XP SP3 (in VirtualBox unter openSUSE 11.2) mit LibreOffice 3.5.4 sowie Apache OpenOffice 3.4.0
Antworten