Registriert seit: 23. Apr 2007
5 Beiträge
|
Re: unbekanntes Speicherleck (BDE / MS-SQL)
25. Apr 2007, 13:02
Zitat von mkinzler:
Zitat:
.. und Freigeben muss ich doch, wenn ich die Prozedur sauber abschließen möchte... oder?
Die Form ist ja der Besitzer und erledigt das für dich oder wird der Query öfters ausgeführt?
Ja richtig... das Createn der Query geschieht beim Starten der Applikation und das Destroyen wird nach dem Vorgang ausgeführt.
Das Problem mit dem Speicherleck bleibt aber weiterhin bestehen... und es tritt nur auf, wenn beim Wiederherstellen der Extracode ausgeführt wird
Delphi-Quellcode:
{ extra attendance }
If TableID = ' TagesLeistungen21' then
try
DBCheckQuery.SQL.Clear;
{DBCheckQuery.SQL.Add(Format(
'SELECT ProjektNummer, Bereich FROM TeilProjekte' + #13#10 +
'WHERE PK_TProjekt IN (SELECT PK_TProjekt FROM TagesLeistungen WHERE PK_TagLeistung = %s)',
[DBQueryArchive.Fields[0].AsString]));
DBCheckQuery.Open;
DBCheckQuery.First;
Result := Format('(SELECT MIN(PK_TProjekt) FROM TeilProjekte WHERE ProjektNummer=%s AND Bereich=%s)',
[VerifyData(DBCheckQuery.Fields[0]), VerifyData(DBCheckQuery.Fields[1])]);
DBCheckQuery.Close;}
DBCheckQuery.SQL.Add(' SELECT MIN(PK_TProjekt) FROM TagesLeistungen WHERE PK_TagLeistung = ' +
DBQueryArchive.Fields[0].AsString);
DBCheckQuery.Open;
DBCheckQuery.First;
temp := DBQueryArchive.Fields[0].AsString;
DBCheckQuery.Close;
DBCheckQuery.SQL.Clear;
DBCheckQuery.SQL.Add(' SELECT ProjektNummer, Bereich FROM TeilProjekte' + #13#10 +
' WHERE PK_TProjekt = ' + temp);
DBCheckQuery.Open;
DBCheckQuery.First;
Result := Format(' (SELECT MIN(PK_TProjekt) FROM TeilProjekte WHERE ProjektNummer=%s AND Bereich=%s)',
[VerifyData(DBCheckQuery.Fields[0]), VerifyData(DBCheckQuery.Fields[1])]);
DBCheckQuery.Close;
exit;
except
on E: Exception do
begin
Result := ' -1';
DoLog(' Validierung: (' + TableID + ' ) - ' + E. Message, 11);
DoLog(' Validierung: >Query:' + DBCheckQuery.SQL.Text, 11);
end;
end;
If TableID = ' TagesLeistungen31' then
try
DBCheckQuery.SQL.Clear;
{DBCheckQuery.SQL.Add(Format(
'SELECT LeistungsNr, Bereich FROM TeilLeistungen' + #13#10 +
'WHERE PK_TLeistung IN (SELECT PK_TLeistung FROM TagesLeistungen WHERE PK_TagLeistung = %s)',
[DBQueryArchive.Fields[0].AsString]));
DBCheckQuery.Open;
DBCheckQuery.First;
Result := Format('(SELECT MIN(PK_TLeistung) FROM TeilLeistungen WHERE LeistungsNr=%s AND Bereich=%s)',
[VerifyData(DBCheckQuery.Fields[0]), VerifyData(DBCheckQuery.Fields[1])]);
DBCheckQuery.Close;}
DBCheckQuery.SQL.Add(' SELECT MIN(PK_TLeistung) FROM TagesLeistungen WHERE PK_TagLeistung = ' +
DBQueryArchive.Fields[0].AsString);
DBCheckQuery.Open;
DBCheckQuery.First;
temp := DBQueryArchive.Fields[0].AsString;
DBCheckQuery.Close;
DBCheckQuery.SQL.Clear;
DBCheckQuery.SQL.Add(' SELECT LeistungsNr, Bereich FROM TeilLeistungen' + #13#10 +
' WHERE PK_TLeistung = ' + temp);
DBCheckQuery.Open;
DBCheckQuery.First;
Result := Format(' (SELECT MIN(PK_TLeistung) FROM TeilLeistungen WHERE LeistungsNr=%s AND Bereich=%s)',
[VerifyData(DBCheckQuery.Fields[0]), VerifyData(DBCheckQuery.Fields[1])]);
DBCheckQuery.Close;
exit;
except
on E: Exception do
begin
Result := ' -1';
DoLog(' Validierung: (' + TableID + ' ) - ' + E. Message, 11);
DoLog(' Validierung: >Query:' + DBCheckQuery.SQL.Text, 11);
end;
end;
{ extra attendance }
Grüße, Spawn
|
|
Zitat
|