(gelöst) bestimmte Felder per Makro (Schalter) leeren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

(gelöst) bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
Zuletzt geändert von schane65 am Mi, 08.08.2012 13:08, insgesamt 11-mal geändert.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag von schane65 »

Hi!

No Problem, hier ist die Datenbank. Es geht im Formular "Adressen_Neu" oben um die Felder "Nachname" und "Stichwort".


Gruß Andreas
Dateianhänge
AdressenNeu.odb
(38.97 KiB) 192-mal heruntergeladen
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
Dateianhänge
AdressenNeu(2).odb
(38.09 KiB) 184-mal heruntergeladen
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag von schane65 »

Hallo Robert !

Danke schön, so habe ich es mir vorgestellt.



Gruß Andreas
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
Dateianhänge
Fehler.png
Fehler.png (106.53 KiB) 5344 mal betrachtet
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag von F3K Total »

Hallo,
die Filterbuttons kenne ich doch, und den Code auch. :D
Aber zu deinem Probem:

Wenn Du die Datenquelle so suchst:

Code: Alles auswählen

oDatenquelle = ThisComponent.Parent.DataSource
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
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: (gelöst) bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: (gelöst) bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: (gelöst) bestimmte Felder per Makro (Schalter) leeren

Beitrag von F3K Total »

Hallo Robert,
was ist an Makros denn verwerflich?
Ein gepflegtes

Code: Alles auswählen

oForm.reload
ist mir persönlich z.B. lieber, als ständiges Update-Knöpfe drücken.

Gruß R
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
Dateianhänge
AdressenNeu.odb
(40.13 KiB) 167-mal heruntergeladen
RobertG
********
Beiträge: 2069
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: bestimmte Felder per Makro (Schalter) leeren

Beitrag 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
Antworten