بسم الله والصلاة والسلام علي رسولة الله
الان إن شاء الله نتعلم كيفة نحفظ صورة في قاعدة بيانات في برنامجنا بطريقة احترافية وسهلة
الاول يجب ان نعلم ان الصورة تحفظ في قاعدة البيانات عن طريق نوع البيانات OLE فيجب اولا ان نخصص لها حقل
في قاعدة البياانات بهذا النوع
ثانيا وإن شاء الله سوف نتعامل في هذا الدرس بمكتبة الادو الاصدار 2.6 او فيما فوق من هذا الاصدار
وسوف نتعامل مع الوظيفة التي بداخلة والتي تسمي stream وهي خاصة بالتعامل مع البينري والنصوص في مكتبة
الادو
يجب اول في في المشروع في فيجوال بيسك ان نعلم مسار الصورة المراد ادخالها وهي طبعا عن طريق الكومون ديلوج
وانا سوف ابدا باستخدام الوظيفة مباشرتا
نعلم طبعا ان في زر حفظ يجب ان نحفظ الصورة مع باقي الحقول العادية لدينا فنحن سوف نعمل اجراء واستداعة وقت
الحاجة لاستدعاء الصورة اذا كان في الحفظ او ازرار التنقل
اولا ناخذ الاجراء الخاص بالحفظ
وليكن كالتالي
private sub SaveImg ()
On Error Resume Next ' لعدم الخطأ
Dim mStream As New ADODB.Stream ' تعريف الوظيفة Stream من المكتبة ادو
With mStream ' الامر with لسهولة التعامل معها
.Type = adTypeBinary ' تعريف نوع البيانات الذي سوف نتعامل معه في الوظيفة
.Open ' تهيئة الاستريم وفتحها لقراءة الصورة
.LoadFromFile Cmdialog1.FileName ' تحميل الصورة عن طريق الكومون ديلوج
Rs("img1").Value = .Read ' لقد تم تحويل الصورة الي صيغة البينري كود والان نحفظه بطريقة عادية في القاعدة عن طريقة اداة الادو العادية او اداة الادو دسي
End With
Set mStream = Nothing ' ننهي ونمسح الوظيفة من الذاكرة لكي لا تأخذ حيز فيه
end subوفيما سبق تعلما كيف نصنع اجراء ليحفظ الصورة
الان نريد ان نعيد الصورة الي اليفورم في ازرار الانتقال او البحث او غير ذلك ماذا نفعل سوف نري الان معا.
سوف نصنع اجراء ثاني لهذا الهدف إن شاء الله
private sub LoadImg ()
On Error Resume Next
Dim mStream As New ADODB.Stream
'طبعا لن اعيد شرح الكود لاننا شرحناه سابقا ولكني سوف اشرح فقط الجديد من هذا الكود
With mStream
.Type = adTypeBinary
.Open
.Write Rs("img1") ' سوف نأخذ الصورة من الادو او الادو دسي وادخالها في مكتبة الاستريم
.SaveToFile "tmp1.fil", adSaveCreateOverWrite ' الان المكتبة يوجد بداخلها كود البينري الخاص بالصورة بتاعتها وعن طريق هذه الوظيفة نستطيع ان نحفظ كود البينري الي صورة وسوف نحفظه في ملف مؤقت وسوف نسميه وليكن tmp1.fil , خاصية ال adSaveCreateOverWrite هذه وظيفتها اذا كان الملف موجود مسبقا تكتب عليه اي تحذفة وتضع الملف الجديد
End With
Set mStream = Nothing
Image1.Picture = LoadPicture("tmp1.fil") ' الان والبطريقة المعتادة سوف نحمل الصورة في الكومون ديلوج وطبعا لن نكتب مسار الصورة لانها صنعت داخل مجلد المشروع بتاعنا
Kill "tmp1.fil" ' وهنا وبعد ان حملنا الصورة الاصلية نمسح الصورة المؤقتة
end subملحوظة :
بما اننا نستخدم الكومون ديلوج Common Dialog فهي تغير مسار مشروعنا بالكامل واي مسار تركينه تلقي كي
يأخذ قيمت مساره من مجلد المشروع سوف يتغير مساره وهنا ينتج لنا اخطاء لا نعلمها ولذلك واهم مسار لدينا وهو
قاعدة البيانات فيجب ان نعرف مسارها بالوظيفة App.Path
مثال :
وليكن اسم كان الاتصال Cn
سوف يكون كالاتي :
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path & "\DataBase Name" + " "
ارجو من الله ان يكون قد افادكم هذا الدرس ونرجوا الدعاء بحسن الخاتمة
منتظر تعلقاتكم واستفساراتكم
العلم بين الحياء والكبرياء