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

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

بدأه kafi في 11 فبراير 2012 · 10 رد · 2,482 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

post-32358-035321100 1328965582_thumb.jpza-Ex_42.rar

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

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

لدي قاعدة بيانات (بجانبها يوجد ملف اسمه Rockey4Nd.dll ) تحتاج لعملها الى وضع الملف Rockey4Nd.dll في مسار معين وهو C:\windows\system

عند فتح قاعدة البيانات يتم البحث عن الملف المذكور، فإن لم يوجد تظهر نافذة تنبيه للمستخدم (Caution_File_Rockey) بأن الملف غير موجود في مكانه

الى هنا الامور كلها سليمة

المطلوب:

تم وضع زر على النافذة المذكور من اجل ان يقوم المستخدم بالضغط عليه وبالتالي يتم نسخ الملف المذكور ( وذلك لان هناك كثير من المستخدمين لا يعرف كيف ينسخ ملف من مكان معين الى مكان آخر)

بحثت في المنتدى، ولكن معظم الامثلة بما فيها مثال للاخت زهرة كلها تعتمد على اختيار المصدر واختيار الهدف

المصدر بالنسبة الي هو مسار فتح قاعدة البيانات ربما تكون من ال C: أو D: او أي مكان اخر حسب ان يضع المستثمر قاعدة البيانات

الهدف : هو C:\widwows\system

تم استخدام التعليمة

Shell ("xcopy Rockey4ND.dll c:\windows\system")

ولكن المشكلة انني لا اعرف كيف اكتب قبل اسم الملف ( مكان تواجده)

ارجو تعديل المثال المرفق يحيث يحقق الغاية المنشودة وهي نسخ الملف Rockey4Nd.dll من اي مكان وجدت فيه قاعدة البيانات

المثال معمول على اكسس 2007

والف شكر

المرفقات
1.JPG

تم تعديل هذه المشاركة بواسطة kafi في 11 فبراير 2012 في 16:06

#2

تفضل اخي الكريم

ملفك بعد التعديل

قم بنقل مجلد القاعدة والملف الى اي مكان تريد ( حتى لو كان على كوكب الزهره ) سيتم نسخ الملف الى مجلد نظام الويندوز

za-Ex_42-UP.rar

بالتوفيق

2
#3

الف الف شكر اختي زهرة على سرعة اجابتك

الحل رائع، ويعمل بشكل ممتاز كما اريد، وكما هو المنطق عند توزيع البرنامج

ولكن يا اخت زهرة

بفرض ان الملف Rockey4Nd.dll لسبب ما، قد تم حذفه من جوار قاعدة البيانات

فعندئد سوف اضطر الى ان اطلب من المستثمر ادخال قرص البرنامج الاساسي في سواقة الليزر ( طبعا اكون انا عند توزيع البرنامج واضع نسخة من الملف على الروت الاساسي للقرص)

هل بالامكان تعديل الكود بحيث يتم نسخ الملف من الروت الاساسي للسواقة الليزرية

والف الف شكر

za-Ex_42-UP_A.rar

post-32358-057719400 1328973953_thumb.jp

المرفقات
2.JPG
#4

اخي الفاضل

لماذا كل هذا العذاب وعمليات النسخ الغير مجدية

يوجد في المنتدى برنامج يقوم بعمل SetUp لقاعدة البيانات وجميع الملفات المرتبطة بها سواء كانت صور او ملفات اضافية او مكتبات DLL وتستطيع من خلال هذا البرنامج اثناء خطوات الويزد ( المعالج ) ان تضع مسارات الملفات في اماكنها الصحيحة وبعد اانتهاء المعالج وصنع ملف SetUp.exe واثناء تثبيت البرنامج على اي جهاز سيقوم بتثبيت الملفات والمكتبات في اماكنها الصحيحه بدون تدخل منك .

فقط ابحث في المنتدى عن برنامج التثبيت او SetUp

بالتوفيق

1
#5

شكرا اخي زهرة على ما تفضلت به

ولكن برنامجي عبارة عن ملفين فقط هما ملف قاعدة البيانات وملف ال Rockey4Nd.dll الخاص بالدنغل

بفرض انني اتبعت الطريقة التي تفضلت بها حضرتك وهي اجراء عملية Setup للبرنامج والملفات المرتبطة بها، مايحدث ومن خلال خبرتي في توزيع البرنامج التي مضى عليها اكثر من عدة سنوات, ان المستثمر سوف يقوم بتعبئة قاعدة البيانات وبعد عدة اشهر من عملية التنصيب قد يضطر الى اجراء عملية فورمات للجهاز

عندئذ سوف يذهب الملف Rockey4nd.dll من مكانه ولن يعمل البرنامج، يقوم بالاتصال بي ( المستثمر قد يكون مبتدى ... لا يعرف كيف ينسخ ملف من مكان الى آخر)

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

ثانيا" :ماذا لو قلنا له اجري عملية setup من جديد ( اي بعد ان قام بالفورمات.... ماذا يحدث... قد تنسخ قاعدة البيانات الفارغة فوق التي قام بتعبئتها )

ارجو التكرم بذكر الحل من اجل المعرفة العامة لي ولاخوتي في المنتدى، ومن اجل ما ذكرت اعلاه

والف الف شكر على تجاوبك معي

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

#6
kafi كتب:

شكرا اخي زهرة على ما تفضلت به

ولكن برنامجي عبارة عن ملفين فقط هما ملف قاعدة البيانات وملف ال Rockey4Nd.dll الخاص بالدنغل

بفرض انني اتبعت الطريقة التي تفضلت بها حضرتك وهي اجراء عملية Setup للبرنامج والملفات المرتبطة بها، مايحدث ومن خلال خبرتي في توزيع البرنامج التي مضى عليها اكثر من عدة سنوات, ان المستثمر سوف يقوم بتعبئة قاعدة البيانات وبعد عدة اشهر من عملية التنصيب قد يضطر الى اجراء عملية فورمات للجهاز

عندئذ سوف يذهب الملف Rockey4nd.dll من مكانه ولن يعمل البرنامج، يقوم بالاتصال بي ( المستثمر قد يكون مبتدى ... لا يعرف كيف ينسخ ملف من مكان الى آخر)

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

ثانيا" :ماذا لو قلنا له اجري عملية setup من جديد ( اي بعد ان قام بالفورمات.... ماذا يحدث... قد تنسخ قاعدة البيانات الفارغة فوق التي قام بتعبئتها )

ارجو التكرم بذكر الحل من اجل المعرفة العامة لي ولاخوتي في المنتدى، ومن اجل ما ذكرت اعلاه

والف الف شكر على تجاوبك معي

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

اخي الفاضل

هل تعتقد ان العملية بسيطة وسهله كما تتخيل ان اضع لك كود وينتهي الأمر

لا يا أخي الكريم

الموضوع اعقد من ذلك بكثير لمعرفتي وخبرتي في مثل هذه الأمور من الأمور البرمجية

ولهذا اقترحت عليك ان تقوم بعمل Setup للبرنامج وهو سيقوم بالنيابة عنك بكل شيء

حيث سيقوم بنسخ ملف الدنقل الى مجلد النظام وستكون القاعدة في المجلد الخاص بها سواء على محرك الأقراص C او غيره من المحركات وهنا تنتهي المشكلة نهائيا

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

ولهذا ستكون القاعدة محفوظة بكامل بياناتها ولم يتبقى له سوى ملف الدنقل ولهذا يجب عليه تنصيب البرنامج من جديد بما ذلك ( القاعدة وملف الحماية ) الى النظام

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

اما الطريقة التي تريد اتباعها فهي معقده والسبب في ذلك :

1. ستحتاج الى كود برمجي للتعرف على جميع الأقراص والسواقات التي في جهاز الشخص لكي يحدد فقط اسواقات الأقراص CD

2. ستحتاج الى كود برمجي يقوم بالبحث عن سواقة الأقراص CD التي بها ملف الحماية

3. ستحتاج الى كود ليقوم بعملية النسخ من السواقة بعد تحديدها والتي ستكون مجهولة المكان فقد تكون هي D او E او F او H فلا تعلم ما هو المكان المختار لدى المستخدمين فكل مستخدم لديه اوضاع مختلفة لسواقة اقراص الـ CD

هل تعتقد ان هذه الأكواد سطر او سطرين لا والف لا

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

اذا الطريق المختصر والسهل كما اشرت اليك سابقا

