Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi mehrere Tabellen gleichzietig löschen (https://www.delphipraxis.net/144920-mehrere-tabellen-gleichzietig-loeschen.html)

Privateer3000 19. Dez 2009 21:59

Datenbank: mdb • Zugriff über: ado

mehrere Tabellen gleichzietig löschen
 
Hiho Leute,

um mehrere Tabellen zu löschen, wie geht man da vor?
Muss jedesmal für eine Tabelle ein SQLString gesendet und mit ExecSQL abgeschlossen werden?
Oder geht das kompakter?

Luckie 19. Dez 2009 22:00

Re: mehrere Tabellen gleichzietig löschen
 
Wie viel wi8llst du denn löschen? Schreib die Tablenamen in eine Array und gehe das in einer Schleife durch.

Privateer3000 19. Dez 2009 22:11

Re: mehrere Tabellen gleichzietig löschen
 
Na nur 6 Stück,
ist ja auch ne prinzipielle Frage, wie das geht.

hoika 21. Dez 2009 07:45

Re: mehrere Tabellen gleichzietig löschen
 
Hallo,

entweder es geht so

SQL-Code:
Drop Table Table1; Drop Table Table2;

die einzelnen Befehle also mit Semikolon getrennt,
oder wie du es bereits gesagt hattest.

Das ist einfach DB-abhängig.


Heiko

Privateer3000 22. Dez 2009 06:06

Re: mehrere Tabellen gleichzietig löschen
 
Hallöchen,

nach dem löschen bleibt die DB Größe unverandert.
Also müssen sicherlich noch Leichen im Keller
gelöscht werden.
Wie wird das mit ADO KOmpo gehändelt, die Syntax dazu?

Grüße

SirThornberry 22. Dez 2009 06:35

Re: mehrere Tabellen gleichzietig löschen
 
Das hat nichts mit Leichen zu tun sondern mit einer Fragmentierung. Wenn jedesmal beim löschen eines Datensatzes oder dergleichen alle folgenden Datensätze in der Dateistruktur verschoben würden, wäre eine Datenbank recht langsam. Daher bleibt die Datei in aller Regel bei ihrer Größe, sollte aber auch nicht anwachsen wenn neue Datensätze dazu kommen sofern diese in die Lücken der gelöschten Daten passen.
Ich glaube mit "optimize" kann man unter anderem das Defragmentieren erreichen.

Privateer3000 22. Dez 2009 06:53

Re: mehrere Tabellen gleichzietig löschen
 
Dankeschön für den Hinweis

Im Access selbst gibt es den Punkt Datenbank komprimieren und reparieren
Dies führt die gewünschte Aktion aus.
Nur weiß ich nicht welches SQL Statemant dafür notwendig ist.

mkinzler 22. Dez 2009 07:07

Re: mehrere Tabellen gleichzietig löschen
 
Man sollte sich das auch sehr gut überlegen. In den meisten Fällen ist dies kontraproduktiv, da für die Vergrößerunge einer Datei mehr Aufwand nötig ist, als beim "Lücken"füllen

Privateer3000 22. Dez 2009 08:20

Re: mehrere Tabellen gleichzietig löschen
 
Danke mkinzler
das verstehe ich nun nicht ganz.
Beispiel meine mdb Größe:17,6 MB
nach Drop Table und anschliessendem neuerstellen immer noch 17,6 MB
Mittels Access Oberfläche reparieren und komprimieren, danach 796kb
was wurde da vergrößert oder dazugenommen? wären die komprimierten theoretisch
wiederherstellbar?

Grüße

hoika 22. Dez 2009 08:28

Re: mehrere Tabellen gleichzietig löschen
 
Hallo,

Zitat:

Im Access selbst gibt es den Punkt Datenbank komprimieren und reparieren
Dies führt die gewünschte Aktion aus.
Nur weiß ich nicht welches SQL Statemant dafür notwendig ist.
Es gibt kein SQL-Statement dafür.
Such einfach mal in Google "compact access database through ado".
Das liefert u.a.

1

Auf jeden Fall die englische Seite nehmen ;)

Aber wie mein Vorschreiber schon gesagt hat,
macht es keinen Sinn, eine DB nach dem Löschen
von "ein paar Daten" zu komprimieren.
Eine DB ist auf Wachstum ausgelegt.
Durch Löschen entstandene Lücken werden durch die DB
größtenteils selber wieder mit neuen Daten aufgefüllt.

Und mache das ganze nicht an dem Wort größtenteils fest.


Dazu ist übrigens auch exclusiver Zugriff notwendig,
was in der Regel nicht der Fall ist.
Ausserdem sollte man vorher eine Sicherheitskopie anlegen.


Zum Komprimieren heisst:
Alle Daten werden auf 4 kB Seiten verteilt.
Eine Seite bekommt immer nur Daten einer Tabelle.
Werden z.B. 6 kB Daten eingetragen, ergibt das u.U. 2 Seiten Belegung,
also 8 kB (2*4 kB). Wird jetzt eines der Daten gelöscht und z.B. 1 kB neu hinzugrfügt,
werden immer noch 2 Seiten benutzt.
es würde aber 1 Seite reichen (3kB + 1kB).
Durch das Komprimieren werden die Daten in eine neue MDB in der optimalen Reihenfolge
(anderes Thema) geschrieben, es wird nur noch eine Seite benötigt (4 kB Daten, 4 kB Seite).
die MDB ist 4 kB kleiner.

Ausserdem werden die Indizes neu erzeugt (die liegen auch in 4 kB Seiten),
was den Speicherverbrauch auch reduzieren kann.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 Uhr.
Seite 1 von 2  1 2      

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