![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Auswahl von QueryItems mit Komponente (DBComboBox)
Hallo Zusammen,
ich habe in einer Query alle Mitarbeiternamen und ID's. Jetzt möchte ich mit einer DB-Komponente, die ähnlich einer DBComboBox funktioniert die Mitarbeiter auswählen. Kann mir jemand sagen, welche Komponente ich dafür benötige? DBComboBox und DBLookupComboBox sind dafür glaube ich nicht richtig... oder ich nur nicht in der Lage, es richtig zu machen... Vielen Dank Patrick |
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Grundsätzlich mal das Zweitere. Aber ohne zu Wissen, was Du genau willst ist das schwer zu sagen.
|
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Ich dachte, ich hätte es gesagt...
Wenn ich in der Komponente einen Mitarbeiter ausgewählt habe, dann möchte ich, dass er in der Query auch ausgewählt ist. Wenn ich dann in der Query auf das Feld
Delphi-Quellcode:
zugreife, dass dann die Telefonnummer von dem in der Komponente ausgewählten Mitarbeiter ausgegeben wird...
Query.FieldByName('TelefonNr').AsString
Ist das Problem jetzt nachvollziehbarer geworden? Vielen Dank Patrick |
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Zitat:
Zitat:
Du setzt zu viel voraus, was für dich vielleicht selbstverständlich ist, weil du es aus deinem Kontext her siehst. Wir haben den nicht. |
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Ok, sorry!
Ich versuche es genauer zu beschreiben. MySQL mit Tabelle aller Benutzer Query (TUniQuery) mit SQL Statement:
Delphi-Quellcode:
Ergebnis: UserID, Name aller User aus der jeweiligen Abteilung
FQuery_Vertreter.SQL.Clear;
FQuery_Vertreter.SQL.Add('select UserID, concat(vorname, '+QuotedStr(' ')+', name) as Name from benutzer '+ 'where employed=1 ' ); if FQuery_UserRechte.FieldByName('intern').AsInteger=0 then begin FQuery_Vertreter.SQL.Add('and abteilungsid= :abteilung '); FQuery_Vertreter.ParamByName('abteilung').AsInteger:=FQuery_Benutzer.FieldByName('abteilungsid').AsInteger; end; FQuery_Vertreter.SQL.Add('order by Name '); FQuery_Vertreter.Open; 1; Klaus Müller 2; Max Muster 3; Tanja Mann ... Mich interessiert die UserID. Denn in der DB-Komponente, die ich suche, sollen alle User aus der Query mit Namen aufgelistet sein: Klaus Müller Max Muster Tanja Mann ... Abweichend von oben hätte ich aber nur die Namen und nicht die ID angezeigt. Ziel des Ganzen ist, dass ich Max Muster in der Komponente auswähle und dann die Query automatisch zu dem Datensatz springt. Denn dann habe ich ja auch die UserID, mit der ich weiterarbeite. Es gibt übrigens mehrere Stellen im Programm, wo ich den User auswählen kann und wenn ich das mit einer datensensitiven Komponente mache, dann zeigen alle immer dasselbe an... Habe ich den Kontext jetzt nachvollziehbarer darstellen können? Vielen Dank Patrick |
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Ich glaube da brauchst du zwei Queries, oder?
Mit der ersten füllst du eine DB(Lookup)Combobox, Feldwert ist die ID Anzeigewert ist der Name. Im OnChange der Combobox springst du in der zweiten Query, die alle Daten der User enthält, zu dem Datensatz mit der entsprechenden ID. Du kannst mMn nicht mit nur einer Query arbeiten und die Combobox zur Datensatznavigation benutzen. |
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Wenn die UserID eine Zahl ist, geht auch ne normale ComboBox:
Schleife über alle Datensätze der Query und mit
Delphi-Quellcode:
die einzelnen User hinzufügen.
cbox.AddItem(username, TObject(userID))
Wenn ein Eintrag ausgwählt wurde, kann man dann mit
Delphi-Quellcode:
die userID zurück bekommen.
integer(cbox.Items.Objects[cbox.ItemIndex])
|
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Zitat:
Platziere eine TDBLookupComboBox auf dem Form. Ich vermute, du hast bereits eine DataSource mit deiner Query verlinkt. Setze das ListSource-Property der TDBLookupComboBox auf diese DataSource. Setze KeyField auf UserID und ListField auf Name. Damit die Combobox nach dem Öffnen der Query auch den richtigen Eintrag anzeigt, fügst du folgenden Code in das AfterOpen Event der Query ein:
Delphi-Quellcode:
DBLookupComboBox1.KeyValue := FQuery_Vertreter.FieldByName('UserID').Value; // oder wie auch immer die DBLookupComboBox heißt
|
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Hallo Zusammen,
vielen Dank für die Antworten. Ich habe es mit einer TDBLUCombo (TMS-Komponente) gelöst. Ich arbeite viel mit den TMS-Komponenten und einfach solange probiert, bis ich eine passende gefunden hatte... Sonst hätte ich es doch versucht mit der TDBLookupComboBox Komponente das zu lösen, aber die finde ich recht schwierig...
Delphi-Quellcode:
Mit diesen Einstellungen macht sie genau das, was ich haben wollte. Und da ich davon mehrere habe, aber alle am gleichen DataSource hängen, zeigen immer alle das gleiche an...
Combo_Start_Vertreter.DataSource:=MySQL.DS_Vertreter;
Combo_Start_Vertreter.DataField:='Name'; Combo_Start_Vertreter.DataLookup:=true; Combo_Start_Vertreter.LookUpMode:=lmGoto; Bei dieser Lösung fand ich es charmant, dass ich kein Event benötige und die Datensätze nicht von Hand auswählen muss... Vielen Dank für die Unterstützung Patrick |
AW: Auswahl von QueryItems mit Komponente (DBComboBox)
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz