Einzelnen Beitrag anzeigen

mapolat

Registriert seit: 1. Mär 2005
Ort: Wuppertal
4 Beiträge
 
#1

Probleme mit .edit und .post auf eine mySQL Tabelle

  Alt 1. Mär 2005, 08:20
Datenbank: mySQL • Version: 4.1.08 • Zugriff über: ZEOS 6.5.1 oder ADO
Habe Probleme mit TTabel.Post. Beim ausführen des "Post" Befehls auf eine mySQL Tabelle (mit und ohne ZEOS 6.5.1 Komponente) wird die Felhlermeldung : "Tabelle weder im Einfüge- noch Editier- Modus!". Komme einfach nicht mehr weiter und brauche dringend Hilfe. (evtl krz. Beschreibung welche Befehle man zum editieren auf jeden Fall benutzen müsste (.edit, .commit, .update, .updateRecords?????)

Ich habe zwar gefunden wo genau dieses Problem verursacht wird, weiss aber immer noch nicht warum und wie ich es beheben könnte.

Das formular hat 3 tabellen die miteinander in der Tabellen-Eigenschaften über Master-Detail verknüpft sind. Tabelle1 ist Master Tabelle vom Tabelle2. Tabelle3 ist wiederum die Detail-Tabelle vom Tabelle2.

Nun zum besseren Fehlerbeschreibung : Tabelle1, Tabelle2, Tabelle3 sind alle active, also Status = Open. Wird es im Tabelle 3 eine Änderung vorgenommen so wird im "After.Post" eigenschaft diese änderung an Tabelle2 übergeben wo dann der Fahler passiert.

Delphi-Quellcode:
procedure TFrm_01.BTN_1Click(Sender: TObject);
begin
  Tabelle_3.Edit;
  Tabelle_3.FieldByName('Zahl_1').Value := 3;
  Tabelle_3.FieldByName('Zahl_2').Value := 5;
  Tabelle_3.FieldByName('Zahl_3').Value := 11;
  if MessageBox(0, 'Möchten Sie die Änderungen wirklich übernehmen?', 'WARNUNG', MB_YESNO) = IDYES then
    Tabelle_3.Post
  else Tabelle_3.Cancel;
end;
 
procedure TFrm_01.Tabelle_3AfterPost(DataSet: TDataSet);
var Summe_1, Summe_2, Summe_3 : integer;
begin
  Summe_1 := 0;
  Summe_2 := 0;
  Summe_3 := 0;
 
  with Tabelle_3 do
  begin
    first;
    while not EOF do
    begin
      Summe_1 := Summe_1 + FieldByName('Zahl_1').AsInteger;
      Summe_2 := Summe_2 + FieldByName('Zahl_2').AsInteger;
      Summe_3 := Summe_3 + FieldByName('Zahl_3').AsInteger;
      next;
    end;
  end;

  Tabelle_2.Edit;
// Tabelle 2 ist hier in Tabelle_2.State = dsEdit - soweit noch alles OK.
 
  Tabelle_2.FieldByName('DetailSumme_1').asVariant := Summe_1;
// alles noch im grünen Bereich. 1.Wertzuweisung wird noch übernommen

// Hier (nach dem 1. Wertzuweisung) aber passiert der Fehler..
// Hier springt die Tabelle 2 unerwünscht und für mich unerklärlich auf Tabelle_2.State = dsBrowse

  Tabelle_2.FieldByName('DetailSumme_2').asVariant := Summe_2;
  Tabelle_2.FieldByName('DetailSumme_3').asVariant := Summe_3;
// diese beiden Wertzuweisungen werden nicht mehr übernommen da Tabelle_3 im dsBrowse Status ist.

  Tabelle_2.Post;
// während der post ausführung kommt dann die Fehlermeldung "Tabelle_2 weder in EDIT- noch in INSERT- Modus !"
end;
  Mit Zitat antworten Zitat