![]() |
Re: Datenbankbackup (Paradox) lokal auf dem Rechner
Delphi-Quellcode:
dass der Aufruf
with Daten do
begin tKunde.Close; tLehrer.Close; tAnrede.Close; tLehrangebot.Close; tStufe.Close; tFach.Close; tSchulform.Close; tOrtVorwahl.Close; tVermittlung.Close; tModul.Close; tVKL.Close; tVLL.Close; tbekanntdurch.Close; tradiotyp.Close; tzeitungstyp.Close; QLehrangebotauswahl.Close; QFachauswahlLehrer.Close; QFachauswahlKunde.Close; QSuchenVorwahl.Close; QSuchenOrt.Close; QVermittlungsarchiv.Close; QSucheKundeName.Close; QSucheKundeNummer.Close; QSucheLehrerName.Close; QSucheLehrerNummer.Close; QVKNRS.Close; QVLNRS.Close; QVKNVS.Close; QVLNVS.Close; QVermFach.Close; QVMS.Close; QVFSSS.Close; QVDatS.Close; end; output:=TFileStream.Create(pfad+'\backup\database.zip', fmCreate); try input:=TFileStream.Create(pfad+'\Daten\kunde.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\lehrer.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\anrede.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\lehrangebot.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\fach.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\schulform.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\stufe.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\ort_vorwahl.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\vermittlung.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\vkla.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\vlla.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\modul.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\Satistik\bekanntdurch.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\Statistik\radiotyp.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; input:=TFileStream.Create(pfad+'\Daten\Statistik\zeitungstyp.db', fmOpenRead or fmShareDenyWrite); CompressStream(input, output); input.Free; except on EFOpenError do ShowMessage('EFOpenError Raised in '+pfad+'\Daten\ddb_backup.bak'); end; with Daten do begin tKunde.Open; tLehrer.Open; tAnrede.Open; tLehrangebot.Open; tStufe.Open; tFach.Open; tSchulform.Open; tOrtVorwahl.Open; tVermittlung.Open; tModul.Open; tVKL.Open; tVLL.Open; tbekanntdurch.Open; tradiotyp.Open; tzeitungstyp.Open; QLehrangebotauswahl.Open; QFachauswahlLehrer.Open; QFachauswahlKunde.Open; QSuchenVorwahl.Open; QSuchenOrt.Open; QVermittlungsarchiv.Open; QSucheKundeName.Open; QSucheKundeNummer.Open; QSucheLehrerName.Open; QSucheLehrerNummer.Open; QVKNRS.Open; QVLNRS.Open; QVKNVS.Open; QVLNVS.Open; QVermFach.Open; QVMS.Open; QVFSSS.Open; QVDatS.Open; end;
Delphi-Quellcode:
Die Prozedur kommt gar nicht erst dazu CompressStream aufzurufen
procedure CompressStream(inpStream, outStream: TStream);
var InpBuf, OutBuf: Pointer; InpBytes, OutBytes: Integer; begin InpBuf := nil; OutBuf := nil; try GetMem(InpBuf, inpStream.Size); inpStream.Position := 0; InpBytes := inpStream.Read(InpBuf^, inpStream.Size); CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes); outStream.Write(OutBuf^, OutBytes); finally if InpBuf <> nil then FreeMem(InpBuf); if OutBuf <> nil then FreeMem(OutBuf); end; end; Mit einem einfachen Image funktioniert es aber, das habe ich schon ausprobiert. Kann das Ziparchiv aber nicht mit WinRar öffnen |
Re: Datenbankbackup (Paradox) lokal auf dem Rechner
Du kannst mit fileexists mal vorher prüfen, ob die Datei auch wirklich vorhanden ist.
Delphi-Quellcode:
Procedure SaveToZip(myFilename:string;myOutputStream:TStream);
var input:TFilestream; begin if fileexist (myFilename) then begin try input:=TFileStream.Create(myFilename, fmOpenRead or fmShareDenyWrite); CompressStream(input, myoutputstream); input.Free; except end; end else begin //Fehlermeldung end; end; output:=TFileStream.Create(pfad+'\backup\database.zip', fmCreate); SaveToZip(pfad+'\Daten\stufe.db',output); SaveToZip(pfad+'\Daten\stufe.db',output); SaveToZip(pfad+'\Daten\anrede.db',output); //usw. |
Re: Datenbankbackup (Paradox) lokal auf dem Rechner
Ok, also, ich habs zumindest so gelößt, dass man zum Backup das Hauptprogramm Datenbank schließen muss (bzw. das ok dazu geben) und dann ein weiteres Programm nur fürs Backup zuständig ist. Dann können die einzelnen Dateien auch gezippt werden.
Gruß Chrissy |
Re: Datenbankbackup (Paradox) lokal auf dem Rechner
Hallo!!
Wenn ich die gezipten Daten wieder auslese, 1. Wie komme ich genau an die enzelnen Daten im Zipfile, 2. Wie komme ich an den ursprünglichen Pfad der Daten? Irgendwie habe ich das noch nicht so ganz verstanden. Gruß Chrissy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz