Entwickler-Ecke

Datenbanken - Datenbank lässt sich nicht schließen


SmileySN - So 05.11.06 13:11
Titel: Datenbank lässt sich nicht schließen
Um meine Access-Datenbank zu komprimieren muss ich diese natürlich erst schließen, damit ich exclusiv darauf zugreifen kann.
Trotz schließen aller Tabellen und schließen der ADOConnection geht sie nicht ganz zu.
Man sieht es schon an der .ldb Datei die immer noch neben der .mdb Datei vorhanden ist.

In einem anderen kleineren Programm von mir funktioniert das ohne Probleme, aber in dem Programm das ich derzeit bearbeite will das einfac nicht so funktionieren.

Hat noch jemand eine Idee, was ich übersehen habe ?

Hier der Code zum schließen der DB.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
//******************************************************************************
//********************** DB komprimieren ***************************************
//******************************************************************************
Procedure TForm1.Datenbankkomprimieren1Click(Sender: TObject);
Var
  ProgPath, DBName: String;

Begin
  DM1.QStamm.Close;
  DM1.QHersteller.Close;
  DM1.QAufmachung.Close;
  DM1.QMaterial.Close;
  DM1.QFarbe.Close;
  DM1.QGeraet.Close;
  DM1.QWork.Close;
  DM1.QSuchen.Close;
  DM1.QVorgaben.close;

  DM1.ADOC.Connected:=False;

  ProgPath := ExtractFilePath(paramstr(0));
  DBName := ProgPath + 'Daten\EcoPrl.mdb';

  Access_Compact(DBName);
  Showmessage('Bitte starten Sie das Programm neu');
  Halt;
End;


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt


MisterBum83 - So 05.11.06 14:00
Titel: Re: Datenbank lässt sich nicht schließen
user profile iconSmileySN hat folgendes geschrieben:


Delphi-Quelltext
1:
  DM1.ADOC.Connected:=False;                    


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt


Versuch mal anstelle von dem da oben:


Delphi-Quelltext
1:
ADOConnection1.Close;                    


SmileySN - So 05.11.06 14:20

Danke für den Tip, das habe ich auch schon probiert.


Delete - So 05.11.06 14:25

hallo smileySN,

schon mal mit DM1.free; resp.  DM1.ADOC.free; probiert? da dürfte dann nichts mehr da sein was sperren könnt.

BTW: könntest auch kompremieren bevor du deine tabellen und deine tabellen öffnest.

HTH


SmileySN - So 05.11.06 14:30

Jetzt habe ich den Fehler gefunden.
In einer der Queries war im Objektinspector die Eigenschaft Connection nicht auf ADOC gesetzt.
Es wurde nur der ConnectionString zusammengesetzt und übergeben.
Dadurch hat er zwei verschiedene Connections aufgemacht.