zur Vermeidung von Datenverlust würde ich gerne den Zustand des "Datensatz-speichern"-Knopfes in Base abfragen.
In meinem Formular gibt es ein Textfeld als Suchfeld für andere Datensätze als den gerade angezeigten. Von dort wird per Makro ("oForm.Filter" ...) der Formularfilter gesetzt für eine Datensatzsuche.
Problem: Sobald der Filter neu eingestellt wird, sind Änderungen im gerade gezeigten Datensatz weg.
Im Moment fragt das Filtermakro, das bei Fokusverlust des Suchfelds ausgelöst wird, vor dem Filtern mit einer Messagebox immer: Sind alle Änderungen hier gespeichert?
Also kurz gesagt, im Moment sieht es so aus:
Code: Alles auswählen
Sub Formularfilter_Adressblatt(oEvent AS OBJECT)
DIM intFrage As Integer
intFrage = MsgBox("Sind alle Änderungen in der aktuellen Adresse gespeichert?", MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2, "Makro Formularfilter_Adressblatt")
'MB_DEFBUTTON2 macht das Nein zur vorgegebenen Antwort, sicherheitshalber.
If intFrage = IDNO Then
Goto Ausstieg 'hier in neuer Zeile, macht Endif erforderlich.
Endif
oForm = thisComponent.Drawpage.Forms.getByName("MainForm")
oFeld = thisComponent.Drawpage.Forms.getByName("MainForm").getByName("txtSuchfeld")
stSuchtext = LCASE(oFeld.text) 'ermöglicht Großbuchstaben in Suchfeld
oForm.Filter = "LCASE(Nachname) LIKE '%"+stSuchtext+"%' OR LCASE(Firma) LIKE '%"+stSuchtext+"%' OR LCASE(Abteilung) LIKE '%"+stSuchtext+"%'"
oForm.reload
Ausstieg:
End Sub
Geht das?
Gruß
Freischreiber