السلام عليكم اخواني
انا بصدد تطوير برنامج تسيير دخول و خروج العمال(دلفي بارادوكس)
كيف يمكنني القيام بأرشفة قاعدة البيانات في كل يوم و استرجاع احداها بعد مرور فترة زمنية معينة. شكرا مسبقا
وعليكم السلام
حتى تنظم الامور من الاحسن ان تكون كل ملفات قواعد البيانات في مجلد واحد مثلا Data
1- اغلاق كل المكونات Table و/أو Query
2- نسخ أو َضغط كل محتوى المجلد بملف اسمه يحتوى التاريخ والوقت ومن الاحسن يكون بلاحقة/صيغة جديدة غير مستعملة
عند الاسترجاع تبحث عن كل الملفات بالاحقة/الصيغة المختارة وتترك المستخدم يختار واحد، بعدها تقوم بالعكس
1- حذف كل محتوى المجلد Data
2- نسخ/فك ضغط محتوى الملف المختار بالمجلد Data
الان ارنا محاولتك لما سبق و ان شاء الله تجد متابعة
السلام عليكم
اود أخويا عبد العزيز و لؤي ان احتفظ و استرجع كل قاعدة البيانات
فعند الضغط على زر الحفظ ك:
;(procedure Tfentreesortie.Button10Click(Sender: TObject
;var Pdir
tring
begin
;'Pdir:='.\save pointe
;(CreateDir(Pdir
if DirectoryExists('save pointe')then
begin
;(copyfile(('gestion_pointage.exe'),('C:\pointe\sources\sauvgarde17.011.14.exe'),false
end
else begin
;(CreateDir(Pdir
;end
;end
لكن عند استرجاع قاعدة البيانات بعد اجراء تغييرات عليها (مثلا اضافة تسجيلات اخرى ) تبقى هي نفسها
وشكرا
السلام عليكم
أخي عبد العزيز فهمت منك انه يتوجب علي ان أضع كل الملفات في مجلد واحد(....dfm,pas,dpr,ddp,exe) و حفظها هناك وعند استرجاعها في وقت لاحق تأتي مكان الملفات الحالية و ابدالها
شكرا
إقتباس :لكن عند استرجاع قاعدة البيانات بعد اجراء تغييرات عليها (مثلا اضافة تسجيلات اخرى ) تبقى هي نفسها
وماذا كنت تنظر ؟ الاسترجاع يعيد ما تم حفظه وما عدل بعد الحفظ يضيع
إقتباس :يتوجب علي ان أضع كل الملفات في مجلد واحد
كنت اتحدث عن ملفات قاعدة البيانات *.db وغيرها
adel78 كتب :ان احتفظ و استرجع كل قاعدة البيانات
فعند الضغط على زر الحفظ ك:
لكن عند استرجاع قاعدة البيانات بعد اجراء تغييرات عليها (مثلا اضافة تسجيلات اخرى ) تبقى هي نفسها
انت تقوم بنسخ الملف التنفيذي ولا تقوم بنسخ قاعدة البيانات
عند النسخ اغلق كل الجدوال وضع كل قواعد البيانات في ملف مضغوط بتاريخ اليوم
او توجد طريقة اخرى استخدمتها في
هذا البرنامج
PHP كود :
procedure TForm1.mniImporter1Click(Sender: TObject);
var
i : Integer;
StrArr :TArrayString;
begin
sGauge1.Visible :=True;
if not DirectoryExists(CurrentDir+'database\') then CreateDir(CurrentDir+'database\') ;
sOpenDialog1.InitialDir:=CurrentDir+'database\';
sOpenDialog1.FileName:='Exporte_'+FormatDateTime('yyyy_mm_dd', Now)+'.txt';
if sOpenDialog1.Execute then
with TStringList.Create do begin
try
LoadFromFile(sOpenDialog1.FileName);
sGauge1.MaxValue:=Count-1;
for i:=0 to Count-1 do begin
StrArr := Split(Strings[i] ,'|' );
if high(StrArr)>10 then
if not Form2._exist(StrArr[7]) then begin
tbl1.Insert;
tbl1.FieldByName('Wilaya').Value:=StrArr[0];
tbl1.FieldByName('Type').Value:=StrArr[1];
tbl1.FieldByName('Organisme').Value:=StrArr[2];
tbl1.FieldByName('NOCCP').Value:=StrArr[3];
tbl1.FieldByName('Ncontrat').Value:=StrArr[4];
tbl1.FieldByName('Datecontrat').Value:=StrArr[5];
tbl1.FieldByName('Adresse').Value:=StrArr[6];
tbl1.FieldByName('Nom_et_Prenom').Value:=StrArr[7];
tbl1.FieldByName('Poste_occupe').Value:=StrArr[8];
tbl1.FieldByName('Tel').Value:=StrArr[9];
tbl1.FieldByName('Fax').Value:=StrArr[10];
tbl1.FieldByName('Email').Value:=StrArr[11];
tbl1.Post;
Application.ProcessMessages;
sGauge1.Progress:=i;
sGauge1.Suffix:='% , Importation de '+StrArr[7]+' ( '+inttostr(i+1)+'/'+inttostr(Count)+' enregistrements terminées )';
//Sleep(10);
end;
end;
finally
Free;
sGauge1.Visible:=False;
end;
end;
end;
يمكن ذلك عن طريق اضافة جدول جديد بداخل قاعدة البيانات المستخدمه وربطها مع جدولي الدخول والخروج يعني ربط التاريخ فيما بينهما ويكون ذلك بشيفره مخصصة وبعددها عندما تريد طلب متابعة سجل تاريخ ما تستخدم ذلك الجدول للفرز يعني ببساطه ستستعمل خاصية الفلترة Feltred للجدول كما تعودنا ... تحياتي