![]() |
dblookupcombobox
hi,
ich habe als listsource einer dblookupcombobox zwei verschiedene Spalten einer Tabelle mit Semikolon getrennt angegeben. Dadurch werden diese beiden Spalten richtigerweise im Dropdownbereich der Lookupcombobox angezeigt. Mein Problem ist folgendes: Über die Zuweisung via 'Datafield' kann eins der Listsourcefelder übernommen werden. Ich möchte jedoch beide ausgewählten Felder in mein Datafield eintragen lassen. Ist dies auf einfache Art möglich? gridmachine, |
Re: dblookupcombobox
Ich weiß gerade nicht, ob das so geht, was Du möchtest. Aber: eigentlich ist es auch gar nicht so gemeint. Der Kniff ist gerade, dass die Datenverbindung von der Anzeige in der ComboBox getrennt ist. Was in DataField gespeichert wird, ist der Wert in KeyField (was typischerweise der Primärschlüssel der Lookuptabelle ist), was in der Box angezeigt wird, ist das/sind die Feld/er in ListField.
Im Klartext: normalerweise hast Du ein Feld, das einen Fremdschlüssel enthält, der auf den Primärschlüssel einer zweiten Tabelle verweist. Meist ist das ein Integerwert. DataField wird auf das Fremdschlüsselfeld gesetzt, KeyField auf das Primärschlüsselfeld der Lookuptabelle, mit ListField gibst Du an, was der Benutzer sehen will. Der Witz daran ist, dass in der Haupttabelle i.d.R. nur ein Integer gespeichert werden muss, der Benutzer aber eine aussagekräftige Info erhält. Alles klar? Grüße Urs |
Re: dblookupcombobox
hi,
ich weiß, was eine DBLookupcombobox NORMALERWEISE macht. Trotzdem Danke für Deine Hilfe.:) Vielleicht habe ich das Problem nicht richtig formuliert. Also angenommen : 1. TabelleX enthält mehrere Spalten Name,Vorname,Adresse,Telefon,email,.... 2. TabelleY enthält eine Spalte z.B. Besitzter (hier soll der Eintrag aus TabelleX [Name+Vorname] rein) nun meine DBLookupcombobox: dblookupcombobox.listsource = tabelleX >> Feld: Name dblookupcombobox.datafield = tabelleY >> Feld:Besitzer das geht soweit! Name aus TabelleX wird in Besitzer TabelleY übernommen. es soll jedoch der Vorname auch mit in das Feld Besitzer rein also: dblookupcombobox.listsource = tabelleX >> Feld: Name ; Vorname dblookupcombobox.datafield = tabelleY >> Feld:Besitzer Fazit: Name und Vorname werden im Dropdownbereich der Lookupcombobox zwar angezeigt, aber nur das erstere wird übernommen! also hier poste ich mal meinen Lösungsweg : 1. dblookupcombobox.listsource = tabelleX >> Feld: Name ; Vorname dblookupcombobox.datafield = tabelleY >> Feld: Besitzer 2. über das Eingabefeld der Lookupcombobox lege ich passgenau ein DbEditfeld 3. im OnCloseUp Ereignis der DBLookupcombobox : name :=dblookupcombobox.ListSource.DataSet.FieldByName( 'Name').asstring; vname:=dblookupcombobox.ListSource.DataSet.FieldBy Name ('Vorname').asstring; // hier zerre ich die Werte in gleichnamige Variablen TabelleY.Dataset.Edit; TabelleY.Dataset..fieldbyname('Besitzer').asstring :=name+' '+ vname; So nun noch im DBEdit den Wert Datafield auf's TabelleY.Besitzer setzten und schon wird der Name + Vorname in einer optischen LookupCombobox angezeigt. (welch Teufelei!) :twisted: Puuhhhh, ich dachte das geht einfacher. gridmachine, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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