Login ProductsSalesSupportDownloadsAbout |
Home » Technical Support » ElevateDB Technical Support » Support Forums » ElevateDB General » View Thread |
Messages 1 to 4 of 4 total |
Load updates / replication problem |
Fri, Jun 20 2014 7:33 PM | Permanent Link |
Charalampos Michael | Hello, I have 2 identical databases which i want to duplicate the changes each other. The problem is that the the first database is exporting the changes into a file (as i can from the size) but when i load it and try it to apply it into the other database it does NOTHING. I use the below code to do that: //Save the updates from the database to a store and export to file procedure actSaveUpdatesExecute(Sender: TObject); var vStream: TFileStream; vFileName: String; vFormatSettings: TFormatSettings; begin vFormatSettings.DateSeparator :=3D '_'; vFormatSettings.TimeSeparator :=3D '_'; vFileName :=3D FormatDateTime('dd_mm_yyyy_hh_nn_ss', Now, vFormatSetting= s); dlgSaveUpdates.FileName :=3D vFileName; if dlgSaveUpdates.Execute then with DatabaseModule, qrQuery, SQL do begin Screen.Cursor :=3D crHourGlass; Clear; Add('BACKUP DATABASE "Cards" AS "' + vFileName + '" TO STORE "Local" COMPRESSION 9'); ExecSQL; Clear; vStream :=3D TFileStream.Create(dlgSaveUpdates.FileName, fmCreate); dbSession.SaveStoreFileToStream('Local', ChangeFileExt(vFileName, '.EDBBkp'), vStream); FreeAndNil(vStream); Add('DELETE FILE "' + ChangeFileExt(vFileName, '.EDBBkp') + '" FROM STORE "Local"'); ExecSQL; Clear; { Clear; Add('SAVE UPDATES FOR DATABASE "Cards" AS "' + vFileName + '" TO STORE "Local" COMPRESSION 9'); ExecSQL; Clear; vStream :=3D TFileStream.Create(dlgSaveUpdates.FileName, fmCreate); dbSession.SaveStoreFileToStream('Local', ChangeFileExt(vFileName, '.edbupd'), vStream); FreeAndNil(vStream); Add('DELETE FILE "' + ChangeFileExt(vFileName, '.edbupd') + '" FROM STORE "Local"'); ExecSQL; Clear; } Screen.Cursor :=3D crDefault; ShowMessage('Export changes done!'); end; end; //Load updates from file, put it on store and apply it into the database procedure actLoadUpdatesExecute(Sender: TObject); var vStream: TFileStream; vFileName: String; begin if dlgLoadUpdates.Execute then with DatabaseModule, qrQuery, SQL do begin Screen.Cursor :=3D crHourGlass; //DatabaseModule.dbDatabase.Open; //DatabaseModule.dbSession.Open; //OpenDatabase(False); vFileName :=3D ChangeFileExt(ExtractFileName(dlgLoadUpdates.FileName), '.EDBBkp'); vStream :=3D TFileStream.Create(dlgLoadUpdates.FileName, fmOpenRead); dbSession.SaveStreamToStoreFile('Local', vFileName, vStream); FreeAndNil(vStream); DatabaseModule.dbEngine.Close; Clear; Add('RESTORE DATABASE "Cards" FROM "' + ChangeFileExt(vFileName, '') += '" IN STORE "Local"'); ExecSQL; Clear; Add('DELETE FILE "' + vFileName + '" FROM STORE "Local"'); ExecSQL; Clear; DatabaseModule.CloseDatabase; DatabaseModule.OpenDatabase; Screen.Cursor :=3D crDefault; ShowMessage('Import changes done!'); end; end; Any helps ? Thanks --- =CE=91=CF=85=CF=84=CF=8C =CF=84=CE=BF email =CE=B5=CE=AF=CE=BD=CE=B1=CE=B9 = =CE=B1=CF=80=CE=B1=CE=BB=CE=BB=CE=B1=CE=B3=CE=BC=CE=AD=CE=BD=CE=BF =CE=B1= =CF=80=CF=8C =CE=B9=CE=BF=CF=8D=CF=82 =CE=BA=CE=B1=CE=B9 =CE=BA=CE=B1=CE=BA= =CF=8C=CE=B2=CE=BF=CF=85=CE=BB=CE=BF =CE=BB=CE=BF=CE=B3=CE=B9=CF=83=CE=BC= =CE=B9=CE=BA=CF=8C, =CE=B5=CF=80=CE=B5=CE=B9=CE=B4=CE=AE =CE=B5=CE=AF=CE=BD= =CE=B1=CE=B9 =CE=B5=CE=BD=CE=B5=CF=81=CE=B3=CE=AE =CE=B7 =CF=80=CF=81=CE=BF= =CF=83=CF=84=CE=B1=CF=83=CE=AF=CE=B1 avast! Antivirus. http://www.avast.com |
Fri, Jun 20 2014 7:36 PM | Permanent Link |
Charalampos Michael | My apologies, wrong code in the first post
procedure actSaveUpdatesExecute(Sender: TObject); var vStream: TFileStream; vFileName: String; vFormatSettings: TFormatSettings; begin vFormatSettings.DateSeparator :=3D '_'; vFormatSettings.TimeSeparator :=3D '_'; vFileName :=3D FormatDateTime('dd_mm_yyyy_hh_nn_ss', Now, vFormatSetting= s); dlgSaveUpdates.FileName :=3D vFileName; if dlgSaveUpdates.Execute then with DatabaseModule, qrQuery, SQL do begin Screen.Cursor :=3D crHourGlass; Clear; Clear; Add('SAVE UPDATES FOR DATABASE "Cards" AS "' + vFileName + '" TO STORE "Local" COMPRESSION 9'); ExecSQL; Clear; vStream :=3D TFileStream.Create(dlgSaveUpdates.FileName, fmCreate); dbSession.SaveStoreFileToStream('Local', ChangeFileExt(vFileName, '.edbupd'), vStream); FreeAndNil(vStream); Add('DELETE FILE "' + ChangeFileExt(vFileName, '.edbupd') + '" FROM STORE "Local"'); ExecSQL; Clear; Screen.Cursor :=3D crDefault; end; end; procedure TCardsForm.actLoadUpdatesExecute(Sender: TObject); var vStream: TFileStream; vFileName: String; begin if dlgLoadUpdates.Execute then with DatabaseModule, qrQuery, SQL do begin Screen.Cursor :=3D crHourGlass; Clear; vFileName :=3D ChangeFileExt(ExtractFileName(dlgLoadUpdates.FileName), '.edbupd'); vStream :=3D TFileStream.Create(dlgLoadUpdates.FileName, fmOpenRead); dbSession.SaveStreamToStoreFile('Local', vFileName, vStream); FreeAndNil(vStream); Add('LOAD UPDATES FOR DATABASE "Cards" FROM "' + ChangeFileExt(vFileName, '') + '" IN STORE "Local"'); ExecSQL; Clear; Add('DELETE FILE "' + vFileName + '" FROM STORE "Local"'); ExecSQL; Clear; end; end; --- =CE=91=CF=85=CF=84=CF=8C =CF=84=CE=BF email =CE=B5=CE=AF=CE=BD=CE=B1=CE=B9 = =CE=B1=CF=80=CE=B1=CE=BB=CE=BB=CE=B1=CE=B3=CE=BC=CE=AD=CE=BD=CE=BF =CE=B1= =CF=80=CF=8C =CE=B9=CE=BF=CF=8D=CF=82 =CE=BA=CE=B1=CE=B9 =CE=BA=CE=B1=CE=BA= =CF=8C=CE=B2=CE=BF=CF=85=CE=BB=CE=BF =CE=BB=CE=BF=CE=B3=CE=B9=CF=83=CE=BC= =CE=B9=CE=BA=CF=8C, =CE=B5=CF=80=CE=B5=CE=B9=CE=B4=CE=AE =CE=B5=CE=AF=CE=BD= =CE=B1=CE=B9 =CE=B5=CE=BD=CE=B5=CF=81=CE=B3=CE=AE =CE=B7 =CF=80=CF=81=CE=BF= =CF=83=CF=84=CE=B1=CF=83=CE=AF=CE=B1 avast! Antivirus. http://www.avast.com |
Sat, Jun 21 2014 7:08 AM | Permanent Link |
Uli Becker | Charalampos,
your code looks quite complicated Personally, I prefer to do that stuff using a stored procedure, here a code snippet: EXECUTE IMMEDIATE 'SET UPDATES STORE TO "' + ClientInStore + '"'; PREPARE SelectedUpdateFilesStmt FROM 'SELECT * FROM Configuration.UPDATES ORDER BY CreatedOn'; OPEN SelectedUpdateFilesCursor; FETCH FIRST FROM SelectedUpdateFilesCursor ('Name') INTO CurrentFileName; WHILE NOT EOF(SelectedUpdateFilesCursor) DO EXECUTE IMMEDIATE 'LOAD UPDATES FOR DATABASE "' + CurrentDatabase + '" FROM "' + CurrentFileName + '" IN STORE "' + ClientInStore + '"'; -- If successful, delete from store EXECUTE IMMEDIATE 'DELETE FILE "' + CurrentFileName + '.EDBUpd" FROM STORE "' + ClientInStore + '"'; FETCH NEXT FROM SelectedUpdateFilesCursor ('Name') INTO CurrentFileName; END WHILE; Apart from that, your problem could be the file extension. EDB expects the filename without exension. Have a look here: http://tinyurl.com/mpsrafj Uli |
Sat, Jun 21 2014 11:32 AM | Permanent Link |
Uli Becker | Sorry, I didn't read your code carefully enough: you did change the extension.
Uli |
This web page was last updated on Saturday, April 27, 2024 at 08:52 PM | Privacy PolicySite Map © 2024 Elevate Software, Inc. All Rights Reserved Questions or comments ? E-mail us at info@elevatesoft.com |