![]() |
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:
Irgendwie komm ich aber da zu keinem Ergebnis, sprich ich komme zu einem Wert = -1 .
box_Pruefung.ListSource.DataSet.Locate('HierDerFeldname', 'HierDerZuSuchendeEintrag', [loCaseInsensitive]);
Was mache ich falsch, bzw. wie kann ich mein Problem lösen? |
Re: TDBLookupCombobox: Feldindex setzen
Was das Dingen anzeigt, wird vom Wert des 'Zielfeldes' bestimmt.
|
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 ? |
Re: TDBLookupCombobox: Feldindex setzen
Oder .ReadOnly auf True setzen
|
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. |
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 |
Re: TDBLookupCombobox: Feldindex setzen
Zitat:
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. |
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:
Beim Ereignis OnNewRecord() deiner Komponente adsDevices (TADODataSet) kannst du dann so reagieren:
CATEGORIES
ID | NAME ---------------- 1 | Printer 2 | Server 3 | Workstation
Delphi-Quellcode:
So wird ein Vorgabewert festgelegt, ohne dass beim Abbrechen der Neuaufnahme eine Benutzer-Aktion verlangt wird.
procedure TDemoForm.adsDevicesNewRecord(DataSet: TDataSet);
begin DataSet['CAT_ID'] := 3; end; |
Re: TDBLookupCombobox: Feldindex setzen
Ich muss also auch eine DataSource angeben (noch zusätzlich zur ListSource)?
|
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 23:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz