ERLEDIGT - Access 2000 - Daten in andere Tabelle verlagern
Hallo zusammen.
Folgende Situation:
Wir haben hier eine Access2000 MDB-Datei, in der verschiedene Lagerdaten erfasst werden. In einer der Tabellen sind diese Daten bereits über einen längeren Zeitraum erfasst worden und mit der Zeit hat sich da einiges angesammelt. Auch die Geschwindigkeit von Abfragen wird schon beeinträchtigt.
Daher sollen alte Daten (Datum wurde als entsprechender Felddatentyp mit gespeichert) in eine identisch aufgebaute "Ablage"-Tabelle ausgelagert werden.
Ein Kollege hatte das bereits einmal gemacht, der Mann ist aber leider die nächsten paar Wochen im Urlaub und steht nicht zur Verfügung. Ich weiß, dass er dafür kein VBA verwendet hat. Ich könnte mir noch vorstellen, dass er zwei separate Abfragen gemacht hat. Eine zum Kopieren der Daten in die Ablage und eine um aus der Haupttabelle den alten Kram zu löschen. Wie das mit dem Kopieren aber funktionieren könnte weiß ich nicht.
Gibt es für sowas überhaupt eine Möglichkeit in SQL oder hat jemand vielleicht sogar eine viel bessere Idee?
Folgende Situation:
Wir haben hier eine Access2000 MDB-Datei, in der verschiedene Lagerdaten erfasst werden. In einer der Tabellen sind diese Daten bereits über einen längeren Zeitraum erfasst worden und mit der Zeit hat sich da einiges angesammelt. Auch die Geschwindigkeit von Abfragen wird schon beeinträchtigt.
Daher sollen alte Daten (Datum wurde als entsprechender Felddatentyp mit gespeichert) in eine identisch aufgebaute "Ablage"-Tabelle ausgelagert werden.
Ein Kollege hatte das bereits einmal gemacht, der Mann ist aber leider die nächsten paar Wochen im Urlaub und steht nicht zur Verfügung. Ich weiß, dass er dafür kein VBA verwendet hat. Ich könnte mir noch vorstellen, dass er zwei separate Abfragen gemacht hat. Eine zum Kopieren der Daten in die Ablage und eine um aus der Haupttabelle den alten Kram zu löschen. Wie das mit dem Kopieren aber funktionieren könnte weiß ich nicht.
Gibt es für sowas überhaupt eine Möglichkeit in SQL oder hat jemand vielleicht sogar eine viel bessere Idee?
Please also mark the comments that contributed to the solution of the article
Content-ID: 59116
Url: https://administrator.de/contentid/59116
Printed on: October 6, 2024 at 18:10 o'clock
9 Comments
Latest comment
Moin,
natürlich kannst Du das per SQL programmieren.
Einfacher ist es vielleicht mit dem Access-Assistenten. Ich habe zwar nur 2003, sollte aber identisch mit 2000 sein.
Siehst Du das Datenbankfenster? Wenn nein, drücke F11.
Erstelle eine neue Abfrage aus der Ursprungstabelle mit Daten ab dem gewünschten Datum.
Ändere den Typ der Abfrage in "Tabellenerstellungsabfrage" in der Entwurfsansicht und gebe der neuen Tabelle einen Namen wie "neu...".
Abfrage ausführen.
Benenne die Ursprungstabelle um, z.B. "alt..."
Gebe der Tabelle "neu..." den gleichen Namen wie die Ursprungstabelle vorher hatte.
Natürlich sollte bei Access immer !!! eine Sicherungskopie der Datenbank existieren.
Bitte kurze Info, falls Du den Ablauf detaillierter brauchst.
Schöne Grüße
cim
natürlich kannst Du das per SQL programmieren.
Einfacher ist es vielleicht mit dem Access-Assistenten. Ich habe zwar nur 2003, sollte aber identisch mit 2000 sein.
Siehst Du das Datenbankfenster? Wenn nein, drücke F11.
Erstelle eine neue Abfrage aus der Ursprungstabelle mit Daten ab dem gewünschten Datum.
Ändere den Typ der Abfrage in "Tabellenerstellungsabfrage" in der Entwurfsansicht und gebe der neuen Tabelle einen Namen wie "neu...".
Abfrage ausführen.
Benenne die Ursprungstabelle um, z.B. "alt..."
Gebe der Tabelle "neu..." den gleichen Namen wie die Ursprungstabelle vorher hatte.
Natürlich sollte bei Access immer !!! eine Sicherungskopie der Datenbank existieren.
Bitte kurze Info, falls Du den Ablauf detaillierter brauchst.
Schöne Grüße
cim
@thecaptain
Hi,
wenn's auf einmal so dringend ist, und man kein SQL kann, so kann man sich auch behelfen,
in dem man die Tabelle kopiert, und unter neuem Namen wieder einfügt. Dann das Original
öffnen und alle alten Daten manuell löschen.
SQL-Version:
create table neue_tabelle select * from alte_tabelle where Datum < "tt.mm.jjjj"
anschl.:
delete from alte_tabelle where Datum < "tt.mm.jjjj"
Generell würd' ich aber meinen, wenn Daten über einen so langen Zeitraum erfasst wurden,
dass die Performance schon beeinträchtigt wird, würde ich warten, bis der Kollege wieder da ist.
Auf die paar Tage kommt's ja jetzt auch nicht mehr an, und wenn, dann hätte man den Kollegen
damit beauftragen sollen, bevor er in Urlaub geht.
Meine SQL-Version funktioniert jetzt ja mal für eine Tabelle, wie sich das Ergebnis aber
auf eure gesamte Datenbank auswirkt, kann ich natürlich nicht sagen, weil ich die Struktur
nicht kenne. Oder gibt es nur die eine Tabelle für Lagerdaten?
Grüße
Günni
Hi,
wenn's auf einmal so dringend ist, und man kein SQL kann, so kann man sich auch behelfen,
in dem man die Tabelle kopiert, und unter neuem Namen wieder einfügt. Dann das Original
öffnen und alle alten Daten manuell löschen.
SQL-Version:
create table neue_tabelle select * from alte_tabelle where Datum < "tt.mm.jjjj"
anschl.:
delete from alte_tabelle where Datum < "tt.mm.jjjj"
Generell würd' ich aber meinen, wenn Daten über einen so langen Zeitraum erfasst wurden,
dass die Performance schon beeinträchtigt wird, würde ich warten, bis der Kollege wieder da ist.
Auf die paar Tage kommt's ja jetzt auch nicht mehr an, und wenn, dann hätte man den Kollegen
damit beauftragen sollen, bevor er in Urlaub geht.
Meine SQL-Version funktioniert jetzt ja mal für eine Tabelle, wie sich das Ergebnis aber
auf eure gesamte Datenbank auswirkt, kann ich natürlich nicht sagen, weil ich die Struktur
nicht kenne. Oder gibt es nur die eine Tabelle für Lagerdaten?
Grüße
Günni