تقييم الموضوع :
  • 1 أصوات - بمعدل 2
  • 1
  • 2
  • 3
  • 4
  • 5
تعلم كيفية حفظ و أسترجاع الصورة فى قاعدة بيانات أكسس باستخدام الكائن Stream object
#1
بسم الله الرحمن الرحيم

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

الخطوة الاولى : قم بإنشاء قاعدة بيانات و ليكن BLOB مثلا و بها جدول و ليكن employee مثلا ...ثم انشىء الحقول التى ترغب فيها مع مراعاة أن يكون الحقل الذى سوف يتم حفظ الصورة فية من نوع OLE Object كما فى الصورة التالية :




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


الخطوة الثالثة  : قم بأدراج المكتبة  Microsoft ActiveX Data Objects 2.5 Library فما فوق  ...لانك لو أستخدمت أقل من هذا الاصدار لن تستطيع حفظ الصورة أو أسرجاعها

الخطوة الرابعة : قم بأدراج الاداة Microsoft Common Dialog Control 6.0 لاستعراض الصورة من جهازك .

الخطوة الخامسة : كتابة الاكواد لحفظ الصورة فى قاعدة البيانات وذلك على النحو التالى :

1_  فى قسم التصريحات نقوم بكتابة الاكواد الخاصة بفتح قاعدة البيانات و  الجدول و ايضا نقوم بتعريف متغير لحفظ مسار الصورة فية على النحو التالى :

PHP كود :
Dim cnnEmp As ADODB.Connection
Dim rsEMP 
As ADODB.Recordset

Dim fileName 
As String 


2_ فى حدث الضغط على مربع الصورة Picturebox نكتب الكود التالى و ذلك  لفتح المربع الحوارى لاختيار صورة من الجهاز و ذلك على النحو التالى :

PHP كود :
cdgPhoto.Filter "(*.bmp;*.ico;*.gif;*.jpg)|*.bmp;*.ico;*.gif;*.jpg"
 
   cdgPhoto.ShowOpen
    
    fileName 
cdgPhoto.fileName
    
    If fileName 
<> "" Then
        Set imgPhoto
.Picture LoadPicture(fileName)
 
   End If 


ويجب ان تلاحظ أننا فى الكود السابق حددنا أمتداد الصور و انواعها التى يجب أن تظهر للمستخدم و ذلك عن طريق الامر Filter للاداة CommonDialog ثم فتحنا المربع الحوارى ثم جعلنا المتغير fileName يساوى مسار الصورة المختارة ...و أخيرة تطبيق الصورة و اظهارها فى مربع الصورة imgPhoto


3 _ زر الامر (حفظ ) سنقوم بكتابة الكود التالى :

PHP كود :
Dim smEmp As ADODB.Stream
        Set smEmp 
= New ADODB.Stream
       
        smEmp
.Type adTypeBinary
        smEmp
.Open
       
        smEmp
.LoadFromFile fileName
       
        If smEmp
.Size 0 Then
            
'Save the Employee Information
            rsEMP.AddNew
            rsEMP("FirstName") = txtFName
            rsEMP("MiddleName") = txtMName
            rsEMP("LastName") = txtLName
            rsEMP("SSN") = txtSSN
            rsEMP("Photo") = smEmp.Read
            '
Update the data
            rsEMP
.Update
            
'Clear the form
            ClearFields
        
            MsgBox "Employee Information Saved Successfully"
        Else
            MsgBox "The Employee'
s Photo is not valid"
        End If
        
      
        smEmp.Close
        Set smEmp = Nothing 


السطر الاول و الثانى ...قمنا بإنشاء الكائن stram object و الذى سيقوم بحفظ  الصورة فى قاعدة البيانات

السطر الثالث و الرابع...جعل الكائن stram object من نوع بيانات ثنائى binary data وذلك لنستطيع فتح و حفظ الصورة فى تلك الهيئة .

السطر الخامس
...تحميل محتوى الصورة الى الكائن stram object

السطر السادس ...التحقق  من حجم محتوى الكائن stram object فإن كان أكبر من الصفر معنى ذلك وجودة  صورة بالكائن و ذلك لتفادى الخطأ فى حالة عدم أختيار صورة

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

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


الخطوة السادسة ...أسترجاع  الصورة المخزنة فى قاعدة البيانات و ذلك عن طريق إنشاء إجراء يقوم بقرائه  الصورة و التى هى على شكل بيانات ثنائية فى قاعدة البيانات ثم بعد ذلك يقوم  بتحويلها وإنشاء صورة مؤقته فى مجلد البرنامج و من ثم أستخدامها فى عنصر  التحكم imgPhoto وذلك على النحو التالى :

PHP كود :
Private Sub ReadPictureData()
 
               
    Dim diskFile 
As String
    diskFile 
App.Path "\temp\emp.bmp"
 
         
   
    Dim smEmp 
As ADODB.Stream
    Set smEmp 
= New ADODB.Stream
    
    smEmp
.Type adTypeBinary
    smEmp
.Open
    
   
    smEmp
.Write rsEMP.Fields("Photo").Value
    
    If smEmp
.Size 0 Then
        
             smEmp
.SaveToFile diskFileadSaveCreateOverWrite
       
               imgPhoto
.Picture LoadPicture(App.Path "\temp\emp.bmp")
 
   Else
        MsgBox 
"Error reading the Photo"
 
   End If
 
   
    
