Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit DBLookupComboBox (https://www.delphipraxis.net/9784-problem-mit-dblookupcombobox.html)

SvenT 4. Okt 2003 11:01


Problem mit DBLookupComboBox
 
Hi!

Ich greife mit ADO auf eine Access DB zu. Nun möchte ich es mit einer DBLookupComboBox dem Benutzer ermöglichen, einen Datensatz aus der Liste auszuwählen. Allerdings sind die DataFields und ListFields der DBLookupComboBox aus der selben Spalte aus einer Tabelle und es erscheint dann die Fehlermeldung "Zirkuläre Daatenverbindungen sind nicht erlaubt!". Wenn ich nur das ListField einstelle, kann man zwar aus der Liste einen Datensatz auswählen, allerdings wird der aktuelle Datensatz bei einem Wechsel des Datensatzes nicht angezeigt. Der DBLookupComboBox kann ich auch den aktuellen Datensatz nicht zuweisen, denn "Einer Nur-Lesen Eigenschaft kann kein Wert zugewiesen werden".
Hat jemand eine Lösung für mein Problem oder kennt jemand eine Komponente, mit der ich mein Problem beheben könnte.
Vielen Dank im Vorraus.

Gruß
SvenT

Sharky 4. Okt 2003 11:18

Re: Problem mit DBLookupComboBox
 
Hai SvenT,

grundsätzlich ist eine DBLookupComboBox nicht dafür gedacht in einer Tabelle zu navigieren.
Aber gehen tut es trotzdem. Schreibe doch mal genau was du machen möchtest.
Der eigentliche Einsatz ist es um einem Feld der Tabelle-A den Wert aus einem Feld der Tabelle-B zuweisen zukönnen.

SvenT 4. Okt 2003 11:26

Re: Problem mit DBLookupComboBox
 
Hi Sharky!

Danke für Deine schnelle Antwort. Dann habe ich wohl die falsche Komponente gewählt.
Ich möchte das der aktuelle Datensatz in einem Feld angezeigt wird und der Benutzer in diesem Feld aus einer Liste einen Datensatz auswählen kann. Welche Komponente kann das???

Sharky 4. Okt 2003 11:32

Re: Problem mit DBLookupComboBox
 
Zitat:

Zitat von SvenT
Hi Sharky!

Danke für Deine schnelle Antwort. Dann habe ich wohl die falsche Komponente gewählt. Aber welche Komponete muss ich dann verwenden, damit der Benutzer aus einer Liste einen Datensatz auswählen kann.

Hai SventT,

es geht schon. Hier mal ein Beispiel:

-Tablenname -> Adressen
-Felder - Adress_id,Name,Vorname

Jetzt hast Du in deiner Anwendung
1 x TADOConnection
1 x TDataSource;
1 x TADOQuery oder TADOTable
1 x TDBLookupComboBox

Deine TADOConnection verbindest Du mit deiner Datenbank. TADOQuery verbindest Du mit deiner Tabelle und TDataSource mit deiner TADOQuery.

Das wirst Du ja schon haben?!

Deiner TDBLookupComboBox musst Du jetzt die richtigen Daten zuweisen:

Code:
 DBLoolUpCombobBox.ListSource := DataSource1
 DBLoolUpCombobBox.ListField := 'Name';
 DBLoolUpCombobBox.KeyField := 'Adress_id';
Jetzt solltest du schon aus deiner Tabelle etwas auswählen können.

SvenT 4. Okt 2003 11:45

Re: Problem mit DBLookupComboBox
 
Hi Sharky!

Danke für Deine Hilfe.
So wie Du das Beschrieben hast, habe ich es bereits. Ich kann also aus der Liste einen Datensatz auswählen. Allerdings wird nicht der aktuelle Datensatz angezeigt. Dazu müßte ich unter DataSource und DataField ja die selbe Tabelle bzw. Spalte auswählen wie bei ListSource und ListField. Wenn ich dies tue, kommt die Fehlermeldung "Zirkuläre Datenverbindungen sind nicht erlaubt". Kann ich das irgendwie anders lösen?

Sharky 4. Okt 2003 11:50

Re: Problem mit DBLookupComboBox
 
Zitat:

Zitat von SvenT
..... Dazu müßte ich unter DataSource und DataField ja die selbe Tabelle bzw. Spalte auswählen wie bei ListSource und ListField. ....

Das geht auch nicht. DataField brauchst Du wenn Du deiner Tabelle etwas aus einer anderen Tabelle zuweisen möchtest!

Versuche doch mal das: (ungetestet)

Delphi-Quellcode:
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
 DBLookupComboBox1.KeyValue := DataSet.FieldByName (DBLookupComboBox1.KeyField).AsVariant;
end;
Dadurch setzt Du DBLookupCombobox immer auf den aktuelle eintrag deiner Tabelle.

SvenT 4. Okt 2003 12:07

Re: Problem mit DBLookupComboBox
 
Ich habe meine DBLookupComboBox jetzt auf den aktuellen Datensatz gesetzt. Es wird dann auch der aktuelle Datensatz angezeigt. Nun kann ich aber aus der Liste keinen Datensatz mehr auswählen.


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