Announcement

Collapse
No announcement yet.

"Zu viele Zeilen von der Aktualisierung betroffen"

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

  • "Zu viele Zeilen von der Aktualisierung betroffen"

    Hallo Leute!

    Ich hab ein ziemlich vertracktes Problem: Ich hab ein DBGrid, das über eine eigene DataSource, ein eigenes ADOTable und eine allgemeine ADOConnection auf eine Access2000 DB zugreift. Das Table das dargestellt wird besteht aus zwei Feldern: Time und Execute, beides vom Typ Text.
    (Dieses Table soll einen Scheduler füttern). Primärschlüssel hat das Table bewusst keinen. Angezeigt wird alles wunderbar, und auch die anderen Tables
    in der Datenbank kann ich perfekt lesen und schreiben (von andern Programmstellen aus).

    Aber jetzt das Problem: Sobald ich einen Wert ändere, und dann die Zelle verlasse, krieg ich diese Exception:

    EOleException with message <b>'Die Schlüsselspalteninformationen sind ungenügend oder inkorrekt. Es sind zu viele Zeilen von der Aktualisierung betroffen'.</b>

    Die Änderungen werden eigentlich erst beim Klick auf einen OK Button gepostet, aber diese Meldung kommt offensichtlich von Access, was ist da los, warum werden die Änderungen schon übermittelt? Und was soll ich mit dieser Fehlermeldung anfangen?

    Wäre froh um ein paar hilfreiche Tips!

    Gruss Lukas

    P.S. Hier ist noch der wichtige Code von der betroffenen Form, falls noch etwas unklar ist:

    <pre>
    procedure TSchedulerForm.DBGridSchedulerEditButtonClick(Send er: TObject);
    begin
    TimerExForm.Show;
    end;

    procedure TSchedulerForm.OKBtnClick(Sender: TObject);
    begin
    ADOTableScheduler.Post;
    SchedulerForm.Close;
    end;

    procedure TSchedulerForm.CancelBtnClick(Sender: TObject);
    begin
    ADOTableScheduler.Cancel;
    SchedulerForm.Close;
    end;

    procedure TSchedulerForm.FormShow(Sender: TObject);
    begin
    MainForm.ADOConnection.Open;
    ADOTableScheduler.Open;
    ADOTableScheduler.Edit;
    end;</pre>

  • #2
    Hallo,

    &gt;Primärschlüssel hat das Table bewusst keinen

    damit nimmt man als Entwickler die o.g. Probleme <b>bewusst in Kauf</b>. Ich würde folgendes probieren: <br>
    - TADOTable durch TADODataSet ersetzen<br>
    - <b>clUseServer</b> für TADOConnection/TADODataSet verwenden <br>
    - TADODataSet-Eigenschaft CommandType auf <b>cmdTableDirect</b> setze

    Comment

    Working...
    X