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

*فورم* كيف تضغط البيانات بامتداد ZIP من داخل أكسس أبو هاجر (4)

مغلق
بدأه abohajr في 20 ديسمبر 2002 · 19 رد · 3,448 مشاهدة · في قسم الأرشيف و المواضيع المميزه
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

موضوعات سابقة في هذه السلسلة

كيف تتيح للمستخدم البحث بأي حقل من حقول البيانات ـ أبو هاجر (1)

http://www.arabteam2000.com/vb/showthread....ht=%E5%C7%CC%D1

كيف تجعل برنامجك يتأكد من وجود إصدار أكسس المناسب قبل تشغيله - أبو هاجر (2)

http://www.arabteam2000.com/vb/showthread....ht=%E5%C7%CC%D1

كيف تستخدم السحب والإفلات في أكسس - أبو هاجر (3)

http://www.arabteam2000.com/vb/showthread....ht=%E5%C7%CC%D1

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

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

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

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

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

هذه الأداة هي XceedZip.dll وليس المجال هنا مجال تعداد ميزات هذه الأداة لكن أترك لكم المثال المرفق لتطلعوا عليه وتجربوه علماً بأنني وضعته على شكل exe لأنني وضعت في داخله أمر تعريف الأداة وهو أمر ضروري حتى تعمل الأداة بشكل صحيح وقد شرحت ذلك في نموذج التعليمات المرفق بالبرنامج

علماً بأن الملفات سيتم وضعها في الدليل التالي

c:cop_zip_access

وبعد الانتهاء من فك الملفات اذهب إلى الدليل المحدد وانقر نقراً مزدوجاً على البرنامج com_zip.mdb وجربه تجربة قاسية وحاول التعديل في القاعدة المرفقة ثم استرجاع النسخة وتأكد من أنه يقوم بالمطلوب وأنا في انتظار ردكم وانطباعاتكم

آملاً أن يجوز البرنامج على رضاكم وأن تجدوا في ما ينفع ولا تنسوني من صالح الدعاء

أخوكم / أبو هاجر

http://site127.webhost4life.com/aboali/com..._zip_access.exe

#2

كثر الله من امثالك المخلصين في توصيل المعلومه والتوضيح

#3

جزاك الله خير

#4

اخي الكريم ابو هاجر

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

حقيقة ان اللسان عاجز عن الشكر عن ما تقدمه لنا في منتدانا الحبيب فلقد غمرتنا بكرمك وجودك الذي لاحدود له ولن نستطيع سداد دينك مهما فعلنا

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

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

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

#5

أستاذي/ أبو هاجر

بارك الله فيك وان شاء الله أجرب البرنامج وأفيدك بما أتوصل إليه.

ibnmusqat.gif
#6

الأخ ابن مسقط الإخوة الكرام

السلام عليكم

ما زلت أنتظر الرد هل نجحت العملية معكم أم لا

اقتباس
بارك الله فيك وان شاء الله أجرب البرنامج وأفيدك بما أتوصل إليه.

تحياتي للجميع

#7

الأخ أبو هاجر

لك مني وعد يوم غد إن شاء الله تعالى بتجربته في العمل وأريد بداية أن أستفسر عن الآتي :

1 - هل الضغط ممكن فكه عن طريق البرامج المشهورة مثل WinZip أو WinRar ؟ .

2 - هل ملف الضغط فقط لملفات الأكسس ؟ .

3 - هل يمكن ضغط قاعدة بيانات أخرى غير القاعدة التي يتم تشغيل البرنامج منها Current Database ؟ .

4 - هل يمكن اختيار دليل آخر لملفات الضغط غير c:cop_zip_access ؟ .

5 - في حالة إمكانية تبديل الدليل هل يستطيع تقسيم الملف في حالة ضغطه على دسكات مثلا ؟ .

تحياتي .

#8

أستاذي/ أبو هاجر

في الحقيقة لا أعرف ما أقوله لك ، فقد أبهرني العمل الرائع فالله يوفقك.

سؤالي الوحيد بالإضافة إلى ما ذكر :

هل سيعمل أمر الضغط في حالة عدم وجود برنامج Winzip ؟

ولك شكري وتقديري العظيم .

ibnmusqat.gif
#9

الأخ أبو هادي

تحية طيبة وبعد

أسعدتني مشاركتك وإليك الجواب

1 - هل الضغط ممكن فكه عن طريق البرامج المشهورة مثل WinZip أو WinRar ؟ . نعم

2 - هل ملف الضغط فقط لملفات الأكسس ؟ . بل لأي ملفات

3 - هل يمكن ضغط قاعدة بيانات أخرى غير القاعدة التي يتم تشغيل البرنامج منها Current Database ؟ . الضغط ليس لنفس قاعدة البيانات بل للقاعدة المرفقة التي من المفترض أن تكون الجداول فيها

4 - هل يمكن اختيار دليل آخر لملفات الضغط غير c:cop_zip_access ؟ . نعم

