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

سؤالين مهمين ارجو الافادة

بدأه shadi77 في 6 فبراير 2009 · 6 رد · 593 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا يا اساتزة كيفكم اليوم؟

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

كما تعرفو اهمية القاعدة بالنسبة لاي مشروع وضروريتها وحمايتها من العبث قدر الامكان !! مشان هيك اسال عن كيفية وضع رقم سري للقاعدة تمنع الدخول لها يدويا وبشكل لا يتعارض مع عملها في البرنامج !! اذ قمت بوضع رقم سري لكن بعدها فشل المشروع بالتعرف على القاعدة!! فهل من حل؟

من جهة اخرى

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

ولكم جزيل الشكر

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

#2

أولا بالنسبة للإتصال بقاعدة البيانات .. فعليك إضافة كلمة المرور داخل الـ Provider فقط

;Jet OLEDB:Database Password=123

اي اضافة السطر أعلاه للـ Connection String وتغيير الـ 123 إلى كلمة المرور المناسبة لك

وبخصوص النسخ الإحتياطي فهو كنسخ أي ملف .. ويستحسن ضغط قاعدة البيانات وإصلاحها قبل النسخ

ولنسخ ملف معين مثلا

FileCopy App.Path & "\db1.mdb", App.Path & "\db " & Format(Now, "YYYY-MM-DD HH-nn") & ".bck"

وذلك لنسخ ملف الـ db1.mdb الموجود في مسار البرنامج إلى نفس المسار ولكن بإسم جديد وإمتداد آخر

ويستحسن ايضا وضع تاريخ تنفيذ النسخ الإحتياطي كما هو أعلاه .. ويرجى مراعاة الـ Format أيضا كما هو أعلاه

كما يحتم عليك إغلاق قاعدة البيانات قبل ضغطها او حتى نسخها

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#3

شكرا على المعلومة يا بروفيسور لكن لي استفسارين

اضافة الكود الاول لسترينك البروفايدر كيف يحمي قاعدة البيانات الاصلية في مجلد البرنامج ؟؟ بمعنى اخر: اذا قام المستخدم بالذهاب الى مجلد البرنامج وقام بفتح القاعدة يدويا هل يمنعه ذلك الكود :hmm: ؟ في حال كون الاجابة لا ما الحل لحماية محتوياتها من العبث او التغير؟؟

اما بخصوص حفظ قاعدة البيانات هل يستطيع المستخدم تحديد مسار الملف الجديد او المنسوخ وعدم اعطاء خيار واحد فقط لمكان الحفظ وهو مجلد البرنامج الاصلي؟؟

اخيرا واتحملني بقى

اين يكون امتداد الملف الجديد من الكود الثاني؟

وتسلم يا كبير

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

#4
shadi77 كتب:
اذ قمت بوضع رقم سري لكن بعدها فشل المشروع بالتعرف على القاعدة!! فهل من حل؟
shadi77 كتب:
اضافة الكود الاول لسترينك البروفايدر كيف يحمي قاعدة البيانات الاصلية في مجلد البرنامج ؟؟ بمعنى اخر: اذا قام المستخدم بالذهاب الى مجلد البرنامج وقام بفتح القاعدة يدويا هل يمنعه ذلك الكود :hmm: ؟ في حال كون الاجابة لا ما الحل لحماية محتوياتها من العبث او التغير؟؟

إضافة الكود الأول هذا للإتصال بقاعدة البيانات التي قلت انت انه فشل في التعرف عليها

أي انه بعد حماية قاعدة البيانات بوضع كلمة سر عليها .. للإتصال بها يجب إرسال كلمة السر

ولإرسال كلمة السر تحتاج لإضافة الـ Parameter الخاص بكلمة السر لقاعدة البيانات

والـ Parameter إسمه Database Password

أي لفتح قاعدة بيانات لها كلمة السر يجب إضافة الكود أدناه إلى الـ Connection String

;Jet OLEDB:Database Password=123

وبالطبع عليك تغيير الـ 123 بكلمة السر الخاصة بك :)

shadi77 كتب:
اما بخصوص حفظ قاعدة البيانات هل يستطيع المستخدم تحديد مسار الملف الجديد او المنسوخ وعدم اعطاء خيار واحد فقط لمكان الحفظ وهو مجلد البرنامج الاصلي؟؟

