إنشاء نسخة احتياطية لقاعدة Absolute
#1
السلام عليكم ورحمة الله تعالى وبركاته
لدي قاعدتين من أبسوليت إسمهما
Cartes.Abs و Dossiers.Abs
واردت ان احفظهما في مجلد إسمه Archive
وإنشاء مجلد جديد كلمة اردة حفظ القاعدة مع إضافة السنة التي حفظت بها القاعدة للمجلد حتى يصبح المجلد الذي ينشأ إسمه Archives_2010
علما ان السنة التي يتم بها الحفظ تكون بمكون SpinEdit1
وحتى عملية الإسترجاع تكون من المجلد الموجود بالأرشيف واستعادت القاعدين الى البرنامج مع حذف القاعدتين السابقتين الموجودة داخل البرنامج وايضا السنة التي يتم بها الإسترجاع تكون من خلال مكون SpinEdit2
الرد
#2
وعليكم السلام ورحمة الله وبركاته
موضوع سبق طرحه، من هنا:
طريقة عمل ال Backup لقاعدة بيانات من نوع Absolute Database
بالتوفيق.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#3
kachwahed كتب :موضوع سبق طرحه، من هنا
مشكور أخي
وجدت هذا المثال في احد المنتديات وهو يتعلق بالحفظ الأرشفة وقمت بالتعديل عليه
لقد حاولت التعديل على المرفق ولكن لم افلح
عملية الحفظ تنفذ لكن المجلد المطلوب اضافته ينشأء خار المجلد الموجود داخل البرنامج
ومن المفروض ينشأ المجلد داخل المجلد الموجود داخل مجلد البرنامج والمسمى Archive
يعني المجلد المطلوب لإنشاءه هو المسمى Archive مضاف له السنة
ثانيا : كما قلت لك ان الملف ينشأ لكن ينشأ خارج البرنام ولا يوجد بداخله ملف قاعدة البيانات
لماذا
حاول تنفذ البرنامج وانظر اين يضع لك المجلد

ثالثا عملية الإسترجاع لم استطيع والمطلوب تعاونكم معي بالكود الخاص بالإسترجاع طبعًا هذا بعد تصليح عملية الحفظ
الرد
#4

السلام عليكم
القيت نظرة سريعة على المرفق وبه اخطاء كثيرة...
-
انسى المرفق وفكر جيدا
انت تريد نسخ قاعدة بيانات من نوع Absolute
لا تحتاج لانشاء مجلد جديد لكل سنة لملف واحد
إنسخ ملف قاعدة البيانات باسم جديد حسب السنة

TesteCopy.abs اسم قاعدة البيانات (غيرها حسب مشروعك)
SpinEdit1 يحوى على سنة قاعدة البيانان
للحفظ
كود :
CopyFile(PChar('TesteCopy.abs'),PChar(SpinEdit1.Text),True);
لاسترجاع
كود :
CopyFile(PChar(SpinEdit1.Text),PChar('TesteCopy.abs'),False);
ملاحظة: يجب غلق عادة البيانات (وكل الجداول) قبل وبعد اي عملية حفظ او استرجاع
وبالتوفيق

الرد
#5
لا عليك أستاذي ربما لا احسن التعبير
اما بعد
لقد وضعت الكود كما قلت لي على مثال جديد
وفي زر الحفظ وضعت الكود الأول بهذه الطريقة وكانت طريقة الحفظ ناجحة
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
begin
ABSDatabase1
.Close;
copyfile(pchar('testecopy.abs'),pchar(spinedit1.text),true);
ABSDatabase1.Open;
end; 
اما بالنسبة لعملية الإسترجاع وضعت الكود الثاني وبهذه الصفة لكن لم تنجح معي
PHP كود :
ABSDatabase1.Close;
copyfile(pchar(spinedit1.text),pchar('testecopy.abs'),false);
ABSDatabase1.Open; 
وانا باإنتظار لنصائحكم
الرد
#6
إقتباس :الكود الثاني وبهذه الصفة لكن لم تنجح معي

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

السبب طريقة تعاملك مع قاعدة البيانات
خذها كقاعدة: لا تغير خصاص قاعدة البيانات والجداول من دلفي بجعلها True
قم بذلك برمجيا، بالحدث OnCreate لاول Form او DataModule افتح قاعدة البيانات ثم الجداول
وبالحدث OnClose أو OnDestroy اغلق الجداول ثم القاعدة
العمل النظيف يجنب الكثير من المشاكل
الرد
#9
لقد تركت قاعدة البيانات كما كانت
وكتبت في الحدث
Oncreate للفورم الأول
PHP كود :
With DModule1 do begin
ABSTable1
.Open;
end; 
وفي الحدث OnClose للفورم الأول
PHP كود :
with DModule1 do begin
ABSTable1
.close;
end; 
وحاولت اجرب فيكل الفورم
ومسحت ما مان مكتوب في الحدث create للـ DModule1
والحدث Distroy ايضا للـ DModule1
واكتفيت بما كتبته في الحدث للفورم الأول
وباقي الفورم
لك المشكل هذه الرسالة
صورة الرسالة بالمرفق
الرد
#10

الخط ان Form الذي اساخدمتها تنشا قبل الDataModule يعني ABSTable1 غير موجودة اثنا حدوث OnCreate للForm
بما انك تستخدم DataModule استخدم حدثيه OnCreate/OnDestroy
ولا تنسى اغلق ايضا
Database
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم