AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi mehrere Tabellen gleichzietig löschen
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere Tabellen gleichzietig löschen

Ein Thema von Privateer3000 · begonnen am 19. Dez 2009 · letzter Beitrag vom 22. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

mehrere Tabellen gleichzietig löschen

  Alt 19. Dez 2009, 21:59
Datenbank: mdb • Zugriff über: ado
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?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: mehrere Tabellen gleichzietig löschen

  Alt 19. Dez 2009, 22:00
Wie viel wi8llst du denn löschen? Schreib die Tablenamen in eine Array und gehe das in einer Schleife durch.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: mehrere Tabellen gleichzietig löschen

  Alt 19. Dez 2009, 22:11
Na nur 6 Stück,
ist ja auch ne prinzipielle Frage, wie das geht.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: mehrere Tabellen gleichzietig löschen

  Alt 21. Dez 2009, 07:45
Hallo,

entweder es geht so

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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: mehrere Tabellen gleichzietig löschen

  Alt 22. Dez 2009, 06:06
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
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: mehrere Tabellen gleichzietig löschen

  Alt 22. Dez 2009, 06:35
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: mehrere Tabellen gleichzietig löschen

  Alt 22. Dez 2009, 06:53
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.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: mehrere Tabellen gleichzietig löschen

  Alt 22. Dez 2009, 07:07
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
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: mehrere Tabellen gleichzietig löschen

  Alt 22. Dez 2009, 08:20
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
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: mehrere Tabellen gleichzietig löschen

  Alt 22. Dez 2009, 08:28
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
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:36 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