Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DBLookupComboBox zeigt die selektierte Zeile nicht an (https://www.delphipraxis.net/49682-dblookupcombobox-zeigt-die-selektierte-zeile-nicht.html)

hsbc 14. Jul 2005 12:57


DBLookupComboBox zeigt die selektierte Zeile nicht an
 
Ich arbeite mit Delphi 7 Prof unter Windows XP Home.

Ich habe eine DBLookupComboBox mit einer DataSource verbunden, was auch funktioniert.

Wenn ich in der DBLookupComboBox eine Zeile auswähle, wird diese zwar in DBLookupComboBox.KeyValue übergeben. Sobald die Auswahlliste dann aber zuklappt, ist die angezeigte Zeile der LookupComboBox (DBLookupComboBox.Text) leer. Eine anschliessende Abfrage mit ShowMessage(DBLookupComboBox.KeyValue) enthält aber den richtigen Wert.

Was mache ich hier falsch ?

Meine Einstellungen in der DBLookupComboBox:

ListSource = Datenquelle
KeyField = Nr ( erstes Datenfeld im Datensatz )
ListField = Nr;Name
ListFieldIndex = 0

mfg
Herbert

shmia 14. Jul 2005 14:38

Re: DBLookupComboBox zeigt die selektierte Zeile nicht an
 
Zitat:

Zitat von hsbc
Ich habe eine DBLookupComboBox mit einer DataSource verbunden, was auch funktioniert.
wenn ich in der DBLookupComboBox eine Zeile auswähle, wird diese zwar in DBLookupComboBox.KeyValue übergeben. Sobald die Auswahlliste dann aber zuklappt, ist die angezeigte Zeile der LookupComboBox (DBLookupComboBox.Text) leer. Eine anschliessende Abfrage mit ShowMessage(DBLookupComboBox.KeyValue) enthält aber den richtigen Wert.
Was mache ich hier falsch ?

Vermutung: DataSource (und damit das Dataset) ist nicht im Edit- oder Insert-Zustand (State in [dsEdit, dsInsert]).
Die DBLookupComboBox zeigt dann den Inhalt des Feldes aus der Datenmenge, die über DataSource angeklemmt wurde. Oder auch gar nix, wenn die Datenmenge inaktiv ist.

hsbc 14. Jul 2005 19:32

Re: DBLookupComboBox zeigt die selektierte Zeile nicht an
 
Zitat:

Zitat von shmia
Vermutung: DataSource (und damit das Dataset) ist nicht im Edit- oder Insert-Zustand (State in [dsEdit, dsInsert]).

Das ist es leider nicht. Wie gesagt, die gesamte Auswahlliste der DBLookupComboBox wird ja ordnungsgemäss angezeigt. Nur, nachdem ich eine Zeile ausgewählt habe, steht - nachdem die Liste wieder zugeklappt ist - nichts in der ersten Zeile.

mfg
Herbert

shmia 15. Jul 2005 09:02

Re: DBLookupComboBox zeigt die selektierte Zeile nicht an
 
Zitat:

Zitat von hsbc
Zitat:

Zitat von shmia
Vermutung: DataSource (und damit das Dataset) ist nicht im Edit- oder Insert-Zustand (State in [dsEdit, dsInsert]).

Das ist es leider nicht. Wie gesagt, die gesamte Auswahlliste der DBLookupComboBox wird ja ordnungsgemäss angezeigt. Nur, nachdem ich eine Zeile ausgewählt habe, steht - nachdem die Liste wieder zugeklappt ist - nichts in der ersten Zeile.

Da hast du mich falsch verstanden.
DBLookupComboBox braucht zwei DataSourcen: eine LookupDatasource und die "normale" Datasource.
Wenn das Aufklappen funktioniert, dann ist die LookupDataSource funktionsfähig.
Zugeklappt zeigt die DBLookupComboBox aber die Daten aus der DataSource an.
Die DBLookupComboBox funktioniert leider nicht ohne dass die "normale" DataSource vorhanden, aktiv und beschreibbar (TDataSet.CanModify=True) ist.
Andere Komponenten aus der Rx-Lib oder JVCL sind da flexibler.

Sharky 15. Jul 2005 09:47

Re: DBLookupComboBox zeigt die selektierte Zeile nicht an
 
Zitat:

Zitat von shmia
... Die DBLookupComboBox funktioniert leider nicht ohne dass die "normale" DataSource vorhanden, aktiv und beschreibbar (TDataSet.CanModify=True) ist. ...

Hai shmia,

bist Du dir da sicher? Ich habe schon des öfteren die DBLookUpComboBox ohne DataSource verwendet.
In diesem Fall zeigt die DBLCB den Text aus .ListField der .ListSource an und ich kann auf .KeyField zugreifen.

Umgedreht geht es natürlich nicht. Ich kann nicht eine DataSource angeben ohne eine ListSource zu verwenden.

Sharky 15. Jul 2005 09:54

Re: DBLookupComboBox zeigt die selektierte Zeile nicht an
 
[quote="Sharky"]
Zitat:

Zitat von shmia
... Die DBLookupComboBox funktioniert leider nicht ohne dass die "normale" DataSource vorhanden, aktiv und beschreibbar (TDataSet.CanModify=True) ist. ...

Hai shmia,

bist Du dir da sicher? Ich habe schon des öfteren die DBLookUpComboBox ohne DataSource verwendet.
In diesem Fall zeigt die DBLCB den Text aus .ListField der .ListSource an und ich kann auf .KeyField zugreifen.

Umgedreht geht es natürlich nicht. Ich kann nicht eine DataSource angeben ohne eine ListSource zu verwenden.

[Edit]Ups.... das geht docht nicht (mehr).. Ich war mir zu 100% sicher das ich das in Delphi 7 schon so gemacht habe?[/edit]

hsbc 15. Jul 2005 10:02

Re: DBLookupComboBox zeigt die selektierte Zeile nicht an
 
Hallo allerseites,

ich verwende in der DBLookupComboBox nur die Felder:

ListSource
KeyField
ListField

Das KeyField hatte das Datenfeld NR
Das ListField hatte die Datenfelder NR und NAME (NR;NAME) zugewiesen

Nachdem ich jetzt die Zuweisung folgendermassen geändert habe:

KeyField NAME
ListField NAME;NR

funktioniert die DBLookupComboBox wieder so, wie sie soll. Sie zeigt halt im ListField zuerst den Namen und dann die Nr an.

Warum es so funktioniert, ist mir zwar unklar - aber es geht wenigstens.

mfg
Herbert


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 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