Announcement

Collapse
No announcement yet.

SQLParams setzen bnötigt Transaction?

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

  • SQLParams setzen bnötigt Transaction?

    ich benutze eine TIBDataset mit einem Parameter für das Select Statment. Wenn ich diesem Parameter einen Wert zuweisen will (im BeforeOpen-Event) geht das nur wenn die zuständige Transaktion aktiv ist. Das ist aber, wenn man dem default Mechanismus von IBX vertraut, zu diesem Zeitpunkt noch nicht der Fall. Mir ist auch nicht klar wieso zum setzen eines Parameters eines inaktiven DataSet eine Transaktion benötigt wird.<BR>
    Gibt es eine Möglichkeit dieses Problem zu umgehen?<BR>
    frohes Fest Peter

  • #2
    Hallo,

    ein Client kann nur im Kontext einer Transaktion auf eine InterBase-Datenbank zugreifen (dies gilt auch für SELECT-Abfragen auf Benutzer- und System-Tabellen). Bei den IBX-Komponenten sollte man zudem auf die automatisch gestarteten Transaktionen verzichten (je nach IBX-Version gibt es da den einen oder anderen Bug). Ich würde daher in der Ereignisbehandlungsmethode für BeforeOpen zuerst den Aufruf <i>IBDataSet1.Transaction.StartTransaction</i> absetzen und somit definierte (saubere) Verhältnisse schaffen. Wenn dann IBX die System-Tabellen des InterBase abfragt, passiert dies in einem gültigen Transaktionskontext.
    &#10

    Comment


    • #3
      Grundsätzlich stimme ich zu und habe das Problem auch so gelöst, obwohl die Transaktionsmacken hier keine Rolle gespielt hätten.<BR>
      Ein Frage bleibt für mich trotzdem: Wo werden die Parameter einer <b>inaktiven</b>IBX-DataSet eigentlich verwaltete? Ich hätte erwartet, das der Zugriff auf den Interbase erst beim aktivieren erfolgt und damit auch dann erst eine Transaktion erforderlich ist

      Comment


      • #4
        DIe Parameter eines sql Statements werden mit hilfe eine Prepare (automatisch) bestimmt, wenn die Parameter angesprochen werden. Die Datenbank liefert dann eine Liste der Parameter im SQL Statement, parst also. Für diese Aktion bedarf es den Kontext einer Transaktion

        Comment

        Working...
        X