![]() |
Datenbank: MS SQL Server Express • Zugriff über: ADO
DBLookupComboBox bei neuer Dateneingabe
Hallo,
ich möchte das der Benutzer in einer Eingabemaske in einem Dropdownfeld Werte auswählen kann und zwar alle Werte eines Feldes einer anderen Tabelle als die in die die eingegebenen Formulardaten aufgenommen werden sollen. TBPerson ------------ Name ... FK_AnredeID (FK) TBAnrede -------------- AnredeID (PK) Anrede In dem Beispiel möchte ich z.B. in die Tabelle TbPersonen die passende FK_AnredeID für z.B. "Herr" aufnehmen. Wie bekomme ich es hin das in der DBLookupComboBox alle Anreden aus der TBAnrede Tabelle stehen, in TBPerson jedoch die FK_AnredeID richtig geschrieben wird. Das ganze bei einem neu hinzugefügten Datensatz mittels append. Ich weiß das es hier im Forum viele ähnliche Fragen gibt, leider bekomme ich es trotzdem nicht hin :( Gruß Marcus |
Re: DBLookupComboBox bei neuer Dateneingabe
Hallo Marcus,
nehmen wir an, du hättest zwei Datenbank-Tabellen Personen (ID, ANR_ID, ...) und Anreden (ID, TEXT). Setzen wir weiter zwei ADOTable-Komponenten PersonenTable und AnredenTable und mit diesen verbundene DataSource-Komponenten PersonenSource und AnredenSource voraus. Um einen Personeneintrag zu bearbeiten setzt du die Eigenschaft DataSource aller datensensitiven Komponenten auf PersonenSource und die Eigenschaft DataField nach Wunsch. Bei der DBLookupComboBox setzt du zusätzlich die Eigenschaft ListSource auf AnredenSource, die Eigenschaft ListField benennt das anzuzeigende Feld (TEXT) und die Eigenschaft KeyField benennt das verknüpfende Schlüsselfeld (ID). Wie du die ComboBox in ein DataGrid integrieren kannst erfährst du hier: ![]() Freundliche Grüße |
Re: DBLookupComboBox bei neuer Dateneingabe
Hi marabu,
danke für die super Erklärung :) Mittlerweile habe ich das alles so eingestellt. Leider werden in der DBLookupComboBox immer noch keine Werte angezeigt... Irgendetwas scheint da immer noch nicht zu passen. Hast du noch eine Idee woran das liegen könnte? Wenn ich DBEdits mit den beiden Datasource Komponenten der Tables verbinde werden Daten angezeigt. Gruß Marcus |
Re: DBLookupComboBox bei neuer Dateneingabe
Zeig mal deine Einstellungen.
Ist Quelldataset aktiv? |
Re: DBLookupComboBox bei neuer Dateneingabe
Guten morgen mkinzler,
als Quelldataset meinst du die ADOTabel Komponente? Ich habe jetzt bei beiden Table Komponenten Active auf true gesetzt. Dann scheint es zu funktionieren :) Zumindest zeigen die Comboboxen die richtigen werte. Ich habe die DBKomponenten in einem Datenmodul. Sollte ich dort bei allen Komponenten "Active" auf true setzen? Geöffnet habe ich die Datensätze immer mit dem Open Befehl, ohne vorher active auf true zu setzen... |
Re: DBLookupComboBox bei neuer Dateneingabe
Das DataSet auf welches die ListSource zeigt muß natürlich geöffnet sein.
|
Re: DBLookupComboBox bei neuer Dateneingabe
Ja, ziemlich dumm von mir mit einer geschlossenen Datenmenge zu arbeiten... Naja, bin halt Anfänger. Wird aber schon besser :)
Kann ich ein KeyField vorgeben das standardmäßig angezeigt werden soll? |
Re: DBLookupComboBox bei neuer Dateneingabe
Angezeigt werden die Felder, welche du bei ListField einträgst. Über KeyField wird nur die Schlüsselbeziehung realisiert (Anreden.ID <-> Personen.ANR_ID).
Freundliche Grüße |
Re: DBLookupComboBox bei neuer Dateneingabe
Ähm, ich habe mich etwas undeutlich ausgedrückt. Ich meine das in der Combobox schon ein Wert drin steht. z.B. Datensatz Nummer x.
|
Re: DBLookupComboBox bei neuer Dateneingabe
Aber die Anzeige geschieht doch automatisch, sobald du die Komponente richtig konfiguriert hast. Oder meinst du beim Neuanlegen eines Datensatzes? Da musst du den gewünschten Anzeigewert im OnNewRecord-Ereignis der Personen-Tabelle vorgeben, indem du den richtigen Schlüsselwert in das entsprechende Feld einträgst.
Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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-2025 by Thomas Breitkreuz