Announcement

Collapse
No announcement yet.

Ersatz für TQuery.CachedUpdate in ADO ?

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

  • Ersatz für TQuery.CachedUpdate in ADO ?

    Hallo zusammen,

    wir portieren eine Anwendung von BDE nach ADO.
    -Delphi 5 Enterprise (Ado-Updates)
    -Win2K
    -MS SQL Server 2K

    Welchen Ersatz gibt es in ADO für CachedUpdates?
    LockType "ltBatchOptimistic" macht Probleme.
    Wir möchten eigentlich umgehen, dass die Daten in einer lokalen Datei zwischengespeichert, und dann wieder ausgelesen werden müssen. (siehe "ADO und Delphi" von Andreas Kosch).

    Wenn lediglich LockType auf "ltBatchOptimistic" eingestellt wurde beschwert sich das DataSet bei Änderungen, dass verschiedene "Pflichtfelder" keinen Wert haben. "Pflichtfelder" wurden aber keine definiert.

    CursorType ist auf ctStatic und CursorLocation auf clUseClient.

    Vielen Dank im voraus - Patrick

  • #2
    Hallo,

    auch die BDE greift bei CachedUpdates auf temporäre Tabellen (Paradox) zurück, denn die Datensätze müssen ja irgend wo gespeichert werden. Beim Recordset-Objekt von ADO kann man festlegen, wo diese Daten gespeichert werden: <br>
    a) Arbeitsspeicher (Default-Einstellung), oder <br>
    b) Datenbankdatei.

    &gt;.. "Pflichtfelder" wurden aber keine definiert.

    Wie sieht eine Beispiel-Tabelle auf dem MS SQL Server 2000 aus, mit dem dieses Problem jederzeit reproduziert werden kann? ADO liest auch die Schema-Daten der Datenbank aus, so dass dort festgelegte Regeln auch beim Recordset-Objekt greifen.

    Wenn zum Beispiel NOT NULL-Spalten in der Tabelle genutzt werden, muss das Programm den Wert bei jedem neuen Datensatz initialisieren:
    <pre>
    procedure TForm1.ADODataSet1NewRecord(DataSet: TDataSet);
    begin
    ADODataSet1.FieldByName('Wert1').Value := '';
    end;
    </pre&gt

    Comment

    Working...
    X