AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TDBLookupCombobox: Feldindex setzen

TDBLookupCombobox: Feldindex setzen

Ein Thema von Nju · begonnen am 28. Mär 2008 · letzter Beitrag vom 1. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2   
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#1

TDBLookupCombobox: Feldindex setzen

  Alt 28. Mär 2008, 13:42
Datenbank: Access • Zugriff über: ADO
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?
  Mit Zitat antworten Zitat
Peinhard

Registriert seit: 8. Jul 2006
152 Beiträge
 
#2

Re: TDBLookupCombobox: Feldindex setzen

  Alt 28. Mär 2008, 14:59
Was das Dingen anzeigt, wird vom Wert des 'Zielfeldes' bestimmt.
Confuzius say: Early worm have death wish.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: TDBLookupCombobox: Feldindex setzen

  Alt 28. Mär 2008, 15:01
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 ?
Andreas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TDBLookupCombobox: Feldindex setzen

  Alt 28. Mär 2008, 15:04
Oder .ReadOnly auf True setzen
Markus Kinzler
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#5

Re: TDBLookupCombobox: Feldindex setzen

  Alt 31. Mär 2008, 08:16
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: TDBLookupCombobox: Feldindex setzen

  Alt 31. Mär 2008, 08:20
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
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#7

Re: TDBLookupCombobox: Feldindex setzen

  Alt 31. Mär 2008, 08:30
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: TDBLookupCombobox: Feldindex setzen

  Alt 31. Mär 2008, 09:27
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.
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#9

Re: TDBLookupCombobox: Feldindex setzen

  Alt 31. Mär 2008, 11:39
Ich muss also auch eine DataSource angeben (noch zusätzlich zur ListSource)?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: TDBLookupCombobox: Feldindex setzen

  Alt 31. Mär 2008, 11:43
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 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