الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية نسخ قاعدة البيانات الى مكان اخر

بدأه ابن رستم في 26 يونيو 2009 · 7 رد · 1,463 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

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

هذا اول مشاركة لي في هذا المنتدى لكنها استفسار :P لاني مازلت مبتدا -_- وارجو المساعدة

قمت بانشاء برنامج تسيير الاعمال لبلدية

لكن ينقصني شئ وهو كيفية نسخ قاعدة البيانات الى مكان آخر عند امتلاء

disque dir

+

اظهار نسبة الفراغ في

disque dir

الموجود فيه قاعدة البيانات

+

ونسخها تلقائيا عند امتلاء حجم

disque dir

#2

أخي فيما الشطر الأول من السؤال لا أعرف إجابته أما فيما يخص نسخ القاعدة فهو كالآتي

أولا من الأحسن إنشاء مجلد جديد في ال D وليكن مثلا (ne pas supprimer) حتى لا يحذف والكود هو

CreateDir('d:\ne pas supprimer');

ثم نأتي لعملية النسخ

ShellApi ; تصرح به في Uses

....................

{$R *.dfm}

function CopyDir(const fromDir, toDir: string): Boolean;

var

fos: TSHFileOpStruct;

begin

ZeroMemory(@fos, SizeOf(fos));

with fos do

begin

wFunc := FO_COPY;

fFlags := FOF_FILESONLY;

pFrom := PChar(fromDir + #0);

pTo := PChar(toDir)

end;

Result := (0 = ShFileOperation(fos));

end;

.........................

ثم عملية النسخ

copyDir(c:\program\db.mdb ','d:\ne pas supprimer');

تم تعديل هذه المشاركة بواسطة nansoft في 29 يونيو 2009 في 16:40

#3

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

#4

السلام عليكم :

أخي NanSoft إذا أردت نسخ ملف بمجلد معين يكفي كتابة :



copyFile('c:\data1\file.db','d:\data2'); 2
createdir('d:\data2');	   1

على اعتبار أن ملف قاعدة البيانات هو File.db متواجد بالمجلد Data1 ، و نريد نسخه بالمجلد المسمى Data2 الذي أنشأناه بالكود الأول.

على هذا فلا يوجد أي داع للــ Function التي أدرجتها آنفا ، أقصد أن الكود لوحده يكفي و يفي بالغرض.

- بينما لو استعملت CopyDir هنــا الــFunction مطلوبة ، و نحتاج إلى ذلك إذا أردنــا نسخ كل الملفات (*.*) (أو كل الجداول db.*) المتواجدة بالمجلد Data1 إلى مجلد و ليكن Data2

بواسطة الكود :


copyDir('c:\data1\*.*','d:\data2\'); 2
createdir('d:\data2');							1

بالتوفيق أخي

تم تعديل هذه المشاركة بواسطة nabilkeb في 16 يوليو 2009 في 19:44

#5

مشكور أخي نبيل . كيف حالك إن شاء الله بخير :salam:

#6
nabilkeb كتب:
- بينما لو استعملت CopyDir هنــا الــFunction مطلوبة ، و نحتاج إلى ذلك إذا أردنــا نسخ كل الملفات (*.*) (أو كل الجداول db.*) المتواجدة بالمجلد Data1 إلى مجلد و ليكن Data2

بواسطة الكود :

createdir('d:\data2');							1
copyDir('c:\data1\*.*','d:\data2\');		 2

</div>بالتوفيق أخي

مشكور على هذا المجهود

سؤال

إذا كان مجلد Data2 على أي قرص هل يصلح كتابة الكود بهذه الطريقة من دون أن أشير إليه في الكود

copyDir('\data1\*.*','\data2\');

وجزاكم الله عنا كل خير

تم تعديل هذه المشاركة بواسطة medreg في 17 يوليو 2009 في 11:12

#7

العفو أخي Medreg ، سررت بلقائك أخي طلال ، أهلا و سهلا بالجميع :

- لا بد من تحديد المجلد و ملفاته و مساره ، و المكان المراد نقله فيه أقصد المجلد إذا كان موجودا أو يتم انشاؤه.

مثلا كتابة هذا الكود

اقتباس
createdir('d:\data2'); 1

copyDir('data1\*.*','d:\data2\' ); 2

معناه أنه سيتم نسخ Data1 المتواجد بنفس مجلد المشروع (سواء كان مجلد المشروع بالقطاع C أو D أو...) بكل ما يحتويه ، إلى المجلد Data2 بالقرص D . و هذا الكود يوافق :

اقتباس
createdir('d:\data2'); 1

copyDir('.\data1\*.*','d:\data2\' ); 2

و هذا الأخير أحسن و أسلم ، يبقى شيء واحد و هو مكان النسخ ، من المستحسن أن يترك للمستخدم لأننا لا نعلم ما لديه من الأقراص ، و ربما يريد نسخه إلى FlashMemory مثلا. يعني لا نكتب \:D نعوضه بمتغير يمثل القرص،الذي يحدده المستخدم.

و هناك طرق لاستخراج قطاعات القرص بجهاز المستخدم ، ليحدد ماشاء منها .

والسلام عليكم.

تم تعديل هذه المشاركة بواسطة nabilkeb في 17 يوليو 2009 في 17:26

#8

بارك الله فيكم إخوتي على هذه الإجابات النيرة فعلا كانت لديا فكرة واحدة في السؤال المطروح فأردت أن أفيد بها السائل ولكن مع تدخلاتكم أنا أيضا أستفدت

شكرا جزيلا

مواضيع مشابهة