delphi4arab منتديات دلفي للعرب
حفظ قاعدة البيانات Absolute database - نسخة قابلة للطباعة

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

الصفحات: 1 2


حفظ قاعدة البيانات Absolute database - Anter2010 - 28-09-2010

السلام عليكم و رحمة الله تعالى و بركاته
اخوتي الاعزاء صادفتني هذه المشكلة في حفظ قاعدة البيانات
لم افهم هل المشكل في المسار ام في الكود من الرغم انني عندما اطبقها
في تطبيق صغير تنجح معي و يحفظ لي قاعدة البيانات و عند تطبيقها على برنامجي لا تعمل اي شيئ

هذا الكود الاول
كود :
procedure TFLaCloture.SpeedButton2Click(Sender: TObject); begin Sleep(1000); data.OnDestroy(sender); copyfile(pchar('..\..\Pstock\Stock.ABS'),pchar('..\..\Pstock\Stock')+(Edit1.Text)+ '.ABS');//,False); data.OnCreate(sender); sleep(1000); showMessage('l''Opération de sauvgarde est réussie avec succés' ); FLaCloture.Close; end;


و الكود الثاني


كود :
function CopyFile(Source, Destination: String ) : boolean; var fos : TSHFileOpStruct; begin FillChar(fos, SizeOf(fos),0); with fos do begin wFunc := FO_COPY; pFrom := PChar(Source+#0); pTo := PChar(Destination+#0); fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT; end; result := (0 = ShFileOperation(fos)); end; procedure TFLaCloture.MaCloture; begin Chemin := ExtractFilePath(Application.ExeName); screen.cursor := crHourGlass; CopyFile(Chemin + '..\..\Pstock\Stock.ABS',Chemin + '..\..\Pstock\Stock' + Edit1.Text + '.ABS'); Sleep(1000); Sleep(1000); ShowMessage('Terminer...'); screen.cursor := crDefault; close; end; procedure TFLaCloture.SpeedButton2Click(Sender: TObject); begin Sleep(1000); data.OnDestroy(sender); copyfile(pchar('..\..\Pstock\Stock.ABS'),pchar('..\..\Pstock\Stock')+(Edit1.Text)+ '.ABS');//,False); data.OnCreate(sender); sleep(1000); showMessage('l''Opération de sauvgarde est réussie avec succés' ); FLaCloture.Close; end; procedure TFLaCloture.SpeedButton3Click(Sender: TObject); begin Chemin := ExtractFilePath(Application.ExeName); if FileExists(Chemin+ '\'+ 'Stock'+ Edit1.Text + '.ABS') then begin messagedlg('L''exercice '+ Edit1.Text + ' est déjà clôturer',mtWarning,[mbYes],0); end else if messagedlg('Confirmer la Cloture de l''exercice '+ Edit1.Text +' ? ',mtconfirmation,[mbYes,mbNo],0) = mrYes then begin MaCloture; end; end;



حفظ قاعدة البيانات Absolute database - kachwahed - 28-09-2010

وعليكم السلام ورحمة الله وبركاته
إقتباس :في تطبيق صغير تنجح معي و يحفظ لي قاعدة البيانات و عند تطبيقها على برنامجي لا تعمل اي شيئ
وضح مالذي يحدث أو رسالة الخطأ!
إقتباس :من فضلكم اخوتي اتوسم فيكم ال****** ان شاء الله
انتبه:
11- هناك كلمات محظورة عند كتابتها تظهر على شكل نجوم ***** ، احرص على عدم ظهورها لكي لا تحذف مشاركتك



حفظ قاعدة البيانات Absolute database - Anter2010 - 28-09-2010

السلام عليكم و رحمة الله تعالى و بركاته
اخي كاش و احد المشكلة انها لا تظهر اي رسالة خطأ

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

و هذه قاعدة البيانات


حفظ قاعدة البيانات Absolute database - kachwahed - 28-09-2010

آسف، لا أدري بالضبط أين الخلل
ليست لدي المكونات للتجريب لا أدري أي نسخة دلفي تستخدم...
المهم...
1- لا تستخدم توابع Shell لنسخ الملفات إن لم تكن تتحكم فيها بشكل جيد
أيضا افحص الناتج لتحديد موضع الخلل، مثال:
كود :
if copyfile('e:\text.txt','d:\bakcup\'+Edit1.Text+ '.txt') then ShowMessage('Opération terminé!') else ShowMessage('Erreur de copie!')
بهذه الطريقة -على الأقل- تعرف أين الخطأ في (أو ليس في) تابع النسخ...

2- استخدمت الأعلام FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT هل تعرف جيدا معناها؟
إذا لم تكن بحاجة لنافذة نسخ الملفات، فلِم لا تستخدم تابع API مباشرة (وهو ما أنصحك به)، مثال:
كود :
function MyCopyFile(const Source, Dest: string; Overwrite: Boolean = False): Boolean; {Usage: if MyCopyFile('c:\text.txt', 'd:\') then } begin Result := CopyFile(PChar(Source), PChar(IncludeTrailingPathDelimiter(Dest)+ ExtractFileName(Source)), Overwrite); end;

3- التابع الذي استخدمت ينسخ الملفات بشكل صحيح...
فقط تأكد من صحة المسارات (كلاها)
ليس بالعين المجردة، وإنما بشيء مثل:
كود :
if not FileExists('..\..\Pstock\Stock.ABS') then ShowMessage('Fichier introuvable!');
تتبع الخطأ بهذه المنجهة:
- تأكد من صحة عمل الدالة
- تأكد من سلامة المسارات
- افحص الناتج دائما (if... then)
بالتوفيق.



حفظ قاعدة البيانات Absolute database - Anter2010 - 28-09-2010

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


حفظ قاعدة البيانات Absolute database - kachwahed - 28-09-2010

إقتباس :في datamodule
تأكد أيضا من إمكانية الوصول إلى الملف من قبل النظام
والأفضل غلق الاتصال بقاعدة البيانات قبل النسخ.
بالتوفيق.



حفظ قاعدة البيانات Absolute database - Anter2010 - 30-09-2010

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

اخي كاش واحد بالنسبة datamodule
قد قمت باغلاقها و ذالك في

كود :
data.OnDestroy(sender);
واعادت فتحها
كود :
data.OnCreate(sender);
اما بالنسبة من إمكانية الوصول إلى الملف من قبل النظام
فهذا لم افهمه


حفظ قاعدة البيانات Absolute database - medreg - 01-10-2010

السلام عليكم ورحمة الله تعالى وبركاته
ربما أخي يفيدك هذا
كود للحفظ
كود :
procedure TForm1.MenuItem3Click(Sender: TObject); begin Sleep(1000); DModule.OnDestroy(sender); copyfile(pchar('teste.ABS'),pchar(Form2.ComboBox1.Text+Form2.SpinEdit1.Text),False); DModule.OnCreate(sender); Sleep(10000); showMessage('تمت عملية الحفظ بنجاح'); end;

كود الإسترجاع
كود :
procedure TForm4.BitBtn1Click(Sender: TObject); begin Sleep(1000); DModule.OnDestroy(sender); copyfile(pchar(ComboBox1.Text+SpinEdit1.text),pchar('teste.ABS'),false); DModule.OnCreate(sender); Sleep(10000); showMessage('تمت علية الإسترجاع بنجاح'); Close; end;
ملاحظة
يجب ان تكون قاعدة البيانات موجودة داخل البرنامج
وبالتوفيق


حفظ قاعدة البيانات Absolute database - Anter2010 - 01-10-2010

السلام عليكم و رحمة الله تعالى و بركاته
مشكور اخي لكن ليس هذا هو المطلوب


حفظ قاعدة البيانات Absolute database - kachwahed - 01-10-2010

إقتباس :قد قمت باغلاقها و ذالك في
ليس كذلك، يكفي غلق TABSDatabase ثم إعادة فتحه بعد النسخ...

منذ قليل ثبتت المكونات وقمت بالنسخ...
مر كل شيء على ما يرام وتم النسخ بسلام
باستخدام الدالة التي أعطيتك في المشروع الذي أرفقته
ودون الحاجة أصلا لغلق قاعدة البيانات
تم التجريب على Delphi 7

المثال مرفق فقط ضع قاعدة البيانات في المجلد Data
ثم أطعلنا على النتيجة Smile
بالتوفيق.