Ich hänge schon eine Zeitlang an folgendem Problem mit einem LibreOffice Basic Makro:
In einem Formular mit lauter ungebundenen Textfeldern habe ich 4 davon zur variablen Suche in der Datenbank (einzeln und kombiniert in verschiedenen Datenbankfeldern) und eines zur Anzeige der gefundenen Datensätze. Mit einer Schaltfläche möchte ich alle Inhalte der Textfelder zugleich löschen. Das funktioniert aber nur mit dem Anzeigefeld, in das über eine andere Prozedur geschrieben habe. Das wird durch den Leerstring wie geplant ersetzt. Wenn der Textfeld aber manuell ausgefüllt wird (in diesem Fall die Suchbegriffe in den Feldern Such1 bis Such4), bleibt der Inhalt erhalten. Der im Code angegebene String (in diesemFall "") wird einfach vor den bestehenden Inhalt gesetzt. Falls ich also ein paar Leerzeichen setze (z.B. Such1 = " "), werden diese an den Beginn des Textfelds geschrieben und der vorhandene Text bleibt. Das passiert offensichtlich generell mit solchen Textfeldern. Wenn ich beispielsweise in das mehrzeilige Feld txtAnzeige etwas hineinschreibe und dann erst über das Makro den gesuchten Datensatz, bleibt auch dieser Text am Ende erhalten. Hier der Code:
Code: Alles auswählen
Sub Loeschen
' Inhalt der Anzeige aller Suchfelder löschen
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("frmProbe")
Dim oSuch1 As Object, oSuch2 As Object, oSuch3 As Object, oSuch4 As Object
oSuch1 = oForm.getByName("txtNr")
oSuch2 = oForm.getByName("txtWerk")
oSuch3 = oForm.getByName("txtKomp")
oSuch4 = oForm.getByName("txtAlle")
oTextfeld = oForm.getByName("txtInhalt")
oSuch1.String = ""
oSuch2.String = ""
oSuch3.String = ""
oSuch4.String = ""
oTextfeld.String = ""
ReDim DatenArray(0,0)
End Sub