Frage von Kenjji, 45

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

Guten Morgen zusammen,

da die Überschrift wohl eher wenig aussagt erläutere ich mal mein Problem auch anhand eines Screenshots, der sich im Anhang befindet.

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

    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

    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

    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

Antwort
von maximilianus7, 26
  1. gleiche produke mit kundenspezifischen zusatz macht in der tat keinen sinn, die richtige kombination wird ja beim select des kundentextfeldes ermittelt. im produkte-dropdown select DISTINCT from... verwenden, um wiederholungen zu vermeiden. (mit ORDER BY kannst du dir die liste auch sortiert geben lassen)
  2.  das kunde(n)ergebnis im testfeld ist nicht eindeutig, das dokumentierst du ja durch die while-schleife. allerdings überschreibst du nach jedem durcgang das testfeld, so dass nur willkürlich die letzte meldung stehen bleibt. du brauchst da eigentlich ein listenfeld oder noch ein dropdown. oder je nach ergebnis mehrere dynamisch generierte textfelder.
Kommentar von Kenjji ,

Hallo,

danke erst einmal dafür. Habs nun mit einem weiteren Dropdown gelöst und dem SQL Befehl DISTINCT. Nun besteht allerdings noch das Problem, dass man in dem Dropdown erst etwas auswählen muss. Ist es möglich den ersten Wert der Abfrage dort direkt anzuzeigen?

Kommentar von maximilianus7 ,

falls es in dem libreoffice-document-model sowas wie ein "selected" attribut gibt? versuch mal das herauszufinden. bin da selber nicht so drin in der open/libre-office macro welt.

Antwort
von doesanybodyknow, 32

Eine Php seidige Lösung kann ich dir anbieten. Ist das interessant für dich?

Kommentar von Kenjji ,

Hallo,

eine PHP Lösung kommt leider erst einmal nicht in Betracht. Ich benötige am besten eine Lösung in Basic.

Antwort
von Kenjji, 18

Habs nun durch ein weiteres Dropdown Menü gelöst. Danke an alle für die Antworten.

Keine passende Antwort gefunden?

Fragen Sie die Community