Seite 1 von 1

Textfeld bei gleichen SQL Werten in Abhängigkeit von Dropdown-Feldern füllen

Verfasst: Fr 18. Dez 2015, 08:55
von Kenji
Guten Morgen zusammen,

da die Überschrift wohl eher wenig aussagt erläutere ich mal mein Problem auch anhand eines Screenshots:
Unbenannt.JPG
Unbenannt.JPG (13.84 KiB) 2716 mal betrachtet
Ich habe 2 Dropdown-Felder (Listboxen) in meinem Dialog. Dropdown1 wird durch eine SQL Abfrage beim Start des Dialoges gefüllt. Das funktioniert reibungslos.
Sobald ich in Dropdown1 einen Wert auswähle (jeden Wert gibt es nur einmal) füllt sich anhand einer SQL Abfrage im Makro das Dropdown2. Je nachdem welchen Wert ich in Dropdown1 auswähle kann es sein, dass die Werte in Dropdown2 mehrfach vorkommen.

Das Textfeld1 wird in meinem Makro erst dann gefüllt, wenn sowohl in Dropdown1, als auch in Dropdown2 ein Wert ausgewählt ist. Bis hierhin klappt alles super. Nun komme ich nach viel Erläuterung zu meinem eigentlichen Problem.
Beispiel (nicht auf Sinnigkeit achten ;)):
- Dropdown1 sind Städte hinterlegt
- In Dropdown2 erscheinen die dazugehörigen Produke
- In Textfeld1 erscheint dann der Kunde, welcher per SQL Abfrage der Kundennummer und des Produktes zu finden ist

Nun kommt es vor das es in Stadt "Hamburg" mehrere Kunden gibt, die dasselbe Produkt herstellen. Ich wähle also in Dropdown1 Hamburg aus und in Dropdown2 erscheint 3mal Milch, weil 3 Kunden Milch herstellen. Egal welchen "Milchwert" ich nun auswähle, ich erhalte im Textfeld1 immer den ersten Kunden, den die SQL Abfrage findet.

Wie kann ich nun die Abfrage so bauen, dass mir bei jedem Wert der entsprechende Kunde angezeigt wird ohne, dass ich die Werte in Dropdown2 in Milch_1, Milch_2 und Milch_3 umbennen muss?
Mein bisheriger SQL Code für die Abfrage schaut so aus:
- Stadtdropdown

Code: Alles auswählen

Stadtergebnis = SQL_Anweisung.executeQuery("SELECT ""stadt"" FROM ""staedte""")
	Do While Stadtergebnis .next
	LBItem = Stadtergebnis .getString(1)
	Dialog.GetControl("LB1").addItem(LBItem, Dialog.GetControl("LB1").ItemCount)
	Loop
- Produktedropdown

Code: Alles auswählen

Produktergebnis = SQL_Anweisung.executeQuery("SELECT ""produkt"" FROM ""produkte"" WHERE ""stadt""=" & gewaehltestadt(i) & "")
	Dialog.GetControl("LB2").removeItems(0, Dialog.GetControl("LB2").getItemCount())
	Do While Produktergebnis.next
	LBItem2= Produktergebnis.getString(1)
	Dialog.GetControl("LB2").addItem(LBItem2, Dialog.GetControl("LB2").ItemCount()
	Loop
- Kundetextfeld

Code: Alles auswählen

Kundeergebnis = SQL_Anweisung.executeQuery("SELECT ""kunde"" FROM ""kunden"" WHERE ""stadt""=" & gewaehltestadt(i) & " AND ""produkt""='" & gewaehltesprodukt(i) & "'")
	Do While Kundeergebnis.next
	Dialog.GetControl("Kunde").text = Kundeergebnis.getString(1)
	Loop
So nun hoffe ich, dass mir jemand bei meinem Problem weiterhelfen kann.

Viele Grüße

Kenji

Re: Textfeld bei gleichen SQL Werten in Abhängigkeit von Dropdown-Feldern füllen

Verfasst: Fr 18. Dez 2015, 09:45
von gogo
Weiss nicht, ob ich's verstanden habe aber wie wär's mit:

Code: Alles auswählen

Produktergebnis = SQL_Anweisung.executeQuery("SELECT ""produkt"" || ' - ' || ""kunde"" FROM ""kunden"" WHERE ""stadt""=" & gewaehltestadt(i) & "")
edit: FROM ""kunden"" statt FROM ""produkte""

Re: Textfeld bei gleichen SQL Werten in Abhängigkeit von Dropdown-Feldern füllen

Verfasst: Fr 18. Dez 2015, 11:13
von Kenji
Hallo gogo,

ich muss ehrlich gestehen, dass ich keine Ahnung habe, was dein Codeschnippsel bewirken soll?

Re: Textfeld bei gleichen SQL Werten in Abhängigkeit von Dropdown-Feldern füllen

Verfasst: Fr 18. Dez 2015, 15:13
von F3K Total
Hallo,
was willst Du mit dem Inhalt des Textfeldes anfangen?
Wenn ich dich richtig verstanden habe, möchtest du anhand der Stadt die Kunden und dann deren Produkte finden.
Anbei mal ein Beispiel ohne Makro, Dialog und ohne Listenfeld

Gruß R

Re: Textfeld bei gleichen SQL Werten in Abhängigkeit von Dropdown-Feldern füllen

Verfasst: Sa 19. Dez 2015, 03:05
von gogo
...Wie kann ich nun die Abfrage so bauen, dass mir bei jedem Wert der entsprechende Kunde angezeigt wird ohne, dass ich die Werte in Dropdown2 in Milch_1, Milch_2 und Milch_3 umbennen muss?...
Habe ich so gedeutet: ich möchte alle Kunden in der Stadt x sehen, die das Produkt y herstellen.
Dazu brauchst Du kein Base, Du hast ja eigentlich nur eine Tabelle ("Kunden"), denn:

Code: Alles auswählen

"SELECT ""kunde"" FROM ""kunden"" WHERE ""stadt""=" & gewaehltestadt(i) & " AND ""produkt""='" & gewaehltesprodukt(i) & "'"
beteutet, dass es zumindest 3 Spalten in dieser Tabelle gibt: kunde, stadt und produkt.
Kopier' diese Tabelle in ein Calc-file, setz' einen Autofilter und Du kannst loslegen.

... und das Codeschnipsel ist genau das das Du gepostet hast, nur etwas verändert:

Code: Alles auswählen

"SELECT ""produkt"" FROM ""produkte""
wurde zu

Code: Alles auswählen

"SELECT ""produkt"" || ' - ' || ""kunde"" FROM ""kunden"" 
und füllt einfach das Listenfeld mit einer String-Kombination aus "Produkt" und " - " und "Kundenname".

Re: Textfeld bei gleichen SQL Werten in Abhängigkeit von Dropdown-Feldern füllen

Verfasst: Di 22. Dez 2015, 08:58
von Kenji
Hallo zusammen,

Thema ist erledigt. Habs durch ein weiteres Dropdown gelöst. Danke an alle für die Hilfestellungen.