Hallo !
Ich habe folgendes Problem:
Ich nutze 2 Interbase Datenbankobjekte, eines als Quelle und eines als Ziel für einen Kopiervorgang. Als Quelle nutze ich TIBQuery, als Ziel TIBTable. Das kopieren aller Felder geschieht folgendermaßen:
for i := 0 to DataModule1.IBTableCURTAB2.FieldCount -1 do begin<BR>
sField := DataModule1.IBQueryCURTAB2.Fields[i].FieldName;<BR>
DataModule2.IBTableCURTAB[sField] := DataModule1.IBQueryCURTAB2[sField];<BR>
end;<BR>
Funktioniert auch alles. Aber: die Anwendung alloziert Speicher. Und zwar genau soviel, wie in den Blobfeldern an Größe gespeichert ist. Dies liegt offenbar nicht am Ziel, da ich durch
DataModule2.IBTransaction2.Commit();<BR>
DataModule2.IBTableCURTAB.Active := FALSE;<BR>
DataModule2.IBTableCURTAB.Close;<BR>
if not DataModule2.IBTransaction2.InTransaction then<BR>
DataModule2.IBTransaction2.StartTransaction();<BR>
DataModule2.IBTableCURTAB.Open;<BR>
DataModule2.IBTableCURTAB.Active := TRUE;<BR>
die Tabelle regelmäßig schließe und wieder öffne. Der allozierte Speicher wird erst wieder freigegeben, wenn die Quelldatenbank schließe und wieder öffne. Frage: wie kann ich verhindern, daß für die Blobfelder in der Applikation der Speicher nicht wieder freigegeben wird?
Mfg
Joachim Logisch
Ich habe folgendes Problem:
Ich nutze 2 Interbase Datenbankobjekte, eines als Quelle und eines als Ziel für einen Kopiervorgang. Als Quelle nutze ich TIBQuery, als Ziel TIBTable. Das kopieren aller Felder geschieht folgendermaßen:
for i := 0 to DataModule1.IBTableCURTAB2.FieldCount -1 do begin<BR>
sField := DataModule1.IBQueryCURTAB2.Fields[i].FieldName;<BR>
DataModule2.IBTableCURTAB[sField] := DataModule1.IBQueryCURTAB2[sField];<BR>
end;<BR>
Funktioniert auch alles. Aber: die Anwendung alloziert Speicher. Und zwar genau soviel, wie in den Blobfeldern an Größe gespeichert ist. Dies liegt offenbar nicht am Ziel, da ich durch
DataModule2.IBTransaction2.Commit();<BR>
DataModule2.IBTableCURTAB.Active := FALSE;<BR>
DataModule2.IBTableCURTAB.Close;<BR>
if not DataModule2.IBTransaction2.InTransaction then<BR>
DataModule2.IBTransaction2.StartTransaction();<BR>
DataModule2.IBTableCURTAB.Open;<BR>
DataModule2.IBTableCURTAB.Active := TRUE;<BR>
die Tabelle regelmäßig schließe und wieder öffne. Der allozierte Speicher wird erst wieder freigegeben, wenn die Quelldatenbank schließe und wieder öffne. Frage: wie kann ich verhindern, daß für die Blobfelder in der Applikation der Speicher nicht wieder freigegeben wird?
Mfg
Joachim Logisch
Comment