AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TQuery - Tabelle wird nicht geschlossen
Thema durchsuchen
Ansicht
Themen-Optionen

TQuery - Tabelle wird nicht geschlossen

Ein Thema von mandumoal · begonnen am 29. Jul 2004 · letzter Beitrag vom 1. Aug 2004
Antwort Antwort
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#1

TQuery - Tabelle wird nicht geschlossen

  Alt 29. Jul 2004, 15:40
Hallo!

Ich arbeite mit einem TAdsQuery [local] und versuche krampfhaft die geöffnete Tabelle wieder so "freizugeben", dass ich sie mittels DeleteFile löschen kann.

Ich habe schon alles? versucht:
Delphi-Quellcode:
Query.Close;
Query.Active := False;
AdsConnection.Disconnect;
aber er will einfach nicht gehen. Ich bekomme immer einen Fehler bei DeleteFile - Datei wird von einem anderen Programm benutzt...

Auch mit dem Öffnen einer anderen Tabelle Query.SQL.Text := 'SELECT * FROM AndereTabelle' konnte ich nichts anrichten, und bei
Query.DeleteTable; beschwert er sich, ich hätte nicht die Rechte das zu machen.

Wie kann ich also dem Query beibringen, es soll gefälligst die Tabelle loslassen?

mfg mandumoal
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: TQuery - Tabelle wird nicht geschlossen

  Alt 29. Jul 2004, 15:56
Zitat von mandumoal:
Datei wird von einem anderen Programm benutzt...
Evt. von dir selber? Hast du die Query schonmal im OI deaktiviert?
  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#3

Re: TQuery - Tabelle wird nicht geschlossen

  Alt 29. Jul 2004, 16:06
Ne, kann nicht sein, die Tabelle wird erst zur Laufzeit erstellt und auch von keinem anderen Query/Table verwendet.
-> im OI ist sie niemals Active

  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#4

Re: TQuery - Tabelle wird nicht geschlossen

  Alt 29. Jul 2004, 19:15
Könnte vielleicht mal jemand das was ich beschrieben habe ausprobieren?
Das wäre super!

Man muss im Prinzip nur eine Datenbank mit einem Query öffnen:
Delphi-Quellcode:
Query.SQL.Text := 'SELECT * FROM "' + NamederTabelle + '"';
Query.ExecSQL;
Query.Active := False;
if DeleteFile(NamederTabelle) then ShowMessage('Gelöscht') else ShowMessage('Noch da');
Das wäre es schon.
Wär sehr nett wenn es jemand ausprobieren könnte

(Oder natürlich einfach die Lösung hier posten , also wie ich die Tabelle wieder frei kriege)

mfg mandumoal
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TQuery - Tabelle wird nicht geschlossen

  Alt 31. Jul 2004, 14:30
Zitat von mandumoal:
Hallo!
Ich arbeite mit einem TAdsQuery [local] und versuche krampfhaft die geöffnete Tabelle wieder so "freizugeben", dass ich sie mittels DeleteFile löschen kann.
aber er will einfach nicht gehen. Ich bekomme immer einen Fehler bei DeleteFile - Datei wird von einem anderen Programm benutzt...
Wie kann ich also dem Query beibringen, es soll gefälligst die Tabelle loslassen?
Du musst das nicht dem Query, sondern dem ADS beibringen, denn der cached die Tabellen noch einige Zeit:

Delphi-Quellcode:
// Einbinden ADS Low-Level
uses ace;

// Alle Tabellen auf jeden Fall schliessen
Ace.AdsCacheopenCursors(0);
AdsConnection.CloseCachedTables;
AdsConnection.IsConnected := false;
// Wieder auf den im Treiber definierten Standardwert setzen
Ace.AdsCacheopenCursors(25);
Das schliesst aber alle Tabellen durch das IsConnected := false. Es gibt alternativ noch die Möglichkeit über SQL:
Delphi-Quellcode:
SQL.Clear;
SQL.Add('drop table '+sTableName);
try
   ExecSQL;
except
end;
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: TQuery - Tabelle wird nicht geschlossen

  Alt 1. Aug 2004, 23:11
Zitat von Union:
Es gibt alternativ noch die Möglichkeit über SQL:
Delphi-Quellcode:
SQL.Clear;
SQL.Add('drop table '+sTableName);
try
   ExecSQL;
except
end;
Das dürfte dann nicht nur auf dem "großen Bruder" des ALS laufen, sondern auch auf allen anderen DBs.

Besser als das brachiale Löschen von Dateien ist es auf jeden Fall.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz