Hallo Spezialisten!<BR>
Ich kämpfe z.Z. mit einem Bug in Delphi6 Ent. + SP2 und IBX, der eigentlich seit IBX4.1 behoben sein soll. Siehe Aussage:<BR>
Fixes/Changes since 4.0<BR>
g) CancelUpdates does not work with multiple Inserts in CachedUpdates mode.
<BR>
<BR>
Und genau dieses Problem gibt es wieder in IBX6. Habe alle Updates von 6.01 - 6.08 durchgespielt. Immer der gleiche negative Erfolg. Beim Einfügen von mehr als einem Datensatz und anschließdem 'CANCELUPDATES' gibts den Fehler. Es passiert beim REVERTRECORD in der Unit IbCustumDataSet.
<BR>
<PRE>
procedure TIBCustomDataSet.RevertRecord;
var
Buff: PRecordData;
begin
if FCachedUpdates and FUpdatesPending then
begin
Buff := PRecordData(GetActiveBuf);
(*
InternalRevertRecord(Buff^.rdRecordNumber);
// FEHLER: Buff^.rdRecordNumber mehreren Änderungen = -1!!
ReadRecordCache(Buff^.rdRecordNumber, PChar(Buff), False);
*)
// Reihenfolge getauscht
ReadRecordCache(Buff^.rdRecordNumber, PChar(Buff), False);
InternalRevertRecord(Buff^.rdRecordNumber);
DataEvent(deRecordChange, 0);
end;
end;
</PRE>
<BR>
<BR>
Der Aufruf von InternalRevertRecord liefert nach Ausführung -1 als RecordNummer, wonach ReadRecordCache logischerweise bugt.
Der Buff wird durch einen Resync aus der Unit DB neu (und falsch ???) geschreiben.
<BR>
Tausche ich die Reihenfolge der Aufrufe, schein es zu laufen. Aber ist das wirklich die Lösung??
<BR>
Antworten dringend erbeten!<BR>
<BR>
Gruß Gunnar
Ich kämpfe z.Z. mit einem Bug in Delphi6 Ent. + SP2 und IBX, der eigentlich seit IBX4.1 behoben sein soll. Siehe Aussage:<BR>
Fixes/Changes since 4.0<BR>
g) CancelUpdates does not work with multiple Inserts in CachedUpdates mode.
<BR>
<BR>
Und genau dieses Problem gibt es wieder in IBX6. Habe alle Updates von 6.01 - 6.08 durchgespielt. Immer der gleiche negative Erfolg. Beim Einfügen von mehr als einem Datensatz und anschließdem 'CANCELUPDATES' gibts den Fehler. Es passiert beim REVERTRECORD in der Unit IbCustumDataSet.
<BR>
<PRE>
procedure TIBCustomDataSet.RevertRecord;
var
Buff: PRecordData;
begin
if FCachedUpdates and FUpdatesPending then
begin
Buff := PRecordData(GetActiveBuf);
(*
InternalRevertRecord(Buff^.rdRecordNumber);
// FEHLER: Buff^.rdRecordNumber mehreren Änderungen = -1!!
ReadRecordCache(Buff^.rdRecordNumber, PChar(Buff), False);
*)
// Reihenfolge getauscht
ReadRecordCache(Buff^.rdRecordNumber, PChar(Buff), False);
InternalRevertRecord(Buff^.rdRecordNumber);
DataEvent(deRecordChange, 0);
end;
end;
</PRE>
<BR>
<BR>
Der Aufruf von InternalRevertRecord liefert nach Ausführung -1 als RecordNummer, wonach ReadRecordCache logischerweise bugt.
Der Buff wird durch einen Resync aus der Unit DB neu (und falsch ???) geschreiben.
<BR>
Tausche ich die Reihenfolge der Aufrufe, schein es zu laufen. Aber ist das wirklich die Lösung??
<BR>
Antworten dringend erbeten!<BR>
<BR>
Gruß Gunnar