MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisieren

Beitrag von weedix04 »

Hallo Leute

da die suche mir bisher irgendwie nicht geholfen hat versuch ich es mal hier.

Ich habe Folgende Tabellen : "Adressdaten" (ID, Nummer, Name, PLZ, Ort) und "Kundenrückläufer"(Kunde, PLZ, Ort.....)

Ich habe mir ein Formular erstellt mit folgenden Kombinationsfeldern: Kunde, PLZ, Ort ........... (Der Rest ist unwichtig...)

Im Kombinationsfeld Kunde listet er mir alle Daten "Name", im Kombinationsfeld PLZ alle "PLZ" und aus Kombifeld "Ort" alle "Ort" aus der Tabelle "Adressdaten" richtig auf.

In der Tabelle Adressdaten kommt es aber gelegentlich vor, dass ein Name (z.B. Firma Bosch) verschiedene PLZ's und Orte hat da diese Firma ja mehrere Standorte besitzt.

Nun will ich es hinbekommen, dass wenn ich im Kombinationsfeld "Kunde" z.B die "Firma Bosch" auswähle er mit im Kombinationsfeld "PLZ" nur noch die Postleitszahlen zur Auswahl stellt, die die "Firma Bosch" in der Tabelle Adressdaten besitzt.(z.B nur noch 12345 und 67890, denn nur dort haben sie einen Standort) Und ich bekomme es einfach nicht hin, bei dem Art des Listeninhalts des Kombinationsfeld "PLZ" eine SQL abfrage zu gestalten die mir diese Funktion bietet.

Hoffe mir kann wer helfen =)

MfG
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von RobertG »

Hallo weedix04,

Du meinst tatsächlich Kombinationsfelder, nicht Listenfelder?
Wird trotzdem ähnlich funktionieren.
Schau Dir einmal aus den Beispieldatenbanken unter http://robert.familiegrosskopf.de/lo_hb_dev/ "Beispiel_Suchen_und_Filtern_mit_Makros.odb" sowie die Beschreibung "Base_Beispiel_V44" an. Das, was Du brauchst, ist eine hierarchische Filterung. Das eine Listenfeld beeinflusst die Filterung des nächsten. Müsste auch bei Kombinationsfeldern gelingen, geht aber nur mit Makros, da das Kombinationsfeld neu eingelesen werden muss.

Gruß

Robert
Zuletzt geändert von RobertG am Di, 28.10.2014 19:15, insgesamt 1-mal geändert.
weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von weedix04 »

Danke für die Antwort ich werde es mir morgen einmal anschauen. Und ja ich meine Kombinationsfelder, denn ich möchte es gern darin haben, damit man nicht immer die Liste aufklappen muss sondern etwas tippen kann, und dies dann auch automatisch vervollständigt wird bei bedarf dann.

MfG
weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von weedix04 »

Nachdem ich mir die Beispiele angeschaut habe, bin ich leider kein Stück weiter gekommen.

Das Grundprinzip verstehe ich ja. Nur sind in diesem Beispiel etliche Abfragen und Tabellen auf die es dran ankommt. Und da ist der Punkt wo ich einfach nicht mehr durchblicke. Sprich: Ich weiß wirklich nicht welche Abfragen bzw die Makros aus dem Beispiel wie verändert werden müssten, damit das Ergebnis rauskommen soll, dass ich haben will.

MfG
Zuletzt geändert von weedix04 am Mi, 29.10.2014 17:20, insgesamt 2-mal geändert.
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von RobertG »

Hallo weedix04,

nimm mal schnell das Passwort wieder aus dem Thread raus. Da es sich um eine MySQL-Datenbank handelt sind die Daten sowieso nicht dabei. Die müsstest Du mit einem mysqldump erst einmal vom Server holen.

Vom Prinzip her brauchst Du Abfragen für die Kombinationsfelder, deren Inhalt durch Einträge in einer externen Tabelle, in den Beispielen die Tabelle "Filter", beeinflusst werden kann. Beim Ändern des Inhaltes in einem Kombinationsfeld muss der Wert in diese Tabelle geschrieben werden. Die anderen Listenfelder müssen durch einen Refresh aktualisiert werden.

Gruß

Robert
weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von weedix04 »

Hallo Robert!

Die erste Frage: Also kann ich die Makros aus dem Beispiel von dir 1:1 übernehmen?

Und 2: Die Daten die ich ein ein solches Feld eintrage, werden doch erst in einer Tabelle gespeichert, wenn ich den kompletten Datensatz zuende eintrage oder nicht? Wenn nicht wie stelle ich es ein, dass der Wert sofort in eine solche Tabelle "Filter" geschrieben wird, wenn man einfach nur etwas in dieses Kombinationsfeld einträgt und dann andere im selben Formular bearbeitet?

MfG
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von RobertG »

Hallo weedix04,

