Kopieren einer Access Datenbank



  • Hallo,
    wer kann mir weiterhelfen???
    Ich möchte aus meinem Programm heraus eine Access-Datenbank kopieren. (Datensicherung) Es soll folgendermaßen funktionieren:
    Durch Auswahl eines entsprechenden Menüpunktes soll die DB, z.B. mit copyfile in ein separates Verzeichnis kopiert werden.
    Jetzt meine Fragen:
    Muss die DB extra geschlossen werden bevor ich sie kopieren kann?
    Wenn ja, wie macht man das?
    Wie kann mann nach evtl. Schliessen und Kopieren der DB mit der Anwendung weiterarbeiten?

    Vielen Dank im voraus ... 😕



  • jo also meiner meinung nach geht das so. zumindest kann man alle andern files waehrend dem bearbeiten kopieren und woanders ablegen. bearbeitungsstatus ist dann halt evtl ein zwischenschritt, du solltest halt deine schluessel alle korrekt vergeben haben. nicht umsonst ist selbst bei richtigen RDMS die sicherung der daten eines der groessten, wenn nicht das groesste problem. du musst halt auf jeden fall eine funktionierende sicherung machen, was aber mit richtiger schluesselvergabe gegeben sein muesste.

    Esco



  • also ich würde mal zur sicherheit sagen schließ die DB zur sicherheit lieber mal, denn dann kannst du sichergehen, dass alle Daten auch kopiert werden, sonst kann es sein du kopierst und hast aber noch Daten in deinem Recset, die noch nicht übertragen worden sind oder irgendwie sowas und dann siehste alt aus. Prinzipiell schließe ich mich aber schon Esco an. Wenn du es machen willst dann nimm deine Referenz auf die DB und mach dann einfach

    db.close();//angenommen die Referenz ist db
    

    So nun zum kopieren also ich mach das so:

    bool CEinstellungenView::FileCopy(CString sExistingFileName, CString sNewFileName)
    {
    	bool bFailIfExists = 1;
    	if(CopyFile((LPCSTR) sExistingFileName ,	// name of an existing file 
    				(LPCSTR) sNewFileName,			// name of new file 
    				bFailIfExists)					// operation if file exists 
    				==0)
    	{
    		MessageBox(ERROR_002,MYERROR,MB_ICONERROR);
    		return 0;
    	}
    	else return 1;
    }
    

    Wobei die Filenames nicht nur die Dateinamen sind sonder immer einen ganzen Pfad angeben müssen, am besten natürlich relativ oder halt geregelt über eine ini oder ähnliches. Natürlich musst du auch die Fehlermeldung noch rein schreiben, also mein define zu ERROR_002 sieht so aus:

    Eine Kopie konnte nicht erstellt werden, da eine Datei mit mit dem gleichen Namen bereits besteht, oder die zu kopierende Datei nicht gefunden wird. \r\nBitte überprüfen sie die Pfade

    Wie willst du denn die Sicherungskopien Indexieren? Wenn du Index a, b, c und so weiter machen willst hab ich dir auch noch was, ich würde allerdings das Datum im Format JJJ.MM.TT_Datei davor schreiben, dann kannst du dir schön nach Datum der Kopien soriteren lassen. Also so:

    2005.06.01_TestDB.mdb



  • @polofreak

    Vielen Dank für Deine Mühe. 👍 Probiere es in Kürze aus. Wegen der Indexierung würde ich mich ggf. noch mal melden.

    Tschüß, bis bald...
    Thomas.A



  • scho rescht und meld dich ruhig wieder!
    😉


Anmelden zum Antworten