بالطبع ممكن .. إجابتي كانت على سبيل المثال فقط .. والباب مفتوح على مسرعيه للتطوير

وبإمكانك إظهار شاشة إختيار مكان الحفظ بالإعتماد على Microsoft Common Dialog Control 6.0

مرفق مثال بسيط يوضح كيفية إستخدامه لإختيار مسار حفظ الملف الجديد

SaveAsWithCDialog.rar

ومتنساش تدمج ملف الـ ocx مع ملف الـ Setup .. وهو موجود في المسار التالي :

%WinDir%\System32\ComDLG32.ocx

shadi77 كتب:
اين يكون امتداد الملف الجديد من الكود الثاني؟

مش متأكد اذا اللى فهمته من السؤال صح ولا لا .. الإمتداد موجود في آخر الكود .bck

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#5

اها كدة فهمتها .. انا اضفت كود التشفير للبروفايدر بس كنت شايل الباس من القاعدة , ومكنتش اعرف ان شغلها كدة .. حرجع اجرب دلوقت

"" كود النسخ الاحتياطي جميل والاجمل النموذج البسيط لخير كلام قل ودل .. وبخصوص ocx مع السيتب لا يابروفيسور خلاص اتعلمت وموش حوقع مرة تانية 'والله اعلم يعني '

الكود بعد اضافة سطر الفايل كوبي ننجاح التجربة

Private Sub Command1_Click()

On Error GoTo Err:

CDialog1.CancelError = True

FileCopy App.Path & "\db1.mdb", App.Path & "\db " & Format(Now, "YYYY-MM-DD HH-nn") & ".mdb"

CDialog1.Flags = cdlOFNOverwritePrompt Or cdlOFNPathMustExist Or cdlOFNHideReadOnly

CDialog1.Filter = "Database Backup Files (*.bck)|*.bck"

CDialog1.FileName = App.Path & "\db1 " & Format(Now, "YYYY-MM-DD HH-nn") & ".bck"

CDialog1.DialogTitle = "لطفا اختر مكان حفظ النسخة الجديدة لقاعدة البيانات"

CDialog1.ShowSave

MsgBox CDialog1.FileName, vbInformation Or vbMsgBoxRight Or vbMsgBoxRtlReading, "مسار الحفظ"

Exit Sub

Err:

MsgBox "لم يتم اختيار مسار الحفظ", vbCritical Or vbMsgBoxRight Or vbMsgBoxRtlReading, "خطأ"

End Sub

قمت بكتابة امتداد txt لتحفظ القاعدة على شكل ملف تكست لكن يااااه طلع ملف يحتوي 'شخابيط لخابيط' فغيرت رايي على الفور وادرجت امتداد الداتا بيس .mdb يعني تعدل الشغل ونتج قاعدة بيانات سليمة معافاة طبق الاصل عن السابقة !! لكن يا بروفيسور والسؤال المهم الي حيوصل لفايدة الكلام دة كلو وهو:

"عند رغبة المستخدم مستقبلا باستيراد قاعدة البيانات المحفوظة واستبدال القديمة مثلا هل سيكون من خلال عملية كودية عكسية للكود السابق ؟ ام طريقة تغير اسم نسخة القاعدة الجديدة لتحمل نفس اسم القديمة وعمل نسخ ولصق مع موافقة الاستبدال يفي بالغرض :blink: ؟؟؟"

ان كان الطريقتين ممكنتين ايهما تنصح؟؟

وسلامتك يا كبير

SaveAsWithCDialog_shadi.rar

تم تعديل هذه المشاركة بواسطة shadi77 في 6 فبراير 2009 في 22:14

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

#6

تتم عملية الإسترجاع بحذف قاعدة البيانات الحالية ونسخ قاعدة البيانات المحددة إلى المسار الـ Default للبرنامج

App.Path & "\db1.mdb"

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

SaveAsWithCDialog_shadi.rar

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#7

جميل جدا النموذج ...

عايز امخمخ عليه برواقة حتى افهم محتوايته وطريقة عملو

شكرا يا بروفيسور العملية وضحت عالاخر :thumb_up:

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

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