Datenbank überschreiben
-
hallo,
wie ich eine Datenbank und einen neuen recordset erstelle bzw. update ist kein Problem, ich hab leider in dem Link aber nichts darueber gefunden, wie ich eine bereits existierende Datenbank mit demselben Name ueberschreiben kann. Also ich meochte nicht die Tabellen updaten, sondern eine neue Datenbank erstellen. So wie bei einem Zugriff auf eine z.B. Textdatei, die man ja auch ueberschreiben kann. Vielleicht muss ich ja die alte Datenbank löschen und dann die neue erstellen, waere auch ne Moeglichkeit. Doch mit welchem Befehl lösche ich die Datenbank?
-
Aloha,
na, so richtig löschen eines mdb-Files oder irgendein anderes erreichst Du unter anderem mit dem Befehl
DeleteFile();Darf ich fragen, warum Du sie löschen willst, und das Leeren von Tabellen und neu befüllen nicht ausreicht ?
Grüße
BOA
-
@BOA
ich habe 13 oder 14 Tabellen, da muesste ich jede einzelne Tabelle bzw deren Tabelleneinträge löschen, so lösche ich halt die alte mdb und erstelle alle 14 Tabellen neu. Vom Aufwand ist es doch dasselbe oder bist du anderer Meinung?
-
Vom Aufwand ist es doch dasselbe oder bist du anderer Meinung?
Naja, ueber den Aufwand mag ich hier schwer strieten, ne datei sit schnell geloesscht, aber wie schnell sind tabellen neu angelegt ? Anstatt die alten einfach auszuraeumen.
Viele behaupten Access ist keine DB, naja, es ist meiner Meinung nach kein RDBMS ... aber ne datenbank schon. Und wenn man mit datenbanken arbeitet sollt man sich schon an konventionen halten. Nen file deleten und ne neue DB aufziehen geht in access einfach, bei anderen Datenbanken, besonders RDBMS wirst da leichte Probleme bekommen :p
Wenns schon nicht wegen einen moeglichen Migration fuer spaeter ist, dann doch fuer die Gewohnheit ... Mach nen Delete Table, anstatt die das file zu loeschen. Und das geht auch schnell genug ....
ciao ...
-
Aloha,
@rhbaum
was meinst Du denn mit einer DeleteTable ?
Erläuter mal bitte etwas genauer.@valluga
Ich stelle mir gerade den worst case vor.
Du löscht die mdb und der Rechner kackt just in dem Moment ab.
Somit hast Du weder die alten noch die neuen Daten in der mdb, weil ja keine mehr da ist.
Löscht und befüllst du nun Tabelle für Tabelle und der worst case tritt ein, hast Du zumindestens noch Daten.Grüße
BOA
-
was meinst Du denn mit einer DeleteTable ?
Erläuter mal bitte etwas genauer.das wuerde ich auch gerne wissen!
@BOA
OK du hasst mich ueberzeugt!
-
so jetzt hab ich noch ne Frage, ich lösche jetzt alle Datensaetze in meinen Tabellen und beschreibe diese dann wieder. Bei dem "Auto-Wert"-Felddatentyp wird der Zähler aber nicht wieder auf 1 gesetzt, sondern der alte bzw. letzte Wert (von der geloeschten Tabelle) wird mit uebernommen und ausgehend von diesem werden die neuen recordsets hochgezaehlt.
Eigentlich ist das unschoen, vielleicht weisst du ja wie ich das Feld vom Typ AutoWert wieder auf 1 setzen kann?
-
Aloha,
gute Frage, nächste bitte.
Weiß ich leider auch net, sorry.
Grüße
BOA
-
Es muesste etwas mit den Systemdatenbanken von Acess zu tun haben. Deren Datensaetze kann ich naemlich nicht löschen. Vielleicht kommt einem von euch das Problem bekannt vor, dann bitte melden!
-
Hallo,
du könntest versuchen, mit einem Execute-Kommando folgende SQL-Anweisung an ACCESS direkt nach dem Löschen des Tabellen-Inhalts zu schicken:
ALTER TABLE tabellenname ALTER COLUMN spaltenname AUTOINCREMENT (1,1)
"versuchen" habe ich deshalb geschrieben, weil ich irgendwo einmal gelesen habe, daß diese Anweisung eventuell nur mit ADO (und nicht mit DAO) funktioniert, also hilft nur probieren...
MfG
-
@Probenutzer
erst mal vielen Dank fuer deine Antwort!
leider hat das nicht geklappt!
ich hab immer noch keine Loesung. Er gibt die folgende Dao-exception aus:
[quote]Syntaxfehler in ALTER TABLE-Anweisung.[/code]
Keine Ahnung warum diese ALTER Anweisung nicht bei Dao klappt. Benoetige immer noch eine Lösung.
-
ich kann jetzt nur spekulieren, daß hoffentlich die "ALTER TABLE"-Anweisung bei dir wirklich keinen Syntax-Fehler hat (alle Leerzeichen eingehalten, korrekte Schreibweise), aber wenn es dann nicht geht, gibt es wohl höchstens (wenn überhaupt) nur eine Chance, diese Information in den Systemtabellen zu finden (wenn man da überhaupt sinnvoll ändern kann). Mit Sicherheit den Zähler zurücksetzen kannst du natürlich, wenn du die ganze Tabelle entfernst, und wieder neu "create"st. Ansonsten legt DAO, wie schon gesagt, die zuständige Eigenschaft ("seed") für den Autoinkrement-Zähler nicht offen, so daß es eben nur so geht, wie angedeutet
MfG