Einzelnen Beitrag anzeigen

PT_Spawn

Registriert seit: 23. Apr 2007
5 Beiträge
 
#5

Re: unbekanntes Speicherleck (BDE / MS-SQL)

  Alt 25. Apr 2007, 12: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 = 'TagesLeistungen21then
  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 = 'TagesLeistungen31then
  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
  Mit Zitat antworten Zitat