Seite 1 von 1

[Gelöst] Formular mit Filter öffnen

Verfasst: Mo 9. Jun 2014, 18:57
von teuff
Hallo!
Ich möchte ein Formular per Schaltfläche mit einem Filter öffnen. Laut LibreOffice Base Handbuch sollte ein Formular u.a. folgende Eigenschaften haben:
Name Datentyp L/S Eigenschaft
ApplyFilter boolean L+S Filter aktiviert.
Filter string L+S Aktueller Filter für die Datensätze.

Wenn ich den Filter setzen will, bekomme ich aber folgende Fehlermeldung:
Error Nr. 423: Eigenschaft oder Methode nicht gefunden: ApplyFilter.
Dasselbe passiert dann auch entsprechend mit .Filter = "('ID' = 25)"

Hier der Code:

Code: Alles auswählen

Sub Aendern
	' Datensatz Ändern: Hauptformular aufrufen mit Filter
	' hier im Beispiel Satz mit ID 25
	oDoc = thisComponent
	oDrawpage = oDoc.drawpage
	oKarteikarte = ThisDatabaseDocument.FormDocuments.GetByName("Karteikarten")
	With oKarteikarte
		.ApplyFilter
		.Filter = "('ID' = 25)"
		.open
	End With
End Sub
Öffnen allein funktioniert, dann aber natürlich mit dem ersten Satz ohne Filter. Wie kann ich das Forumlar nur mit dem bestimmten Datensatz zu öffnen?

Christian

Re: Formular mit Filter öffnen

Verfasst: Mo 9. Jun 2014, 21:07
von F3K Total
Hi,
versuch mal

Code: Alles auswählen

.Filter = "(ID = 25)"
oder

Code: Alles auswählen

.Filter = "(""ID"" = 25)"
HTH R

Re: Formular mit Filter öffnen

Verfasst: Mo 9. Jun 2014, 23:20
von teuff
Danke, aber es geht nicht um die Syntax. Die Eigenschaften ApplyFilter und Filter werden überhaupt nicht akzeptiert, scheinen also nicht zu existieren.

Re: Formular mit Filter öffnen

Verfasst: Mo 9. Jun 2014, 23:32
von F3K Total
Na dann mal so:

Code: Alles auswählen

Sub Aendern
   oKarteikarte = ThisDatabaseDocument.FormDocuments.GetByName("Adressenverwaltung")
   oKarteikarte.open
   oForm = oKarteikarte.Component.drawpage.forms(0)
   oForm.Filter = "(ID = 25)"
End Sub
HTH R

Re: Formular mit Filter öffnen

Verfasst: Di 10. Jun 2014, 07:30
von teuff
Danke, das funktioniert so.

Aber was passiert hier eigentlich im Hintergrund? Ich dachte, mein Objekt oKarteikarte wäre schon ein Formular, dem ich die Eigenschaft Filter zuweisen kann. Offenbar muss ich aber ein neues Objekt definieren, damit ich in dem dann den Filter setzen kann. Sind es 2 verschiedene Instanzen desselben Formulars oder hat das Formular noch zusätzliche Komponenten, die ich so noch nicht gekannt habe? Das Problem markiere ich jedenfalls einmal als gelöst. Eine ähnliche Lösung fand ich schon im Forum, aber ich hatte im für mich angepassten Code die Kurve nicht gekratzt.

Für nachfolgende Anfänger bzw. Umsteiger (in meinem Fall von Access) hier noch einmal der Code:

Code: Alles auswählen

Sub Aendern
	On Error GoTo Aendern_err
	'  Datensatz Ändern: Hauptformular aufrufen,
	'  Filter für Datensatz: Feld (Satzzaehler,1) des Datenarrays (ID des Datensatzes)
	'  Die folgenden Variablen sind schon als Private Variablen definiert, 
	'  oForm1 wird lokal neu definiert
	oDoc = thisComponent
	oDrawpage = oDoc.drawpage
	oKarteikarte = ThisDatabaseDocument.FormDocuments.GetByName("Karteikarten")
	Dim oForm1 as Object
	' Wichtig: zuerst das Formular öffnen, dann kann erst oForm1 zugewiesen werden
	oKarteikarte.open
	oForm1 = oKarteikarte.Component.drawpage.forms(0)
	oForm1.Filter = "(ID = " +  DatenArray(Satzzaehler,1) + ")"	
	exit sub
 Aendern_err:
	MsgBox "Error Nr. " & Err & ": " & Error$ & " (line : " & Erl & ")" 	
End Sub

Re: [Gelöst] Formular mit Filter öffnen

Verfasst: Di 10. Jun 2014, 21:21
von F3K Total
teuff hat geschrieben:Ich dachte, mein Objekt oKarteikarte wäre schon ein Formular, dem ich die Eigenschaft Filter zuweisen kann.
Falsch, es ist das Formulardokument.
teuff hat geschrieben:oder hat das Formular noch zusätzliche Komponenten, die ich so noch nicht gekannt habe?
Genau so ist es.
Das Formulardokument entspricht einem Writer-Dokument. Dieses Dokument hat eine .Drawpage, auf der sich der Container für die strukturellen Formulare .Forms befindet. Das erste (Hauptformular) hat den Index 0, entspricht also .forms(0).
Ich empfehle Dir die Verwendung eines Introspection-Tools wie MRI oder Xray
Damit kannst Du alle OOo-Dokumente hinsichtlich ihres Aufbaues durchleuchten.

HTH R

Re: [Gelöst] Formular mit Filter öffnen

Verfasst: Di 10. Jun 2014, 22:17
von teuff
Danke, das erklärt einen Aufbau, den ich wohl noch öfter brauchen werden.
Ich hab mir MRI geladen und mit dem Extension Manager hinzugefügt. Erster Eindruck: Aha. Da habe ich noch viel zu lernen. Von durchleuchten zu erleuchten ist ein langer Weg. Zumindest die ersten Schritte habe ich jetzt schon.