Announcement

Collapse
No announcement yet.

DBGrid und Trigger

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DBGrid und Trigger

    <p>Ich habe folgendes Problem: Füge ich in meinem DBGrid einen neuen Datensatz
    ein, so wird der auf der Tabelle definierte Trigger nicht angestoßen und ich
    werde aufgefordert, die Werte manuell einzugeben.</p>
    <p>Wer kann helfen?</p>

  • #2
    Hallo,

    wie sieht der Trigger, die Tabellenstruktur und ein Aufrufbeispiel aus, mit dem dieser Effekt jederzeit reproduziert werden kann. Welche Datenbank wird verwendet

    Comment


    • #3
      Hallo!
      Also ich greife über die BDE auf eine Interbase zu. Der Trigger sieht so aus:
      begin
      if (new.id is null)
      then new.id = gen_id(FIBUSAETZE_gen,1);
      end
      Der Effect tritt beim einfachen Einfügen eines Datensatzes im DBGrid mit Shift + Einfg auf.
      Unter QuickDesk funktioniert das problemlos

      Comment


      • #4
        Hallo,

        das hat nichts mit dem Trigger zu tun. Ich vermute die folgende Ursache: <br>
        - Die Tabelle verwendete eine NOT NULL-Spalte, die erst im Trigger gefüllt wird. <br>
        - Delphi verwendet TField-Instanzen, deren Eigenschaft <b>Required</b> bei NOT NULL-Spalten der Datenmenge von Delphi automatisch auf True gesetzt wird. <br>
        - Bereits <b>vor</b> dem Abschicken der INSERT-Anweisung legt TField das Veto ein, da ein "Pflichtfeld" nicht ausgefüllt wurde. Der Aufruf erreicht somit erst gar nicht den InterBase, so dass auch der Trigger nicht zum Zuge kommt.<br>
        Um das Problem zu lösen, muss für die betreffenden Spalten (alias TField-Instanzen, die über den Feld-Editor angelegt wurden) im Objektinspektor die Eigenschaft Required auf False gesetzt werden

        Comment


        • #5
          Hallo!
          Ersteinmal danke für den Tip, daran wird es wohl liegen. Ich habe aber das Problem, das ich zur Laufzeit, abhängig von der Auswahl in einer Combobox, der Eigenschaft TableName meines TTable - Objects jeweils eine neue Tabelle zuweise, so das sich auch die Fieldseigenschaften regelmäßig ändern. Ich müsste also an dieser Stelle die Required - Eigenscahaft immer und für alle Felder auf False setzen und diese nur durch die Datenbank abfangen lassen. Wie kann ich das erreichen?
          Noch eine Frage. Ich bin Umsteiger von VB auf Delphi und werde mich ausschließlich mit der Entwicklung von Datenbankanwendungen beschäftigen. Welches Buch würden Sie mir empfehlen?

          Gruß Andreas Kädin

          Comment

          Working...
          X