delphi4arab منتديات دلفي للعرب
هل يمكن نسخ جداول داخل الفاير بيرد؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : هل يمكن نسخ جداول داخل الفاير بيرد؟ (/showthread.php?tid=11139)



هل يمكن نسخ جداول داخل الفاير بيرد؟ - ALG2009 - 15-11-2020

السلام عليكم
من المعروف أن قاعدة الفاير بيرد تكون بالإسم DataBase.fdb وأريد أن أخذ نسخة من الجداول كل شهر أو كل سنة هل يمكن إنشاء عدة نسخ بإختلاف الإسم أم  نسخقاعدة البيانات كاملة بجداولها؟
كيف يمكن تشفير وضغط وفك تشفير قاعدة البيانات عند الحفظ وعند الإستدعاء؟هل من مثال؟


RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - Delphi4Us - 20-11-2020

وعليكم السلام ورحمة الله

يمكنك انشاء جدول جديد ووضع بيانات جدول قديم فيه جرب هذا

كود :
CREATE TABLE t2 AS SELECT * FROM t1;

التشفير راجع هذا

Database Encryption


RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - larbiparadox - 20-11-2020

وعليك السلام

يوجد مكون إسمه FDIBBackup في خصائصه توجد خاصية التشفير ، وأمور أخرى

بعد ربطه ، تكون عملية الحفظ كالتالي ومثال

كود :
DataModule1.FDIBBackup1.Backup; showmessage('La sauvegarde complète');

مثال وضع الاعدادات ، نفس إعدادات ربط قاعدة البيانات

كود :
          DataModule1.FDIBBackup1.DriverLink := DataModule1.FDPhysFBDriverLink1;           DataModule1.FDIBBackup1.UserName := 'sysdba';           DataModule1.FDIBBackup1.Password := 'masterkey';           DataModule1.FDIBBackup1.Host := عنوان الجهاز;           DataModule1.FDIBBackup1.Verbose  := True;           DataModule1.FDIBBackup1.Protocol := ipTCPIP;  //  (ipLocal, ipTCPIP, ipNetBEUI, ipSPX);           DataModule1.FDIBBackup1.Database := قاعدة البيانات;



RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - ALG2009 - 20-11-2020

جزاكم الله خير

يعني الحفظ والإسترجاع يكون على مستوى الجداول فقط أي حفظ الجداول بأسماء مغايرة  أي لا ننسخ قاعدة البيانات كاملة
يعني لو أردنا إسترجاع محفوظات سنة معينة يكون بإسترجاع الجداول؟ أليس تحميل قاعدة البيانات كلها ؟
وإذا أردنا أخذ بعض المعلومات من جدول من سنة ماضية لأخد بعض القيم منه وإضافتها لجدول آخر هنا لا يمكن أن نقول خد القيم من الجدول كذا من قاعدة البيانات كذا
يعني تكون الجداول لكل سنة ضمن نفس قاعدة البيانات المشكل هنا حتى ولو كانت الجداول كثير ننسخها بإسم مغاير؟
أو يمكن أخد قيم من قاعدة بيانات إلى أخرى أي الطرق صحيحة؟


RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - larbiparadox - 20-11-2020

بالنسبة لعملية الاسترجاع تكون بواسطة بالمكون FDIBRestore

اعدادات

كود :
          //==================Restore=======================================================================================           DataModule1.FDIBRestore1.DriverLink := DataModule1.FDPhysFBDriverLink1;           DataModule1.FDIBRestore1.UserName := 'sysdba';           DataModule1.FDIBRestore1.Password := 'masterkey';           DataModule1.FDIBRestore1.Host := 'local';           DataModule1.FDIBRestore1.Protocol := ipLocal;           DataModule1.FDIBBackup1.BackupFiles.Add(المسار مع اسم قاعدة اليانات المراد استرجاعها);           //=========================================================================================================



عملية الاسترجاع

كود :
  DataModule1.FDIBRestore1.Restore;   showmessage('Restauration complète');



RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - ALG2009 - 20-11-2020

