Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi dblookupcombobox (https://www.delphipraxis.net/8560-dblookupcombobox.html)

gridmachine 8. Sep 2003 07:17


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,

urs.liska 8. Sep 2003 10:39

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

gridmachine 8. Sep 2003 15:25

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 03:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz