Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

ERLEDIGT - Access 2000 - Daten in andere Tabelle verlagern

Frage Microsoft Microsoft Office

Mitglied: thecaptain

thecaptain (Level 1) - Jetzt verbinden

16.05.2007, aktualisiert 21.05.2007, 6044 Aufrufe, 9 Kommentare

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?
Mitglied: cim
16.05.2007 um 08:26 Uhr
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
Bitte warten ..
Mitglied: Guenni
16.05.2007 um 08:43 Uhr
@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
Bitte warten ..
Mitglied: thecaptain
16.05.2007 um 09:47 Uhr
Ja, ich denke das ist das einfachste. Ehe ich mir jetzt noch lange den Kopf über eine elegante SQL-Version zerbreche verwende ich lieber die manuelle "quick and dirty"-Methode.

Danke euch beiden!
Bitte warten ..
Mitglied: thecaptain
16.05.2007 um 10:23 Uhr
Eine Frage hätte ich noch:
Da die Daten in der Tabelle manchmal etwas durcheinander sind, möchte ich mich nicht auf meine persönliche Gründlichkeit verlassen und wenigstens das mit SQL erledigen:
DELETE * FROM tbl_test WHERE Datum < "01.01.2007";

Dabei bekomme ich aber immer den Fehler "Datentypen in Kriterienausdruck unverträglich". Das Feld "Datum" habe ich auch als solches definiert. Verpeile ich da grade wieder etwas?
Bitte warten ..
Mitglied: cim
16.05.2007 um 10:50 Uhr
Das Datum muss in # stehen und nicht in ".
Bitte warten ..
Mitglied: cim
16.05.2007 um 10:52 Uhr
Das Datum muss in # und nicht in " stehen.
Bitte warten ..
Mitglied: thecaptain
16.05.2007 um 12:42 Uhr
Hey, eine neue Fehlermeldung:
"Syntaxfehler in Datum in Abfrageausdruck ..."

Das Teil sieht jetzt folgendermaßen aus:
DELETE FROM tbl_test WHERE Datum < #01.01.2007#;
Bitte warten ..
Mitglied: cim
16.05.2007 um 13:20 Uhr
Mit dem Abfrageassistenten in Access ist das zwar keine Programmierung, aber einfach.
Darin kannst Du in der Entwurfsansicht die Löschabfrage erstellen.

Dort ist dann zu sehen, dass Access das Datum 31.12.2004 für SQL anpasst:
...
WHERE (((tbl_test.datum) < #12/31/2004#));
Bitte warten ..
Mitglied: thecaptain
21.05.2007 um 07:42 Uhr
Perfekt. Jetzt klappt alles. Habe es jetzt folgendermaßen gemacht:

1. Sicherungskopie anlegen!!!
2. Tabelle "lagerablage" in "lagerablage 2002-2006" umbenennen
3. Tabelle "lager" kopieren mit dem Dateinamen "lagerablage"
4. Per Löschabfrage aus "lagerablage" alle Daten bis Ende März löschen
DELETE * FROM lager WHERE (((lager.Datum) > #03/31/2007#));
5. Per Löschabfrage aus "lager" alle Daten vor Ende März löschen
DELETE * FROM lager WHERE (((lager.Datum) < #04/01/2007#));

Die simpelsten Lösungen sind oftmals die besten, oder um Koroljow zu zitieren:
"Die Genialität einer Konstruktion liegt in ihrer Einfachheit. Kompliziert bauen kann jeder."

Vielen Dank für die Hilfe!
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Server
gelöst SQL-Tabelle portieren und dabei Daten konvertieren (1)

Frage von menace zum Thema Server ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

VB for Applications
gelöst Xml-Datei laden bzw. auf Festplatte kopieren und per VBA in eine Access-Tabelle speichern (22)

Frage von machohunk zum Thema VB for Applications ...

Microsoft Office
Kopieren von auszuwählenden Daten in weitere Tabelle (1)

Frage von dus100 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...