RuntimeException bei result.Next nach SQL-executeQuery
Verfasst: Sa, 24.04.2010 19:01
In einem Makro frage ich zunächst in einem Dialog eine Variable ab, die für die WHERE-Bedingung bei einem SELECT genutzt wird. Zunächst klappte das mehrfach. Seit ich das Arbeitsverzeichnis neu gesetzt hatte, gibt es nur noch Fehler. Mein Arbeitsablauf:
Unproblematischer Teil, aber der Vollständigkeit halber abgedruckt:
"klasse" im Dialog abfragen und übernehmen, ebenfalls noch problemlos:
Jetzt wird der SQL-Befehl vorbereitet und ausgeführt, danach knallt es:
Die Sicherheitsabfrage IsNull wird mit false festgestellt. Bei result.Next kommt eine seltsame Fehlermeldung:
Ich habe viel versucht, auch den Parameter klasse (der als String deklariert ist, der einem Integer entspricht) in Hochkommata oder chr(34) eingebunden - keine Änderung.
Hilfe! Jürgen
Unproblematischer Teil, aber der Vollständigkeit halber abgedruckt:
Code: Alles auswählen
sub Fachlisten_erstellen
rem Variable
Dim klasse As String
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Path=createunoservice("com.sun.star.util.PathSettings")
Dim conn As Object
rem Datenbankzugriff
oDBContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
dbSource = oDBContext.GetByName("Klassenlisten")
path.work = DirectoryNameoutofPath(thisComponent.getUrl(), "/")
conn = dbSource.GetConnection("","")
Code: Alles auswählen
oDialog1 = LoadDialog("Standard", "Klasse_abfragen")
oDialog1.SetTitle("Vorlagen für Fachliste erstellen")
iResult = oDialog1.Execute()
rem Abbruch bei Cancel oder falschem Wert
klasse = oDialog1.GetControl("input").Text
i = CInt(klasse)
if (iResult = 0) or (i < 1) or (i > 13) then
exit sub
end if
oDialog1.Dispose()
Code: Alles auswählen
rem hole die Fächer der gewünschten Klasse per SQL
cmd = conn.CreateStatement()
cmdString = "SELECT Kuerzel, Titel, Fachname, Lehrer, Teilnahmevermerk " & chr(13) _
& "FROM Fachliste WHERE Klasse = " & klasse
' msgbox cmdstring nur zur Kontrolle, er sieht sauber aus
result = cmd.executeQuery(cmdString)
if IsNull(result) then
msgbox "Keine Datensätze gefunden"
else
while result.Next() ''' Hier knallt es !!!!!!
Fachliste_Erstellen( conn, _
klasse, result.getString(1), _
result.getString(2), result.getString(3), _
result.getString(4), result.getString(5) )
wend
end if
end sub
Was kann da passiert sein? Datensätze sind unverändert vorhanden, es sei denn, sie werden (warum auch immer) nicht mehr bereitgestellt. Welche Möglichkeiten habe ich, die Exception genauer zu untersuchen? Muss ich die Connection freigeben? Wenn ja, wann und wie? (Bisher habe ich sie offen gelassen, weil sie in der while-Schleife in jedem Durchgang für einen weiteren SELECT-Befehl benötigt wird.)Fehlermeldung hat geschrieben:BASIC-Laufzeitfehler.
com.sun.star.uno.RuntimeException
Message: .
Ich habe viel versucht, auch den Parameter klasse (der als String deklariert ist, der einem Integer entspricht) in Hochkommata oder chr(34) eingebunden - keine Änderung.
Hilfe! Jürgen