يعني الحفظ والإسترجاع يكون على مستوى الجداول فقط أي حفظ الجداول بأسماء مغايرة أي لا ننسخ قاعدة البيانات كاملة
يعني لو أردنا إسترجاع محفوظات سنة معينة يكون بإسترجاع الجداول؟ أليس تحميل قاعدة البيانات كلها ؟
وإذا أردنا أخذ بعض المعلومات من جدول من سنة ماضية لأخد بعض القيم منه وإضافتها لجدول آخر هنا لا يمكن أن نقول خد القيم من الجدول كذا من قاعدة البيانات كذا
يعني تكون الجداول لكل سنة ضمن نفس قاعدة البيانات المشكل هنا حتى ولو كانت الجداول كثير ننسخها بإسم مغاير؟
أو يمكن أخد قيم من قاعدة بيانات إلى أخرى أي الطرق صحيحة؟


RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - Delphi4Us - 21-11-2020

الـ  Restore والـ Backup ينسخ قاعدة البيانات كاملة وربما اجزاء منها لم استخدمه
الاوامر DDL مثل CREATE TABLE هو لا يقوم بانشاء جداول داخلية فقط يمكن به نسخ جداول الى ملف خارجي 
حسب ضني تجزئة البيانات السنوية عمل لا فائدة فيه وغير منطقي 
فما المشكلة في ان يكون لدي جدول فيه صادرات وواردات شحنات بضائع البواخر للميناء من سنة 2001 حتى سنة 2020 الان ...؟
على كل حال
كل الخيارات يمكن تنفيذها بالنهاية 
نسخ قاعدة البيانات وحفظها بتاريخ معين والاتصال بها واسترجاع البيانات منها
او نسخ جدول الى جدول اخر وبتاريخ معين
في النهاية المبرمج له حرية الاختيار


RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - larbiparadox - 21-11-2020

(20-11-2020, 05:58 PM)Delphi4Us كتب : وعليكم السلام ورحمة الله

يمكنك انشاء جدول جديد ووضع بيانات جدول قديم فيه جرب هذا

كود :
CREATE TABLE t2 AS SELECT * FROM t1;

التشفير راجع هذا

Database Encryption

في حالتك ارى جواب Delphi4Us  هو الافضل لك ، في حالة أخذ بعض الاسطر من قاعدة البيانات أخرى

* كيف يكون ذلك : إذا كانت نفس قاعدة البيانات عن طريق sql إدراج حقول إلى جدول من جدول أخر كما يمكنك اظافة الفلترة لتأخذ حقول معينة
كود :
INSERT INTO table1 ( column1 ) SELECT  col1 FROM    table2

* أما في حالة قاعدتين إثنين منفصلتين بواسطة sql الكتابة السابقة، يمكن عمل ذلك بواسطة firedac بواسطة مكون FDLocalSQL
مثال وذلك ربط  FDQuery1 مع FDConnection1 و ربط FDQuery2 مع  FDConnection2 وهنا حتى و لو قواعد البيانات مختلفة كـ أكسس او فير ستعملان معا كأنها قاعدة بيانات واحدة

* وذلك ندرج FDLocalSQL1 والذي بدوره يمكن اضافة مجموعة من DataSets و نربط FDLocalSQL1 مع FDConnection3 التي تكون اعدادتها DriverName تساوي SQLite و بعدها تنشيطها و بعدها الذهاب الى FDLocalSQL1 وفي DataSets  اضافة FDQuery 1 و 2

مثال ادراج يدوي لـ DataSets الخصة بـ FDLocalSQL1

FDLocalSQL1.DataSets.Add(FDQuery1, '', 'region')

FDLocalSQL1.DataSets.Add(FDQuery2, '', 'employees')

* وبعدها ندرج ونربط FDQuery3 مع FDConnection3 وهنا في FDQuery3 يمكنا العمل مع الجداول الموجودة في القواعد المربوطة بـ FDConnection1 و FDConnection2


RE: هل يمكن نسخ جداول داخل الفاير بيرد؟ - ALG2009 - 21-11-2020

جزاكم الله خيرا
ولكن أيهما أفظل هل أستعمل قاعدة بيانات واحدة وأنسخ الجداول داخلها بأسماء مختلفة، أم من الأفضل وضع كل قاعدة واحدها.
متى يستخدم كل قاعدة بيانات وحدها ومتى يتم نسخ الجداول في نفس قاعدة البيانات؟