المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
السلام عليكم ورحمة الله تعالى وبركاته
صادفتني مشكلة في حفظ قاعدة اليانات من نوع absolute
كنت استعملها في نسخة الدلفي7 وكانت تعمل بشكل جيد
وعندما استعملتها في نسخة xe8
لا تتم عملية الحفظ وتظهر بانها تمت العملية لكن لا اجد الملف محفوظ
مع العلم ان مسار قاعدة البيانات هو
projrct1\mirnam\sbase\teste.abs
وهذا هو الكود المستعمل
كود :
procedure TRestoreBase.N1Click(Sender: TObject);
var Pdir:string;
begin
RestoreBase.Caption:='حفظ المعطيات';
GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما';
Pdir:='..\..\sbase\Archives';
CreateDir(Pdir);
Sleep(200);
if DirectoryExists('sbase\Archives') then
begin
DM.OnDestroy(sender);
copyfile(pchar('teste.ABS'),pchar('sbase\Archives\'+ComboBox1.Text+SpinEdit1.text),false);
end else begin
ForceDirectories(Pdir);
end;
DM.OnCreate(sender);
Sleep(500);
showMessage('تمت عمليةالأرشفة بنجاح');
Close;
end;
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
17-02-2019, 08:16 AM
(آخر تعديل لهذه المشاركة: 17-02-2019, 10:53 AM بواسطة محمد عبد العزيز.)
وعليكم السلام ورحمة الله
جرب تغيير String بAnsiString
شيئ مثل (لم اجرب الكود)
كود :
procedure TRestoreBase.N1Click(Sender: TObject);
var Pdir:AnsiString;
begin
RestoreBase.Caption:='حفظ المعطيات';
GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما';
Pdir:='..\..\sbase\Archives';
CreateDir(Pdir);
Sleep(200);
if DirectoryExists('sbase\Archives') then
begin
DM.OnDestroy(sender);
copyfile(pChar('teste.ABS'),pChar('sbase\Archives\'+ComboBox1.Text+SpinEdit1.text),false);
end else begin
ForceDirectories(Pdir);
end;
DM.OnCreate(sender);
Sleep(500);
showMessage('تمت عمليةالأرشفة بنجاح');
Close;
end;
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
السلام عليكم انه يشير الى خطأ اثناء compilie وهذا هو الخطأ
[dcc32 Erreur] U_menu.pas(49): E2010 Types incompatibles : 'PWideChar' et 'PAnsiChar'
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
حسنا
اعد AnsiChar الى pChar
قمت بتعديل الكود فوق
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
17-02-2019, 07:38 PM
(آخر تعديل لهذه المشاركة: 17-02-2019, 07:51 PM بواسطة medreg.)
لازالت المشكلة كما كانت في الأول
هل هناك طريقة اخرى لعمل نسخة احتياطية لقاعدة البيانات في مجلد اخر
مع العلم ان قاعدة البيانات موضوعة في مجلد داخل مجلد المشروع
للتوضيح :
المجلد الأول اسمه mirnam
وبداخله مجلد المشروع وإسمه project1
ويوجد بداخل مجلد المشروع مجلد اخر المتواجد به قاعدة البيانات واسمه sbase
كما يوجد بايضا داخل مجلد المشروع مجلد اخر والمراد بحفظ النسخة الإختياطية لقاعدة البيانات واسمه Archives
اما بالنسبة لقاعدة البيانات teste.abs ستحمل اسم اخر ناتج عن المكون Combobox1 و المكون spinedit1 اثناء عملية النسخ وتخزن في المجلد Archives
المشاركات : 117
المواضيع 1
:
: 38
الإنتساب : May 2017
السلام عليكم, أخ medreg, لم توضح جيدًا المسار الذي تعمل معه.
لم في المرة الأولى
PHP كود :
Pdir:='..\..\sbase\Archives';
ثم في الشرط لم تستخدم المتغير pdir, وقارنت بـ:
هل كنت تقصد ب ..\..\, أن تخرج من المجلد win32\debug؟؟
هكذا لن يتحقق الشرط, لأنه دائما يقوم بانشاء المجلد بالرجوع مجلدين للخلف.
أيضًا,
CreateDir, لا يمكنها إنشاء أكثر من مجلد, إستعمل
ForceDirectories.
جرب هكذا.
كود :
procedure TRestoreBase.N1Click(Sender: TObject);
var
Pdir:string;
backupDBname: string;
begin
Pdir:='..\..\sbase\Archives\'; //أو 'sbase\Archives\'
backupDBname := ComboBox1.Text + SpinEdit1.text;
RestoreBase.Caption:='حفظ المعطيات';
GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما';
Sleep(200);
ForceDirectories(Pdir);
if DirectoryExists(Pdir) then
begin
DM.OnDestroy(sender);
if copyfile(pchar('teste.ABS'),pchar(Pdir + backupDBname), false) then
begin
Sleep(500);
ShowMessage('تمت عمليةالأرشفة بنجاح');
end;
DM.OnCreate(sender);
end;
Close;
end;
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
السلام عليكم
افهم مما سبق ان قاعدة البيانات
\mirnam\sbase\teste.abs
المشروع
\mirnam\project1.exe
النسخ الاحتياطية تكون في
\mirnam\sbase\archives
هل هذا صحيح ؟
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(18-02-2019, 10:34 AM)B.M.AbdelAziZ كتب :
السلام عليكم
افهم مما سبق ان قاعدة البيانات
\mirnam\sbase\teste.abs
المشروع
\mirnam\project1.exe
النسخ الاحتياطية تكون في
\mirnam\sbase\archives
هل هذا صحيح ؟
بل قاعدة البيانات تكون في
Mirnam\Project1\sbase\teste.abs\
المشروع
Mirnam\Project1\project1.exe
النسخ الإحتياطية تكون في
Mirnam\Project1\sbase\archives\
جزاكم الله عنا كل خير
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
كود :
procedure TRestoreBase.N1Click(Sender: TObject);
var sPath,Pdir:string;
begin
RestoreBase.Caption:='حفظ المعطيات';
GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما';
sPath:=ExtractFilePath(ParamStr(0));
Pdir:=sPath+'sbase\Archives';
CreateDir(Pdir);
Sleep(200);
if DirectoryExists(Pdir) then
begin
DM.OnDestroy(sender);
copyfile(pchar(sPath+'teste.ABS'),pchar(Pdir+'\'+ComboBox1.Text+SpinEdit1.text),false);
end else begin
ForceDirectories(Pdir);
end;
DM.OnCreate(sender);
Sleep(500);
showMessage('تمت عمليةالأرشفة بنجاح');
Close;
end;
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(19-02-2019, 08:26 AM)B.M.AbdelAziZ كتب : كود :
procedure TRestoreBase.N1Click(Sender: TObject);
var sPath,Pdir:string;
begin
RestoreBase.Caption:='حفظ المعطيات';
GroupBox1.Caption:='إختار الشهر والسنة المراد حفظهما';
sPath:=ExtractFilePath(ParamStr(0));
Pdir:=sPath+'sbase\Archives';
CreateDir(Pdir);
Sleep(200);
if DirectoryExists(Pdir) then
begin
DM.OnDestroy(sender);
copyfile(pchar(sPath+'teste.ABS'),pchar(Pdir+'\'+ComboBox1.Text+SpinEdit1.text),false);
end else begin
ForceDirectories(Pdir);
end;
DM.OnCreate(sender);
Sleep(500);
showMessage('تمت عمليةالأرشفة بنجاح');
Close;
end;
لازالت المشكلة قائمة
بالنسبة لإنشاء المجلد المسمى archives
العملية تمام لكن لا يوجد بداخله اي شيئ
يعني قاعدة البيانات لم يتم حفظها