Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TDBLookupCombobox: Feldindex setzen (https://www.delphipraxis.net/111044-tdblookupcombobox-feldindex-setzen.html)

Nju 28. Mär 2008 13:42

Datenbank: Access • Zugriff über: ADO

TDBLookupCombobox: Feldindex setzen
 
Ich habe auf meinem Formular eine TDBLookupCombobox verknüpft mit einem TADODataset und TDataSource.

Nun würde ich gerne den Index dieser ComboBox setzen, sprich das, was er anzeigen soll (im Eigenschaftsfeld "Text", da man ja nicht direkt reinschreiben darf).

Mein bisheriger Versuch war dieser Weg:

Code:
box_Pruefung.ListSource.DataSet.Locate('HierDerFeldname', 'HierDerZuSuchendeEintrag', [loCaseInsensitive]);
Irgendwie komm ich aber da zu keinem Ergebnis, sprich ich komme zu einem Wert = -1 .

Was mache ich falsch, bzw. wie kann ich mein Problem lösen?

Peinhard 28. Mär 2008 14:59

Re: TDBLookupCombobox: Feldindex setzen
 
Was das Dingen anzeigt, wird vom Wert des 'Zielfeldes' bestimmt.

shmia 28. Mär 2008 15:01

Re: TDBLookupCombobox: Feldindex setzen
 
Nur wenn das Dataset, an den die TDBLookupCombobox angebunden ist, im Edit- oder Insert-Mode ist,
kann man auf das was die TDBLookupCombobox anzeigt Einfluss nehmen.
Ist das bei dir so ?

mkinzler 28. Mär 2008 15:04

Re: TDBLookupCombobox: Feldindex setzen
 
Oder .ReadOnly auf True setzen

Nju 31. Mär 2008 08:16

Re: TDBLookupCombobox: Feldindex setzen
 
Unter "ListSource" (von der LookupComboBox) steht die Eigenschaft "AutoEdit" auf True, wenn damit der Insert/Edit-Mode gemeint ist?

Die ListSource selber ist an eine TDataSource verbunden, die wiederum an eine TADODataSet verbunden ist.

Von ReadOnly = True möchte ich absehen, da der Benutzer durch Eingabe der Anfangsbuchstaben im Nachhinein auch noch nach Einträgen suchen kann. Testweise habe ich es auf ReadOnly gemacht, brachte aber ebenfalls keinen Erfolg.



Es wird doch wohl möglich sein, eine TDBLookup-Komponente zu sagen, welchen Eintrag aus einer Tabelle er als Startwert, wenn die Anwendung startet, anzeigen soll.

marabu 31. Mär 2008 08:20

Re: TDBLookupCombobox: Feldindex setzen
 
Moin,

für existierende Datensätze steht der Wert ja fest. Für neue Datensätze kannst du den Vorbelegungswert beim Ereignis OnNewRecord() des Datasets in das verbundene Datenfeld eintragen.

Grüße vom marabu

Nju 31. Mär 2008 08:30

Re: TDBLookupCombobox: Feldindex setzen
 
Zitat:

Zitat von marabu
Moin,

für existierende Datensätze steht der Wert ja fest. Für neue Datensätze kannst du den Vorbelegungswert beim Ereignis OnNewRecord() des Datasets in das verbundene Datenfeld eintragen.

Grüße vom marabu

Das verstehe ich nicht, könntest du mir da ein kurzes Beispiel geben?

Für mich liest sich das so, als wenn dadurch ein neuer Wert eingetragen wird, das ist aber so nicht gedacht. Es soll ein bereits vorhandener Wert aus der Tabelle vorher per Quellcode ausgewählt werden.

marabu 31. Mär 2008 09:27

Re: TDBLookupCombobox: Feldindex setzen
 
Nehmen wir an, dass du eine Lookup-Table CATEGORIES (ID, NAME) und eine Datentabelle DEVICES (ID, NAME, CAT_ID) hast - mit folgenden Daten:

Code:
CATEGORIES

ID | NAME
----------------
1  | Printer
2  | Server
3  | Workstation
Beim Ereignis OnNewRecord() deiner Komponente adsDevices (TADODataSet) kannst du dann so reagieren:

Delphi-Quellcode:
procedure TDemoForm.adsDevicesNewRecord(DataSet: TDataSet);
begin
  DataSet['CAT_ID'] := 3;
end;
So wird ein Vorgabewert festgelegt, ohne dass beim Abbrechen der Neuaufnahme eine Benutzer-Aktion verlangt wird.

Nju 31. Mär 2008 11:39

Re: TDBLookupCombobox: Feldindex setzen
 
Ich muss also auch eine DataSource angeben (noch zusätzlich zur ListSource)?

marabu 31. Mär 2008 11:43

Re: TDBLookupCombobox: Feldindex setzen
 
Ich habe in keinem meiner Beiträge Annahmen über deine Benutzerschnittstelle gemacht. Eine DataSource brauchst du zum Anbinden von datensensitiven Controls an die DataSet-Komponenten. Wenn du also eine TDBLookupCombo verwendest, dann benötigst du tatsächlich zwei DataSources.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Seite 1 von 2  1 2      

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