mit der Hilfe des Forums konnte ich ein kleines Filter-Makro schreiben, womit ich ein einem Base-Formular gezielte Datensätze aufrufen kann (funktioniert prächtig;-). Habe ich allerdings den Datensatz geändert und rufe jetzt das Mako auf, werden die geänderten Daten noch nicht gespeichert.
Also habe ich gesucht und so die Methode updateRow() gefunden.
Auch das funktioniert, allerdings nicht wenn ich aus einem leeren Datensatz das Makro mit der Speichermethode aufrufe - da kommt dann eine Fehlermeldung, da ja updateRow wohl nicht aus einem leeren Datensatz aufgerufen werden kann.
Jetzt wollte ich das Ganze mit einer if Verzweigung regeln, dass nur dann updateRow() aufgerufen wird, wenn ich Daten verändert habe (rowUpdated ist doch für diese Überprüfung richtig - oder?)
Und so sieht dass jetzt aus:
Code: Alles auswählen
sub Filter_setzen
Dim oFeld as variant
Dim oDoc as variant
Dim oForm as variant
oDoc = ThisComponent
oForm = oDoc.DrawPage.Forms.getByIndex(0)
oFeld = oForm.getByName("WertTextBox") 'das Feld des Formulars wird ausgelesen
sSuchwort = oFeld.text
oForm.filter = "`Nr` = "+ cInt(sSuchwort) 'Filter setzen
oForm.ApplyFilter=true 'setzen des Filters für das neue Formulardokument
if oForm.rowUpdated=true then 'Überprüfung ob Datensatz modifiziert wurde - wenn ja, dann:
oForm.upDateRow 'geänderten Datensatz speichern
end if
oForm.reload()
end sub