nein, die Makros kannst Du nicht 1:1 übertragen. Bei den Beispielen geht es um Datenfilterung und die Beeinflussung von Listenfeldern. Da liegt dann eine Tabelle "Filter" dem Formular zugrunde. Jetzt musst Du per SQL direkt die Tabelle "Filter" beschreiben, da ja andere Werte gespeichert werden. Oder Du musst den SQL-Code, mit dem das Kombinationsfeld beeinflusst wird, neu in die entsprechenden Kombinationsfelder einfügen.

Ich werde nachher einmal sehen, ob ich dafür ein Beispiel konstruieren kann.

Habe das jetzt einmal innerhalb einer *.odb-Datei gemacht. Geht wesentlich einfacher als das Filtern von Datensätzen.

Achte bitte darauf, dass auch etwas in den Zusatzinformationen der Formularfelder steht. Außerdem habe ich der Einfachheit halber die Formularfelder genauso genannt wie die Felder in der Datenbank. Dann brauchte ich da nicht auch noch extra zu erweitern - geht aber auch anders.

Gruß

Robert
Dateianhänge
Beispiel_Kombinationsfelder_hierarchisch.odb
Einfaches Beispiel für Kombinationsfelder, die hierarchisch aufgebaut sind.
(12.74 KiB) 196-mal heruntergeladen
weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von weedix04 »

Hallo Robert.

Ich habe mir dein Beispiel grad einmal angeschaut. Folgendes muss ich noch dazu sagen: Ich bin was Makros betrifft ein blutiger Anfänger, SQL jedoch geht bei mir.

Also dein Makro an sich verstehe ich mittlerweile denke ich. Ich habe die SQL Zeile darin etwas abgeändert aber irgendwie will das immer noch nicht ganz klappen. Ich habe nun schnell auch eine neue *odb Datei erstellt die die 2 erwähnten Tabellen aus meinem ursprünglichen Post und das Relevante Formular enthält.

Frage 1: Brauche ich denn dann wirklich noch eine zusätzliche Tabelle "Filter" für mein Problem?

Also im Endeffekt sollte im Formular als konkretes Beispiel folgendes passieren: Wenn ich bei Kunde "ABB Automation Products GmbH" auswähle, sollte bei PLZ nur noch "63755" und "69123" als mögliche Postleitzahlen erscheinen. Und je nachdem welche man anwählt, als Ort nur noch entweder "Alzenau" oder "Heidelberg".

Sprich: Wenn ich bei Kunde jetzt "ABB Automation Products GmbH" auswähle brauche ich ja eine Abfrage, die den Namen, der im Formularfeld "Kunde" steht mit allen Namen aus der Tabelle "Adressdaten" vergleicht. Bei einem Treffer soll er halt die zugehörige PLZ als Auswahlmöglichkeit im Formularfeld "PLZ" zur Verfügung stellen, und keine anderen. In diesem Fall wären es die oben genannten PLZ's,. Und ich weiß halt wirklich nicht wie ich in einem Makro oder einer normalen SQL Anweisung im Formularfeld "PLZ" sage, dass er sich den Wert aus der Formularfeld über ihm (In dem Fall halt "Kunde") nimmt, und ihn mit den Namen der Tabelle Adressdaten vergleicht.

Es tut mir schon einmal Leid, wenn es dir so erscheint, als ob du mir die ganze Arbeit abnehmen sollst. Ich stelle mich nur manchmal echt blöde an, und dies ist ein solcher Fall.

MfG

Im Anhang die Beispiel Tabelle
Dateianhänge
Test_Hierarchisch.odb
(16 KiB) 169-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von RobertG »

Hallo weedix04,
weedix04 hat geschrieben: Frage 1: Brauche ich denn dann wirklich noch eine zusätzliche Tabelle "Filter" für mein Problem?
Nein, bei der in dem Beispiel enthaltenen Variante benötigst Du die nicht. Das war eine Variante, bei der es um Suchen in einem Datenbastand gin, also datensätze entsprechend vorgefiltert werden.
weedix04 hat geschrieben:Und ich weiß halt wirklich nicht wie ich in einem Makro oder einer normalen SQL Anweisung im Formularfeld "PLZ" sage, dass er sich den Wert aus der Formularfeld über ihm (In dem Fall halt "Kunde") nimmt, und ihn mit den Namen der Tabelle Adressdaten vergleicht.
Das Formularfeld "PLZ" muss ja eingestellt sein, bevor es erreicht wird. Dies wird eingestellt bei dem Verlassen des Feldes "Kunde" - auf eben den Wert, der für den Eintrag im Feld "Kunde" zutrifft.
Du musst also im Feld "Kunde" unter "Bei Fokusverlust" das Makro so anbinden, dass es das Feld "PLZ" richtig einstellt. Dafür soll aus dem Feld "Kunde" in den Eigenschaften → Allgemein → Zusatzinformation "PLZ" ausgelesen werden. Das ist die Botschaft, die weitergibt, dass es sich dabei um das nächste Feld handelt.
Wenn Du jetzt auch noch im Makro den SQL-Code auf seine ursprüngliche Form wieder zurück stellst, dann klappt das auch:

