Wie kann ich mit einer DBLookupComboBox wählen Sie eine foreign key-Wert, ohne sofort die änderung der Ziel-Tabelle? (Delphi 5 Pro)

Basis-Szenario:

  1. Benutzer klickt auf 'Position Bearbeiten'
  2. Bearbeiten-dialog öffnet sich
  3. Einem Kombinationsfeld "Artikel-Typ" sollte gefüllt werden mit Gegenständen in form einer Tabelle 'item_type'. Die combobox anzeigen soll 'item_type.Namen', aber auch wissen über 'item_type.id'
  4. Benutzer bearbeitet andere Sache Sachen und wählt ein Element geben, klickt dann auf ok
  5. Mein Programm hat einige input-Validierung
  6. wenn alles ok ist, bekommen die 'item_type.id " aus der combo-Element, und speichern Sie die foreign-key-Spalte in der positionstabelle ('Element.fk_item_type').

Wenn ich sehe, dass diese Komponente korrekt, ich sollte DataSource auf die Ziel-Tabelle "Artikel" und DataField auf 'Element.fk_item_type'. Aber das würde sofort Bearbeiten meiner Artikel-Tabelle, bevor ich die chance bekommen, die Validierung aller anderen Eingang.

Es fühlt sich an wie ich bin hier etwas fehlt. Irgendwo habe ich gelesen, dass ich eine klassische ComboBox und füllen Sie es manuell aus. Aber dann verstehe ich nicht, wie man die id des ausgewählten Elements.

Danke für jegliche Hinweise.

Bearbeiten:
Ich bin langsam den Verdacht, dass vielleicht fehlt mir eine grundlegende Sache. Alle diese DB* Komponenten, tun Sie das laden von Werten aus, die automatisch in die Datenbank, aber ich habe zu nennen, Post() für mich? Sie bedeutet nicht automatisch eine änderung der Werte in der Datenbank?

  • Man könnte hinzufügen, eine OnValidate - Ereignis item.fk_item_type Feld
  • ein claasic ComboBox könnte gefüllt werden mit Gegenständen.AddObject(Anzeigetext,TObject(ID)) ... aber man kann auch mit TDBlookupComboBox ohne Zuordnung Datasource und Datafield, und verwenden Sie die Eigenschaft KeyValue für die manuelle Zuordnung zu posten.fk_item_type.
  • Ich sehe nicht, wo ich es kann "ein Ereignis hinzufügen, um mein Feld". Redest du von einem Datenbank-trigger? Ich bin nicht zu sehen, eine Veranstaltung namens "OnValidate" in der Liste der Ereignisse für die DBLookupComboBox.
  • Ich wusste nicht über Gegenstände.AddObject, das klingt interessant. Ich habe bereits versucht, nicht die Zuordnung der DataSource/DataField, dann aber nichts angezeigt im edit-Feld (nur in der dropdown-Liste).
  • Die Eigenschaft kann gefunden werden auf Ihrem Feld im dataset
  • Nicht zu sehen, es. Ich bin mit TDataSource und TADOTable.
  • lassen Sie uns weiter, diese Diskussion im chat

Schreibe einen Kommentar