1. عمل ملف SetUp يحتوي على قاعدة البيانات وملف الحماية ( ويحدد لملف الحماية ان يتم وضعه في مجلد النظام )

2. في حالة قيام المستثمر بعملية الفورمات فيجب عليه اولا القيام بنسخ قاعدة البيانات الى مكان آمن

3. بعد اعادة النظام الى وضعه الطبيعي يدخل الـ CD الذي به البرنامج ويقوك بعملية التثبيت وسيتم نسخ ملف قاعدة البيانات الى المجلد الخاص بها ويتم نسخ ملف الحماية الى مجلد النظام

4. يقوم المستخدم بإستبدال القاعدة الجديده الفارغة بالقاعدة القديمة التي بها البيانات

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

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

ولكن المشكلة انك ستأتي فيما بعد وتسأل وتبحث عن اجابه لأن هناك اشخاص قاموا بتحميل البرنامج ولديهم نسخ مختلفه من نظام الويندوز ( Win2000 - WinXP - Win7 ) وطبعا ليس كل نظام يوجد به المكتبات المطلوبه وهنا لن تجد من يرد على سؤالك !!!!!!

آمل انني وضحت لك ما تريد الوصول اليه وان امامك طريقين

1. الطريق السهل بواسطة عمل SetUp للبرنامج

2. الطريق الصعب الخاص بالأكواد والمكتبات

بالتوفيق

2
#7

الف شكر يا اخت زهرة

على ماتفضلت به من الشرح، كنت اظن ان العملية بسيطة ( مجرد بضعة اسطر من الكود)

شكرا مرة ثانية

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

#8

السلام عليكم

اختي زهرة، جربت المثال الذي ارسلته، وقمت حضرتك بالتعديل عليه، وعمل المثال بشكل ممتاز مائة بالمائة

قمت بأخذ الكود الموجود في المثال، ووضعته نفسه في قاعدة البيانات الخاصة بي،

حدثت مشكلة في عدم التعرف على المتغير sPath

  Me.sPath = Application.CurrentProject.Path & "\Rockey4ND.dll

حاولت جاهدا البحث في كل المثال وفي الوحدات النمطية وفي العناصر، ولم استطع ان أجد تعريف للمتغير المذكور.

ارجو توضيح ذلك

وشكرا

تم تعديل هذه المشاركة بواسطة kafi في 12 فبراير 2012 في 01:43

#9
kafi كتب:

السلام عليكم

اختي زهرة، جربت المثال الذي ارسلته، وقمت حضرتك بالتعديل عليه، وعمل المثال بشكل ممتاز مائة بالمائة

قمت بأخذ الكود الموجود في المثال، ووضعته نفسه في قاعدة البيانات الخاصة بي،

حدثت مشكلة في عدم التعرف على المتغير sPath

  Me.sPath = Application.CurrentProject.Path & "\Rockey4ND.dll

حاولت جاهدا البحث في كل المثال وفي الوحدات النمطية وفي العناصر، ولم استطع ان أجد تعريف للمتغير المذكور.

ارجو توضيح ذلك

وشكرا

أخي الكريم

العنصر sPath هو عبارة عن TextBox موجود على نفس النموذج لكنه مصغر جدا

أختنا الكريمة زهرة بارك الله بك و انزل النزل الأعلى 1+

بالتوفيق

1

الله غايتنا و الرسول قدوتنا و القرآن دستورنا و الجهاد سبيلنا و الموت في سبيل الله أسمى أمانينا

{حَتَّى إِذَا جَاءَ أَحَدَهُمُ الْمَوْتُ قَالَ رَبِّ ارْجِعُونِ*لَعَلِّي أَعْمَلُ صَالِحًا فِيمَا تَرَكْتُ*كَلا إِنَّهَا كَلِمَةٌ هُوَ قَائِلُهَا وَمِنْ وَرَائِهِمْ بَرْزَخٌ إِلَى يَوْمِ يُبْعَثُونَ}

#10

بارك الله بك اخي الكريم الفاروق على المشاركة

post-15367-070282800 1329035772_thumb.gi

بالتوفيق

المرفقات
K1.gif
1
#11

الف شكر للاخ alfarouk79 , و مليــــون الـــــف شـــــكر للاخـــــت زهـــــرة لما قدمته من معلومات مفيدة

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…