![]() |
|
حفظ قاعدة البيانات 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 ثم أطعلنا على النتيجة ![]() بالتوفيق. |