Announcement

Collapse
No announcement yet.

...Fehler bei einem aus mehreren Schritten bestehenden Vorgang

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

  • ...Fehler bei einem aus mehreren Schritten bestehenden Vorgang

    Hallo,<br><br>mir fehlen jetzt die Such-Ideen für diesen Fehler:<br><br>
    <b>Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte.</b>
    <br><br>
    Ich versuche Datensätze zu <b><i>bearbeiten, hinzuzufügen,...</b> Fehlschlag !<br><br><b>Löschen</b></i> funktioniert, s. unten !
    <br><br>
    ich benutze den SQL-Server 7.0 SP2 <i>Provider=SQLOLEDB.1</i>, ein <i>TADOConnection</i>, <i>TADODataSet</i>, <i>TDataSource</i> mit den üblichen <i>TDBEdit</i><br><br>
    Auszug aus dem DataModule:<br><br>
    <font face="Courier New, Arial" size="2">
    object DMOPS02: TDMOPS02<br>
    &nbsp; OldCreateOrder = False<br>
    &nbsp; OnCreate = DataModuleCreate<br>
    &nbsp; Left = 275<br>
    &nbsp; Top = 172<br>
    &nbsp; Height = 480<br>
    &nbsp; Width = 696<br>
    &nbsp; object ADODataSet: TADODataSet<br>
    &nbsp;&nbsp; Connection = DModule.ADOConnection<br>
    &nbsp;&nbsp; CursorType = ctStatic<br>
    &nbsp;&nbsp; Parameters = <><br>
    &nbsp;&nbsp; Left = 180<br>
    &nbsp;&nbsp; Top = 38<br>
    &nbsp; end<br>
    &nbsp; object DataSource: TDataSource<br>
    &nbsp;&nbsp; DataSet = ADODataSet<br>
    &nbsp;&nbsp; Left = 284<br>
    &nbsp;&nbsp; Top = 36<br>
    &nbsp; end<br>
    end<br><br>
    </font>
    <br><br>
    Auszug aus meinem Protokoll:
    <br><br>
    <font face="Courier New, Arial" size="2">
    - ADO-Version: 2.6<br>
    &nbsp;&nbsp; -<br>
    &nbsp;&nbsp; -<br>
    - ADODataSetWillMove: esOK<br>
    - Reason: erMove<br>
    - ADODataSetMoveComplete: esOK<br>
    - Reason: erMove<br>
    - ADODataSetWillChangeRecord: esOK<br>
    <b>- Reason : erDelete</b><br>
    - RecordCount: 1<br>
    - ADODataSetRecordChangeComplete: esOK<br>
    - Reason: erDelete<br>
    - ADODataSetWillChangeRecord: esOK<br>
    - Reason : erUpdate<br>
    - RecordCount: 1<br>
    - ADODataSetRecordChangeComplete: esOK<br>
    - Reason: erUpdate<br>
    - ADODataSetWillMove: esOK<br>
    - Reason: erMoveNext<br>
    &nbsp;&nbsp; -<br>
    &nbsp;&nbsp; -<br>
    - ADODataSetMoveComplete: esOK<br>
    - Reason: erMove<br>
    - ADODataSetWillMove: esOK<br>
    - Reason: erMove<br>
    - ADODataSetMoveComplete: esOK<br>
    - Reason: erMove<br>
    - ADODataSetWillMove: esOK<br>
    - Reason: erMovePrevious<br>
    - ADODataSetMoveComplete: esOK<br>
    - Reason: erMovePrevious<br>
    - ADODataSetWillChangeRecord: esOK<br>
    - Reason: erFirstChange<br>
    - RecordCount: 1<br>
    - ADODataSetWillChangeField: esOK<br>
    - FieldCount: 1<br>
    - ADODataSetRecordChangeComplete: esErrorsOccured<br>
    - Reason: erFirstChange<br>
    - Error : <b><i>-2147217887, Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte.</i></b><br>
    ERROR: TDMOPSxx.ADODataSetPostError: Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte<br>
    &nbsp;&nbsp; -<br>
    &nbsp;&nbsp; -<br>
    - ADODataSetWillMove: esOK<br>
    - Reason: erMove<br>
    - ADODataSetWillChangeRecord: esOK<br>
    <b>- Reason : erAddNew<br></b>
    - RecordCount: 1<br>
    - ADODataSetRecordChangeComplete: esOK<br>
    - Reason: erAddNew<br>
    - ADODataSetMoveComplete: esOK<br>
    - Reason: erMove<br>
    - ADODataSetWillChangeField: esOK<br>
    - FieldCount: 1<br>
    - ADODataSetWillChangeField: esOK<br>
    - FieldCount: 1<br>
    - ADODataSetWillMove: esOK<br>
    - Reason: erMoveLast<br>
    - ADODataSetWillChangeRecord: esOK<br>
    - Reason : erUndoAddNew<br>
    - RecordCount: 1<br>
    - ADODataSetRecordChangeComplete: esOK<br>
    - Reason: erUndoAddNew<br>
    - ADODataSetMoveComplete: esOK<br>
    - Reason: erMoveLast<br>
    ERROR: TDMOPSxx.ADODataSetPostError: Fehler bei einem aus mehreren Schritten bestehenden Vorgang. Prüfen Sie die einzelnen Statuswerte<br>
    <br>
    </font>
    MfG<br>
    Adi

  • #2
    Hallo,

    ich würde folgendes machen: <br>
    a) Beim Auftreten des Problems die Einträge der <b>Errors</b>-Kollektion der TADOConnection-Instanz anzeigen lassen <br>
    <pre>
    with ADOConnectionSQLOLEDB do
    for iError := 0 to Errors.Count - 1 do
    sError := sError + Errors[iError].Description + #10#13;
    ShowMessage(sError);
    </pre>
    b) Den <i>Profiler</i> des Microsoft SQL Server dazu verwenden, um alle von ADO generierten SQL-Anweisungen mitzuprotokollieren

    Comment


    • #3
      Hallo,<br><br>ich habe festgestellt, dass in einem neuen Projekt mit folgenden Komponenten (mit TADOConnection,TADODataSet, TDataSource, TDBGrid, TNavigator) der Fehler folgender Masse auftritt.<br><br>Bei den ersten 2..10x <b><i>Datensatz hinzufügen</i></b> wird kein Fehler generiert, aber dann plötzlich ist er da. Erst nach <b><i>schliessen</i></b> des <b><i>TADODataSet</i></b>'s funktioniert es wieder einige Male.<br><br>Festgestellt habe ich noch, das trotz des Fehlers, der neu hinzugefügte Datensatz in der Datnebank angehängt wurde.<br><br>Folgendes habe ich noch probiert:<br>Als es wieder ohne Fehler funktionierte, <b>stoppte</b> ich den <b><i>MS-SQL-Server</i></b>. Ich konnte noch 2..3 Datensätze hinzufügen, dann war der gleiche Fehler wieder da.<br><br>MfG<br>Ad

      Comment


      • #4
        Hallo,<br><br>ich habe, glaube ich wenigstens, das Problem herausgefunden.<br><br>Ich habe bei der Tabellen-Definition folgende Defaultwerte drin:<br><br>
        <font face="Courier New, Arial" size="2">
        &nbsp; [STDELETED] [char] (1) NOT NULL DEFAULT "N",<br>
        &nbsp; [STERSTELLTVON] [char] (10) NOT NULL DEFAULT CURRENT_USER ,<br>
        &nbsp; [STERSTELLTAM] [datetime] NOT NULL DEFAULT CURRENT_TIMESTAMP ,<br>
        &nbsp; [STMUTIERTVON] [char] (10) NOT NULL DEFAULT CURRENT_USER ,<br>
        &nbsp; [STMUTIERTAM] [datetime] NOT NULL DEFAULT CURRENT_TIMESTAMP ,<br><br>
        </font>
        Wenn ich nun einen <b>Datensatz <i>bearbeite/hinzufüge</i></b>, lösen mir die Datensensitive Komponenten <b>TDBEdit, TDBText</b>, welche nicht vom Benutzer gefüllt werden (Bei TDBText für <i>STERSTELLTVON, STERSTELLTAM, STMUTIERTVON, STMUTIERTAM</i> macht es ja keinen Sinn), wird, wie weiter oben Beschrieben, den Fehler ausgelöst.<br><br>Werden diese Komponenten für die oben genannten Felder (Im <b>TDBGrid <i>nicht</i></b> miteinbezogen) abgehängt, klappt es. Ich bin aber mit einer solchen Lösung nicht ganz zufrieden.<br><br>Hat jemand einen Rat, wie dieses Problem auch etwas eleganter gelöst werden kann ?<br><br>MfG<br>Ad

        Comment


        • #5
          Hallo,

          ich gehe davon aus, dass jede Tabelle einen Primärschlüssel vom Typ INTEGER verwendet. Was passiert, wenn nach dem Öffnen der TADODataSet-Instanz die folgenden Anweisungen abgesetzt werden?
          <pre>
          with ADODataSet1.Recordset do
          begin
          Properties['Update Criteria'].Value := adCriteriaKey;
          Properties['Update Resync'].Value := adResyncAll;
          end;
          </pre&gt

          Comment


          • #6
            Hallo,<br><br>es hat sich nichts geändert.<br><br>MfG<br>Ad

            Comment


            • #7
              Hallo,<br><br>ich muss meine vorherige Antwort revidieren.<br><br>Ich habe die Tabelle auf die Existenz eines <b>Primary-Key</b> überprüft und dabei festgestellt, dass dieser fehlte. Nach anschliessendem Test funktionierte das <b><i>bearbeiten/hinzufügen</i></b> bis jetzt problemlos.<br><br>Danke !<br><br>MfG<br>Ad

              Comment

              Working...
              X