[gelöst] Einträge vor Speichern in anderen Datenbank suchen
Verfasst: Mo, 24.06.2013 18:12
Hallo liebe Netzgemeinde, ich brauche schon wieder Hilfe.
Ich habe mit OOBase ein Formular erstellt, bei dem an einer Stelle eingetragene Daten mit dem bisherigen Datenbestand verglichen werden. Das Makro dazu hat mir F3K Total freundlicherweise geschrieben. Dummerweise haben sich bei der Bereitstellung des Tools in unserem Netzwerk Probleme ergeben, weshalb ich das Formular gerne verändern würde.
Statt die Einträge mit der Tabelle zu vergleichen, in die sie eingetragen werden möchte ich sie mit Tabelle A vergleichen und, sollten sie "neu" sein, in eine Tabelle B eintragen.
Wenn ich den Code richtig interpretiere (was offensichtlich nicht der Fall ist), müsste ich einfach in den Formulareigenschaften bei Daten -> Inhalt die neue Tabelle auswählen, mit der das Formular verknüpft werden soll. Schließlich greift die Funktion, die die Suche durchführt, auf die Variable sSQL zu, in der "Bestand_Videos" als Quelle definiert ist.
Wenn ich die eben genannten Schritte durchführe erhalte ich aber folgende Fehlermeldung beim Ausführen des Makro:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Der Cursor zeigt vor die erste bzw. hinter die letzte Zeile..
(Ich häng nen Screenshot an) Das sieht man hier nicht aber wenn der Fehler auftritt ist srid = oresult.getstring(3) makiert.
Anscheinend sucht das Makro die Daten in der Tabelle "neue_Videos" anstatt in "Bestand_Videos"
Wo ist mein Denkfehler?
Das Makro sieht überigens so aus:
Ich habe mit OOBase ein Formular erstellt, bei dem an einer Stelle eingetragene Daten mit dem bisherigen Datenbestand verglichen werden. Das Makro dazu hat mir F3K Total freundlicherweise geschrieben. Dummerweise haben sich bei der Bereitstellung des Tools in unserem Netzwerk Probleme ergeben, weshalb ich das Formular gerne verändern würde.
Statt die Einträge mit der Tabelle zu vergleichen, in die sie eingetragen werden möchte ich sie mit Tabelle A vergleichen und, sollten sie "neu" sein, in eine Tabelle B eintragen.
Wenn ich den Code richtig interpretiere (was offensichtlich nicht der Fall ist), müsste ich einfach in den Formulareigenschaften bei Daten -> Inhalt die neue Tabelle auswählen, mit der das Formular verknüpft werden soll. Schließlich greift die Funktion, die die Suche durchführt, auf die Variable sSQL zu, in der "Bestand_Videos" als Quelle definiert ist.
Wenn ich die eben genannten Schritte durchführe erhalte ich aber folgende Fehlermeldung beim Ausführen des Makro:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Der Cursor zeigt vor die erste bzw. hinter die letzte Zeile..
(Ich häng nen Screenshot an) Das sieht man hier nicht aber wenn der Fehler auftritt ist srid = oresult.getstring(3) makiert.
Anscheinend sucht das Makro die Daten in der Tabelle "neue_Videos" anstatt in "Bestand_Videos"
Wo ist mein Denkfehler?
Das Makro sieht überigens so aus:
Code: Alles auswählen
Sub S_CheckID
oform = thiscomponent.drawpage.Forms.MainForm
oconnection = oform.activeconnection
SQL_Statement = oconnection.createstatement
sSQL = "SELECT ""ID"", ""weitere IDs"" FROM ""Bestand_Videos"""
SQL_Result = SQL_Statement.executequery(sSQL)
otxtID = oform.txtID
sID = otxtID.text
sIDSafe = sID
while SQL_Result.next
if SQL_Result.getstring(1) = sID then' or instr(SQL_Result.getstring(2),sID) > 0 then
sID = SQL_Result.getstring(1)
msgbox "ID schon vorhanden. OK zum suchen des Datensatzes"
DialogLibraries.LoadLibrary("Standard")
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.msgBox_Bitte_warten )
oDialog1.setVisible(true)
oform.ignoreresult = false
oform.reload
goto 100
else
if SQL_Result.getstring(2) > "" then
sIDs = Split(SQL_Result.getstring(2),",")
for i = 0 to ubound (sIDs)
sIDe = TRIM(sIDs(i))
if sIDe = sID then
msgbox "ID schon vorhanden. OK zum suchen des Datensatzes"
DialogLibraries.LoadLibrary("Standard")
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.msgBox_Bitte_warten )
oDialog1.setVisible(true
sID = SQL_Result.getstring (1)
oform.ignoreresult = false
oform.reload
goto 100
endif
next i
endif
endif
wend
exit sub
100:
oform.first
oresult = oform.createresultset
nrow = 1
do
srid = oresult.getstring(3)
if srid = sID then exit do
nrow = nrow + 1
loop while oresult.next
oform.absolute(nrow)
oform.ignoreresult = true
oDialog1.setVisible(false)
msgbox "Datensatz mit ID " +sIDSafe
End Sub