Announcement

Collapse
No announcement yet.

Aktualisierung der Generator-ID beim Client

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

  • Aktualisierung der Generator-ID beim Client

    Hallo,

    Zuerst der Sachverhalt:
    Ich habe eine Tabelle, in welcher Personen gespeichert werden. Als Primary Key wird ein Generator verwendet, welcher automatisch über einen Trigger gesteuert wird und immer automatisch beim Anlegen eines neuen Datensatzes um 1 hochgezählt wird.

    Die Client-Anwendung (D5, IBX 4.52), über welche die Personen gepflegt werden, habe ich mit einem TDBGrid, einer TDBNavigator und einer TDataSet-Komponente ausgestattet.

    Nun zum Problem:
    Wenn ich eine neue Person über den "+"-Button der Navigator-Komponente anlege, wird der Datensatz gespeichert und im DBGrid werden alle Felder, mit Ausnahme des Primary Keys (Generator-ID), aktualisiert.
    Wie bekomme ich es hin, daß im DBGrid auch die Generator-ID aktualisiert wird ?

    Grüsse,
    Carsten

  • #2
    Welche Version von FB?
    Du könntest den Wert vom Client setzen lassen.

    Comment


    • #3
      Es handelt sich um FB 1.5.

      > Du könntest den Wert vom Client setzen lassen.
      Wie meinst Du das genau ? Meinst Du, ich müßte an dem bestehenden Verfahren mit der Generator-ID, welche über einen Trigger ermittelt wird, etwas ändern ?

      Comment


      • #4
        Hi Carsten,

        mit IBX kannst du auf das Published Property GeneratorField zurückgreifen (TIBDataSet). Damit wird die ID vom Client erzeugt und ist somit verfügbar.
        Der Trigger sollte die ID nur setzten, wenn diese NULL ist, damit es auch funktioniert.
        Andere Zugriffskomponenten wie IBO beherrschen die Synchronisation mit dem Server.

        Cu, Frank

        Comment


        • #5
          Hi Frank,

          Im TIBDataset-Objekt habe ich bereits die Eigenschaft "GeneratorField" verwendet. Jedoch lautet meine Einstellung bislang "Ereignis auslösen auf dem Server".

          Wenn ich Dich richtig verstehe, sollte ich diese Einstellung in "Ereignis auslösen bei neuem Satz" abändern und zugleich den Trigger in der Datenbank so anpassen, daß er die Generator-ID nur dann setzt, wenn diese NULL ist, richtig?

          P.S.: Welche IBX-Version empfiehlst Du für D5 ?

          Comment


          • #6
            Wenn ich Dich richtig verstehe, sollte ich diese Einstellung in "Ereignis auslösen bei neuem Satz" abändern und zugleich den Trigger in der Datenbank so anpassen, daß er die Generator-ID nur dann setzt, wenn diese NULL ist, richtig?
            Ja, das hast du richtig verstanden

            Comment


            • #7
              Originally posted by Carsten Schmitz View Post

              P.S.: Welche IBX-Version empfiehlst Du für D5 ?
              Hi Carsten,

              da ich schon vor Jahren auf IBO umgestiegen bin, kann ich dir dazu keinen Rat geben.
              Auf jeden Fall sollte der Trigger etwa so aussehen:
              Code:
               IF (NEW.ID IS NULL) THEN
                 NEW.ID = GEN_ID(GEN_ADRESSE_ID,1);
              Bei Benutzung von Generatorfield passiert sonst (ohne Abfrage auf null) folgendes:
              TIBDataSet generiert die ID 1.
              Im Trigger wird diese dann auf die 2 gesetzt.
              Deine Datenmenge (TIBDataSet) hat noch die 1 als PK, tatsächlich ist PK die 2 und schon ist der Salat fertig!

              Cu, Frank

              Comment

              Working...
              X