[Erledigt] DBLookUpCombobox

Rund um die LCL und andere Komponenten

[Erledigt] DBLookUpCombobox

Beitragvon MacWomble » 13. Aug 2017, 12:25 [Erledigt] DBLookUpCombobox

Hallo, ich habe eine DBLookupCombobox in meinem Programm. Nun möchte ich aus der Listsource ein weiteres Feld auslesen (nicht anzeigen).
Wie mache ich das?
Bsp:
Listsource:

OID (Integer
KontaktArt (String)
KontaktTyp (Integer)

Die Kontaktart wird angezeigt und übernommen (ist so OK), bei Auswahl soll aber ebenfalls der KontaktTyp übergeben werden.
Der KontaktTyp ist nicht eindeutig, d.h. ein Typ kann mehrfach vorhanden sein!

Code: Alles auswählen
Typ    Art
1        Telefon
2        Telefax
1        Mobil
3        eMail privat
3        eMail geschäftl.
4        URL privat
4        URL geschäftl
Zuletzt geändert von MacWomble am 14. Aug 2017, 15:24, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 353
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.1 Cinnamon / CodeTyphon Generation V Plan 6.00 (FPC 3.1.1) | 
CPU-Target: 32/64 Nit
Nach oben

Beitragvon gladio » 14. Aug 2017, 07:51 Re: DBLookUpCombobox

Wenn in der DBLookUpCombobox die 'Kontaktart' gewählt wird, stehen automatisch die dazugehörigen Datenfelder
des Datensatzes zur Verfügung.
Du kannst also den zugehörigen 'Kontakttyp' ganz einfach abgreifen.
Eventuell das dann im OnSelect oder OnCloseUp.
gladio
 
Beiträge: 65
Registriert: 21. Jun 2014, 05:15
Wohnort: Ostseestrand
OS, Lazarus, FPC: Win7/10-32/64 | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon MacWomble » 14. Aug 2017, 11:11 Re: DBLookUpCombobox

.. wenn es so einfach wäre.

Ich habe das schon versucht, aber es geht nicht.

Ich habe in beiden Ereignissen

ShowMessage(DBLookupComboBox1.ListSource.DataSet.FieldByName('kontakttyp').AsString);

eingetragen. Anscheinend zeigt er immer den ersten Datensatz an,
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 353
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.1 Cinnamon / CodeTyphon Generation V Plan 6.00 (FPC 3.1.1) | 
CPU-Target: 32/64 Nit
Nach oben

Beitragvon gladio » 14. Aug 2017, 12:36 Re: DBLookUpCombobox

Es gibt im Lazarus-Verzeichnis ein Demo-Projekt:
Lazarus/examles/database/dblookup

Da habe ich mal das eingefügt:

Code: Alles auswählen
 
uses: ...., Dialogs, ....
 
procedure TForm1.DBLookupComboBox1Select(Sender: TObject);
begin
  if DBF1.Locate('MTH_NAME',DBLookUpComboBox1.Text, []) then
  showmessage(DBF1ID.AsString);
end;


Vielleicht wäre diese Variante eine Möglichkeit.
gladio
 
Beiträge: 65
Registriert: 21. Jun 2014, 05:15
Wohnort: Ostseestrand
OS, Lazarus, FPC: Win7/10-32/64 | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon MacWomble » 14. Aug 2017, 15:24 Re: DBLookUpCombobox

Danke, das hilft weiter. So geht es:

Code: Alles auswählen
procedure TfrmEditKontakt.DBLookupComboBox1Select(Sender: TObject);
begin
   if DBLookupComboBox1.ListSource.DataSet.Locate('kontaktart',DBLookUpComboBox1.Text, []) then
   ShowMessage(DBLookupComboBox1.ListSource.DataSet.FieldByName('kontakttyp').AsString);
end;       
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
 
Beiträge: 353
Registriert: 17. Apr 2008, 00:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 18.1 Cinnamon / CodeTyphon Generation V Plan 6.00 (FPC 3.1.1) | 
CPU-Target: 32/64 Nit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried