meta data for this page
  •  

Performing a daily backup of the IBExpert User Database

The following example demonstrates the usage of ibec_reg_xxx functions to perform a daily backup of the IBExpert User Database:

   execute ibeblock
   as
   begin
     CurrentDate = ibec_Date();
 
     reg = ibec_reg_Open(__HKEY_CURRENT_USER, 0);
     try
       if (ibec_reg_OpenKey(reg, 'Software\HK Software\IBExpert\CurrentData', FALSE)) then
       begin
         try
           UDBLastBackupDate = ibec_reg_ReadDate(reg, 'UDBLastBackupDate');
           if (UDBLastBackupDate = CurrentDate) then
             Exit;
         except
         end;
         UDBConnectString = ibec_reg_ReadString(reg, 'UDBConnectString');
         UDBClientLib = ibec_reg_ReadString(reg, 'UDBClientLib');
         UDBUserName = ibec_reg_ReadString(reg, 'UDBUserName');
         UDBPassword = ibec_reg_ReadString(reg, 'UDBPassword');
       end
     finally
       ibec_reg_Close(reg);
     end;
 
     if ((UDBConnectString is null) or (UDBConnectString = ´´)) then
       Exit;
 
     ibec_Progress('Starting backup of IBExpert User Database...');
     BackupDir = 'D:\Backups\IBExpert User Database\';
     ibec_ForceDirectories(BackupDir);
 
     ibec_DecodeDate(CurrentDate, iYear, iMonth, iDay);
     BackupFileName = BackupDir || iDay || '-' || iMonth || '-' || iYear || '.fbk';
 
     res = ibec_BackupDatabase(UDBConnectString, BackupFileName,
                              'ClientLib=' || UDBClientLib || '; Password=' ||
                                  UDBPassword || '; User=' || UDBUserName,
                              null);
 
     if (ibec_FileExists(BackupFileName)) then
     begin
       ibec_Progress('Compressing ' || BackupFileName || '...');
       res = ibec_Exec('"C:\Program Files\WinRAR\rar.exe" a "' || BackupFileName || '.rar" "' ||
                       BackupFileName || '" -m5 -ri1', ´´, null);
       if (res = 0) then
         ibec_DeleteFile(BackupFileName);
     end
 
     if (res = 0) then
     begin
       reg = ibec_reg_Open(__HKEY_CURRENT_USER, 0);
       try
         if (ibec_reg_OpenKey(reg, 'Software\HK Software\IBExpert\CurrentData', FALSE)) then
           ibec_reg_WriteDate(reg, 'UDBLastBackupDate', CurrentDate);
       finally
         ibec_reg_Close(reg);
       end;
     end
   end