5 - في حالة إمكانية تبديل الدليل هل يستطيع تقسيم الملف في حالة ضغطه على دسكات مثلا ؟ . نعم يطلب منك الدسك الآخر وهكذا ويفعل مثل ذلك عند فك الضغط

الأخ ابن مسقط

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

هل سيعمل أمر الضغط في حالة عدم وجود برنامج Winzip ؟ نعم ولا علاقة له بها مطلقاً فالأداة تعمل مستقلة دون الحاجة لأي برنامج آخر

تحياتي لكما وفي انتظار المزيد من تجارب الأعضاء

#10

أخي أبا هاجر

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

DBEngine.CompactDatabase datapath & dataname, getpath(CurrentDb.Name) & "tempback.mdb"

ويعطي رسالة الخطأ هذه :

Object required

مع ملاحظة أني جربته على أكسس 97 .

تحياتي .

#11

الأخ الكريم أبو هادي

شكراً جزيلاً على تفاعلك والمشكلة بسيطة وهي أن قاعدة البيانات التي تحتوي على الجداول والتي يتم ضغطها وهي mydata.mdb مكتوبة بتنسيق أكسس 2000 ولذلك فإن أكسس 97 لا يستطيع ضغطها قم بتحويل القاعدة السابقة إلى تنسيق أكسس 97 بنفس الاسم وجرب

آمل إفادتي عن النتيجة مكرراً شكري الحار لك وللإخوة الذين تفاعلوا مع الموضوع

أخوك / أبو هاجر

#12

لا يا أبا هاجر

قاعدة البيانات mydata.mdb محولة كذلك إلى أكسس 97 .

عموما غدا إن شاء الله سوف أفحصها مرة أخرى ، أعتقد هناك مشكلة في الـ Path .

تحياتي

#13

أخي أبا هاجر

لقد وجدت الخطأ وهو قيمة الـ datapath حيث تساوي "" فقط ثم بدلتها بشكل مؤقت باستخدام دالة Getpath فعمل معي بشكل ممتاز وقمت بفتح ملف الـ Backup وكل الأمور ممتازة والحمد لله .

يبقى مسألة التأكد من قيمة المتغير datapath .

DBEngine.CompactDatabase datapath & dataname, getpath(CurrentDb.Name) & "tempback.mdb"

تحياتي

#14

بكل تأكيد السبب لعدم وجود قاعدة بيانات الـ Backup وهذا سيحصل أول مرة فقط حسب ما أعتقد .

فكرة الحل أتتني الآن وهي كالتالي :

If datapath = "" then datatpath=getpath(CurrentDb.Name)

آسف هذا ليس تدخلا ولكن ما دام أني وصلت للحل فلا داعي أن تضيع وقتك في البحث والتقصي .

أخوك أبو هادي

#15

الأخ الكريم أبا هادي

البرنامج يعمل عندي بشكل جيد وقد جربته على جميع إصدارات أكسس

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

اقتباس
افتح جدول data_path وقي حقل pathofdata حدد مسار قاعدة البيانات أو اترك الحقل فارغاً إذا كانت قاعدة البيانات موجودة في نفس المسار الذي يوجد فيه البرنامج

مثلاً قاعدة بيانات على السيرفر يمكن أن يكون مسارها كالتالي :

MYSERVERMYPROG

3- - افتح جدول data_path وقي حقل dataname حدد اسم قاعدة البيانات[/

QUOTE]

ومعنى ذلك أنك أمام أحد خيارين إما تحديد المسار في الجدول أو ترك الحقل فارغاً وسيفترض البرنامج في هذه الحالة أن القاعدة mydata.mdb موجودة في نفس المسار

تحياتي وشكري على الاهتمام

#16

أخي "أبو هاجر"

لقد اتبعت التعليمات بحذافيرها .. يبقى أن أقوم بآخر تجربة غدا إن شاء الله تعالى وسأخبرك بالخلاصة .

أخوك أبو هادي

#17

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

****وجزاكم الله كل خير يا أبا هاجر *****

#18

أخ أشرف

السلام عليكم

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

تحياتي وشكراً على التفاعل

#19

يا أبا هاجر

الخطأ أنك لم تقرأ قيمة الـ datapath من البداية فقد قمت بتشييك القيمة من الجدول باستخدام الدالة IsNull فقط .

وقد قمت بتعديل هذه الجزئية كالتالي :

If IsNull(DLookup("[pathofdata]", "data_path")) = True Then

    datapath = getpath(CurrentDb.Name)

Else

    datapath = DLookup("[pathofdata]", "data_path")

    If Right(datapath, 1) <> "" Then

        datapath = datapath & ""

    End If

End If

تحياتي

#20

أخي أبا هادي

بالضبط تماماً ملاحظة دقيقة تدل على دقة في قراءة الكود

تحياتي

أخوك / أبو هاجر

هذا الموضوع مغلق.

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

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

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

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

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