Announcement

Collapse
No announcement yet.

Wieder mal ein Transaktionsproblem...

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

  • Wieder mal ein Transaktionsproblem...

    Hallo,

    so langsam zweifele ich an meinem Verstand. Die Transaktion "trUpdateDruckM" hat die Eigenschaft "Snapshot". Beim Ausführen erhalte ich den Fehler "lock conflict on no wait transaction. Deadlock".

    Aber wieso? Sie wird doch manuell gestartet und beendet. Außer in der untenstehenden Prozedur wird sie nirgends aufgerufen.

    <pre>
    <b>procedure</b> TDruckAufforderungen.trUpdateDruckMStart(Sender: TObject);
    <b>begin</b>
    <b>if</b> trUpdateDruckM.Active = False <b>then</b> trUpdateDruckM.StartTransaction;
    <b>end</b>;</pre>
    <pre>
    <b>procedure</b> TDruckAufforderungen.DruckmarkierungK(Sender: TObject);
    <b>var</b> sD, sD30 :<b>String</b>;
    <b>begin</b>
    sD := DateToStr(Date);
    sD30 := DateToStr((Date) -30);</pre><pre>
    trUpdateDruckMStart(<b>nil</b>);
    Updater.SQL.Clear;
    Updater.SQL.Add('UPDATE TEILNAHMEN SET DRUCK_K = '''+sD+'''');
    Updater.SQL.Add('WHERE DRUCK_K <= '''+sD30+'''or DRUCK_K IS NULL');
    Updater.ExecSQL;
    <b>if</b> trUpdateDruckM.InTransaction = True <b>then</b> trUpdateDruckM.Commit;
    <b>end</b>;</pre>

    Bin für jeden Rat dankbar.

    Peter

  • #2
    Was laufen denn noch für Transaktionen und welche betreffen die gleichen Daten

    Comment


    • #3
      Hallo Andreas,

      ja, genau DAS war's dann auch. Da hatte sich doch eine nicht beendete Transaktion dazwischengemogelt.

      Problem ist also beseitigt, trotzdem vielen Dank. Habe leider schon wieder ein neues Problem:

      <b>Delphi/Allgemeines/Kompilierte Anwendung nicht ausführbar</b>
      <i>(Wie kriege ich denn eigentlich diesen Link hier eingefügt?)</i>

      Pete

      Comment


      • #4
        Einfach den Slash "/" nach ..forum.de in ein Backslash "\" ändern und den Text zwischen den Zwei @..@ entfernen (Logindaten):<br>
        http://www.entwickler-forum.de\webx?13@@.ee8c8a
        Schöne Grüße, Mario

        Comment


        • #5
          Entschuldige, aber wenn ich solchen Code sehe, gruselt es mich. Transaktionen sollen so kurz wie möglich offen sein. Also sollen Transaktionen immer folgendermaßen gekapselt werden:

          <pre>
          <code><font size=3 face="Courier New"><font color="#000000"> </font>DataBase.StartTransaction;
          <b>try
          </b><font color="#000080"><i>// Daten bearbeiten
          </i></font>DataBase.Commit;
          <b>except
          </b>DataBase.Rollback;
          <b>end</b>;
          </font>
          </code></pre&gt

          Comment

          Working...
          X