Code: Alles auswählen

stSql = "SELECT  DISTINCT """+stTag+""" FROM ""Tabelle"" WHERE """+stFeld+""" = '"+stText+"' ORDER BY """+stTag+""" ASC "
Gruß

Robert
weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von weedix04 »

Hallo Robert,

Erstmal Danke für deine Hilfe!
Also ich habe gerade alles so eingestellt wie du gesagt hast, leider ohne Erfolg. Im Formularfeld Kunde steht "PLZ" in den Zusatzinformationen drin, bei den Makroeinstellungen ist das Makro auf "Bei Fokusverlust" gestellt, und das Makro hab ich auch wieder auf seine Ursprüngliche Form gebracht. Leider zeigt er mir dann immer noch, nachdem ich was bei "Kunde" eingetragen hat, bei dem Feld "PLZ" alle PLZ an die es gibt.

Also entweder bei meinem Base stimmt was nicht oder ich habe doch noch irgendwas vergessen.

Muss denn bei den Formularfeldern im 2. Reiter "Daten" unten bei "Listeninhalt" noch etwas verändert werden?

MfG
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von RobertG »

Hallo weedix04,

ich habe das gerade einmal genauer nachgesehen. Du hast 2 Tabellen, auf die Du Dich beziehst. In einer heißt der Kunde "Kunde", im anderen "Name". Deshalb ergibt die zusammengestellte Abfrage mit "Kunde" keinen Sinn.
Prinzipiell funktioniert das Ganze ja bei der Weitergabe von PLZ und Ort. Da muss dann leider noch eine zusätzliche Variable mitgegeben werden, die auf das Feld schließen lässt, aus dem gelesen werden soll. Das passt so momentan nicht.

Ich habe jetzt den Eintrag in den Zusatzinformationen erweitert und entsprechend das Makro geändert. Die Auswahl funktioniert jetzt. Was mich aber irritiert: In meiner Base-Fassung wird die Liste mit sehr viel weißem Raum und dem korrekten Eintrag angezeigt. Da muss ich noch einmal nachsehen, ob vielleicht einfach der vorherige Listeninhalt weggelassen werden sollte.

Gruß

Robert
Dateianhänge
Test_Hierarchisch.odb
(16.33 KiB) 170-mal heruntergeladen
weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von weedix04 »

Hallo Robert.

Ich habe mir deinen Anhang mal runtergeladen und wollte ihn testen. Wenn ich mir das Makro anschaue und alles andere bin ich sehr davon überzegt, dass es so klappen müsste und ich glaube dir auch, dass es bei dir funktioniert. Bei mir leider spuckt er weiterhin im Dropdown des Kombifeldes alle PLZ's aus und nicht nur die, die zum Name im Feld über ihm passt.

Daher die Frage: Gibt es irgendwelche allgemeinen Base Einstellungen, die die Funktion beeinträchtigt? Oder ich bediene das Formular einfach nur Falsch (was ich allerdings nicht glaube :D ).


Trotzdem Danke für all deine Mühe!

MfG
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von acco »

Hallo Robert, hallo weedix04,

bei mir funktioniert das Formular wie es soll (openSUSE 13.1, LibreOffice 4.3.2.2).

Nach der Auswahl bei "Kunden" kann ich bei "PLZ" nur dessen PLZ auswählen und letztendlich bei "Ort" auch nur den einen Ort.

Bei allen Kombinationsfeldern ist in den Eigenschaften "aufklappbar" und Zeilenzahl "20" eingetragen, daher der viele weiße Raum. Bei "PLZ" und "Ort" reicht da sicherlich viel weniger. Weshalb nun nicht wie üblich die Leerzeilen ausgeblendet werden, habe ich noch nicht herausgefunden.

Vielleicht hat das was mit der Eigenschaft "Tag" zu tun, oder evtl. in der Makro-Syntax die Nullwerte per WHERE-Klausel ausschließen.

Gruß acco
openSUSE 13.1, LibreOffice 4.3.2.2
weedix04
Beiträge: 8
Registriert: Di, 28.10.2014 11:01

Re: MySQL.Formular,Wert aus Kombinationsfeld lesen/aktualisi

Beitrag von weedix04 »

So, nach langer Zeit habe ich mich nochmal rangesetzt und siehe da: Auch bei mir klappt es endlich.... :D


Ich musste bei den Libre Office Einstellungen bei "Sicherheit" aktivieren das Makros überhaupt ausgeführt werden dürfen....

Also an dieser stelle dann nochmal Danke für deine Hilfe Robert!


MfG
Antworten