Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankbackup (Paradox) lokal auf dem Rechner (https://www.delphipraxis.net/38370-datenbankbackup-paradox-lokal-auf-dem-rechner.html)

chrissy 19. Jan 2005 11:21

Re: Datenbankbackup (Paradox) lokal auf dem Rechner
 
Delphi-Quellcode:
  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;
dass der Aufruf

Delphi-Quellcode:
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;
Die Prozedur kommt gar nicht erst dazu CompressStream aufzurufen
Mit einem einfachen Image funktioniert es aber, das habe ich schon ausprobiert.
Kann das Ziparchiv aber nicht mit WinRar öffnen

bernau 19. Jan 2005 12:56

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.

chrissy 19. Jan 2005 22:55

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

chrissy 20. Jan 2005 21:43

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 20:40 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz