Seite 1 von 3
(gelöst) bestimmte Felder per Makro (Schalter) leeren
Verfasst: Mo, 30.04.2012 21:42
von schane65
Hallo !
Ich habe eine Adressdatenbank, in der zwei Suchfelder enthalten sind, die mit einer OK Taste gesteuert werden, wodurch ein gefundener Datensatz angezeigt wird. Nun möchte ich mit einem Schalter, evtl. gesteuert durch ein Makro, erreichen, dass diese Felder bei Knopfdruck auf leer gesetzt werden.
Gibt es eine einfache Lösung?
Gruß Andreas
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Mo, 30.04.2012 22:25
von F3K Total
Hallo,
das hängt von einigen Dingen ab.
1.) Welcher Typ von Kontrollelement ist das Suchfeld?
2.) Ist es an ein Tabellenfeld gebunden, wenn ja, welche Tabelle, welche Spalte?
3.) Wo befindet es sich (MainForm, Subform, oder ...)
Am besten die DB verfremdet hochladen, dann klappts auch mit 'nem Tipp.
Gruß R
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Mo, 30.04.2012 22:34
von schane65
Hi!
No Problem, hier ist die Datenbank. Es geht im Formular "Adressen_Neu" oben um die Felder "Nachname" und "Stichwort".
Gruß Andreas
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 11:23
von RobertG
Hallo Andreas,
das geht für 2 Felder mit einem Button nur über Makro. Ansonsten würde aber auch reichen, die beiden Felder direkt zu leeren und auf OK zu drücken.
Code: Alles auswählen
SUB Filter_entfernen
oDoc=thisComponent
oDrawpage=oDoc.drawpage
oForm=oDrawpage.forms.getByName("Filter")
oForm2=oDrawpage.forms.getByName("MainForm")
REM Datenbankverbindung erzeugen
oDatenquelle = ThisComponent.Parent.DataSource
oVerbindung = oDatenquelle.GetConnection("","")
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "UPDATE ""Filter"" SET ""Nachname"" = NULL, ""Stichwort"" = NULL"
oSQL_Anweisung.executeUpdate (stSql)
oForm.reload()
oForm2.reload()
End Sub
Die Filtertabelle muss bearbeitet werden. Aus ihr zieht das Hauptformular seinen Filterbefehl. Anschließend müssen beide Formulare neu eingelesen werden.
Ich habe das einmal erstellt und hier angehängt.
Gruß
Robert
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 12:43
von schane65
Hallo Robert !
Danke schön, so habe ich es mir vorgestellt.
Gruß Andreas
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 13:03
von schane65
Hallo Robert !
Ich muss doch noch mal stören, da ich den die Schaltfläche samt Makro in die ansonsten funktionierende odt-Datei eingefügt habe. Die Formularverknüpfung auf die Datenbank habe ich auch durchgeführt, bekomme aber bei Betätigung des Buttons eine Fehlermeldung.
Kannst du da noch mal helfen?
Fehlermeldung ist als Bild angehängt.
Gruß Andreas
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 13:50
von F3K Total
Hallo,
die Filterbuttons kenne ich doch, und den Code auch.
Aber zu deinem Probem:
Wenn Du die Datenquelle so suchst:
dann sucht das Makro den Vater des Formulares, in einer Base Datei ist dies das Datenbankdokument (.odb), da klappt der Befehl.
Bei einer .odt Datei geht das so nicht.
Ich empfehle:
ersetze die Zeilen
Code: Alles auswählen
oDatenquelle = ThisComponent.Parent.DataSource
oVerbindung = oDatenquelle.GetConnection("","")
durch z.B.
Code: Alles auswählen
oform = Thiscomponent.drawpage.forms(0)
oVerbindung = oform.activeConnection
Viel Erfolg
Gruß R
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 14:17
von schane65
Hallo R.
Leider funktioniert das nicht. Die beiden Felder "Nachname" und "Stichwort" werden nicht geleert. Es kommt allerdings keine Fehlermeldung mehr.
Gruß Andreas
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 16:44
von RobertG
Hallo Andreas,
ich versuche einmal kurz auf den jetzigen Fehler einzugehen:
Code des ursprünglichen Makros von mir:
Code: Alles auswählen
oForm=oDrawpage.forms.getByName("Filter")
oForm2=oDrawpage.forms.getByName("MainForm")
REM Datenbankverbindung erzeugen
oDatenquelle = ThisComponent.Parent.DataSource
oVerbindung = oDatenquelle.GetConnection("","")
oSQL_Anweisung = oVerbindung.createStatement()
und der Code vermutlich jetzt:
Code: Alles auswählen
oForm=oDrawpage.forms.getByName("Filter")
oForm2=oDrawpage.forms.getByName("MainForm")
REM Datenbankverbindung erzeugen
oform = Thiscomponent.drawpage.forms(0)
oVerbindung = oform.activeConnection
oSQL_Anweisung = oVerbindung.createStatement()
Da Base auf Groß- und Kleinschreibung meines Wissens nicht reagiert benutzt Du die gleiche Variable einmal für das Formular "Filter" und dann Für das Formular, das an der ersten Stelle in der Drawpage steht. Da das Formular "Filter" aber später gegründet wurde steht es eigentlich an der 2. Stelle. Dadurch wird zum Schluss mit oForm.reload() und oForm2.reload() das gleiche Formular doppelt neu geladen.
Das kannst Du umgehen, indem Du statt "MainForm" für das 2. Formular "Filter" einträgst und die erste Definition von oForm heraus nimmst.
Gruß
Robert
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 19:21
von schane65
Hallo R.
Genauso hat es funktioniert. Ich habe zwar noch einen kleinen Fehler begangen, in dem ich den reload des oForm() auch herausgenommen habe, aber ist jetzt wieder drin und funktioniert.
Danke schön
Gruß Andreas
Re: (gelöst) bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 19:57
von F3K Total
Hallo zusammen,
für den geneigten "Filterer" gibt es hier
http://user.services.openoffice.org/en/ ... 32#p214525 ein Beispiel, wo durch Eingabe
mehrerer kommaseparierter
Suchbegriffe in ein einziges Textfeld, durch
alle Spalten der entsprechenden Tabelle gesucht wird.
Also "Bothe" wird genauso gefunden wie "Zoll" oder "Abschlepper" oder der "Wohnort" oder, oder ...
Gruß R
Re: (gelöst) bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 20:51
von RobertG
Kleine Ergänzung:
während die obige Lösung auf Makros baut kommt die Lösung mit einem Suchfeld und nur einer einfachen Texteingabe ohne Makros aus. Der Text wird einfach in eine Tabelle geschrieben und die Abfrage für die andere Tabelle aktualisiert. Eine Abfrage, die ohne weiteres über alle Felder der gewünschten Tabelle gehen kann.
Zum Schluss waren nur Makros notwendig, weil es erwünscht war, dass mehrere Felder gleichzeitig auf NULL gesetzt werden sollten.
Gruß
Robert
Re: (gelöst) bestimmte Felder per Makro (Schalter) leeren
Verfasst: Di, 01.05.2012 21:13
von F3K Total
Hallo Robert,
was ist an Makros denn verwerflich?
Ein gepflegtes
ist mir persönlich z.B. lieber, als ständiges Update-Knöpfe drücken.
Gruß R
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Do, 03.05.2012 21:54
von schane65
Hallo !
Ich glaube, ich habe Mist gebaut. Ich habe in der Tabelle "Adressen" weitere Felder eingebaut und diese dann auch im Formular übertragen. Desweiteren habe ich Telefonummer in Telefon und Handynummer in Handy umbenannt. Telefon 2, Handy 2 und Fax sind hinzugekommen. Nun kann ich kann ich diese Daten zwar zu einer Person hinzufügen, bekomme sie dann aber bei jeder Person im Formular angezeigt. Entscheidend ist das Formular Adressen_Neu.
Was habe ich denn nun wieder falsch gemacht?
R. oder Robert, kann einer von euch helfen?
Gruß Andreas
Re: bestimmte Felder per Makro (Schalter) leeren
Verfasst: Do, 03.05.2012 22:05
von RobertG
Hallo Andreas,
es fehlen die Zuweisungen der Datenfelder zu den entsprechenden Tabellenfeldern. Ich gehe auf das Textfeld 'txtTelefonnummer' und lasse mir den Reiter 'Daten' anzeigen. Da steht dann: Datenfeld - 'Telefonnummer'. Betätige ich dann das Listfeld, so gibt es 'Telefonnummer' gar nicht, sondern z.B. 'Telefon', 'Handy' ...
Wenn Du die Felder korrekt verbindest wird's wohl klappen.
Gruß
Robert