'Close and destroy the stream object
    smEmp.Close
    Set smEmp = Nothing
    
    
End Sub 

قمنا بإنشاء الاجراء ReadPictureData و يحتوى على الاسطر التالية :


السطر الاول و الثانى
....قمنا بإنشاء المتغير diskFile و ذلك لحفظ المسار الذى سيحتوى على الصور المؤقتة و التى سيتم إنشائها من قاعدة البيانات .


السطر الثالث و الرابع و الخامس و السادس ......قمنا بإنشاء الكائن stram object و الذى سيقوم استرجاع الصورة من قاعدة البيانات و تحديد نوع البيانات التى تم حفظها وهى من نوع Binary

السطر السابع ...تحميل بيانات الصورة الثانية  binary image المخزنة فى الحقل Photo الى الكائن stram object

السطر الثامن و التاسع  ...جملة شرطية للتحقق من وجودة بيانات ثنائية فى هذا الحقل فإن تم التحقق  من ذلك نجل البرنامج يقوم بتحويل تلك البيانات أو الصورة الى صورة مؤقته فى  المجلد temp الموجود فى مجلد مشروعنا

السطر العاشر .... تحميل و استخدام تلك الصورة فى مربع الصورة imgPhoto

و اخيرا أغلاق الكائن stram object   ومن ثم إنهاء الاجراء ....بعد ذلك يمكنك أستخدام هذا الاجراء فى حدث  التنقل بين السجلات و ستجد أن لك صورة تم حفظها لموظف سيتم عرضها فى مربع  الصورة imgPhoto على النحو التالى :




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


الملفات المرفقة
.zip   BLOB with Stream.zip (الحجم : 121.47 ك ب / التحميلات : 227)
الرد }}}}
تم الشكر بواسطة: nabil1982 , ahmed khorshed
#2
السلام عليكم

الله يبارك فيك ويجزيك كل خير

مقال مفيد وطريقة جديدة

موفق ان شاءالله
الرد }}}}
تم الشكر بواسطة: ahmed khorshed
#3
بارك الله فيك
الله يعطيك العافيه
الرد }}}}
تم الشكر بواسطة: ahmed khorshed
#4
حزاكم الله خيرا اخوانى الكرام ....وكل عام وانتم بخير
منتدى مصر التقنى ....شارك معنا
http://egy-tech.forumegypt.net
الرد }}}}
تم الشكر بواسطة: ahmed khorshed
#5
تسلم يارب والله محتاجها كنت ضريوري
ياريت تكمل وتشرحلي شوي كيف اضيف بيانات طالب مع الصورة وكذا طباعة مع الصورة ولك جزيل الشكر اخي الفاضل
الرد }}}}
تم الشكر بواسطة: ahmed khorshed
#6
بسم الله الرحمن الرحيم
أود أن أشكرك أيها الأخ الكريم على موضوعك الهادف والجميل
شكرا لك مرة أخى أخي الكريم
الرد }}}}
تم الشكر بواسطة: ahmed khorshed
#7
شكرا لك
ولكن الرابط لايعمل
الرد }}}}
تم الشكر بواسطة:
#8
شكرا لك الرابط لايعمل
الرد }}}}
تم الشكر بواسطة:
#9
تم اعادة رفع المرفق
شـــايـفـــك

الرد }}}}
تم الشكر بواسطة:
#10
مشكورورورورورورور على الموضوع الرائئع
(( نحن قوم أعزنا الله بالإسلام فمهما ابتغينا العزة بغيره أذلنا الله )) .. 











الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيفية عمل امتداد خاص بك و جعل برنامجك الافتراضي لهذا الامتداد-ادخل وشوف المزيد بالصور Aly El-Haddad 6 1,526 09-10-16, 11:15 AM
آخر رد: MicroDoha
  برنامج لمتابعة محل بيع الجوالات اكثر من رائع بقاعدة بيانات جيدة derbaliammar 8 1,686 09-10-16, 11:11 AM
آخر رد: MicroDoha
  الاتصال بمصنفات Excel باستخدام تقنية الربط ADO أحمد مناع 1 1,877 17-01-15, 02:31 PM
آخر رد: العيد1403
  كيفية حساب الزكاة - خاص بالمبرمجين (فقه برمجية) السندبااد 9 3,776 19-11-14, 01:29 PM
آخر رد: Amir_alzubidy
  مساعدة في طباعة صوره من قاعدة بيانات basma123 0 604 26-09-14, 03:00 PM
آخر رد: basma123
  كيفية حساب الزكاة - خاص بالمبرمجين (فقه برمجية) السندبااد 3 744 22-08-13, 04:36 PM
آخر رد: السندبااد
  طلب شرح اخذ نسخة احتياطية من قاعدة البيانات DIGTAL 2 1,095 31-07-13, 03:14 AM
آخر رد: طارق بيتا
  تعلم كيف تصنع ادواتك الخاصة mohdsader 3 1,027 19-07-13, 02:56 AM
آخر رد: ellhadi39
  الاتصال بقاعدة بيانات Access على الشبكة المحلية أحمد مناع 1 1,430 18-07-13, 07:16 PM
آخر رد: Reme
  كيفية التعامل مع دوال الوقت و التاريخ و كيفية تنسيقهما فى الفجوال بيسك 6 the viper 6 1,898 15-06-13, 08:17 PM
آخر رد: husain1980

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم