منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : قراءة بيانات الصورة من قاعدة بيانات أكسس إلى أداة PictureBox
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم أخوني الأعزاء

أريد من فضلكم التعديل على المثال المرفق لقراءة بيانات الصورة من قاعدة بيانات أكسس إلى أداة PictureBox
بدلا من عرضها على برنامج خارجي .

المثال المرفق هو من هذا المنتدى ، ولكني أريد منكم فقط تعديله ليتناسب مع متطلباتي !


وشكرا لكم مقدما .
(19-07-22, 06:58 PM)أبو خالد الشكري كتب : [ -> ]السلام عليكم أخوني الأعزاء

أريد من فضلكم التعديل على المثال المرفق لقراءة بيانات الصورة من قاعدة بيانات أكسس إلى أداة PictureBox
بدلا من عرضها على برنامج خارجي .

المثال المرفق هو من هذا المنتدى ، ولكني أريد منكم فقط تعديله ليتناسب مع متطلباتي !


وشكرا لكم مقدما .
و عليكم السلام و رحمة الله و بركاته
تفضل
كود :
Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click

       '--------------------------------------
       ' PictureBox1 المطلوب عرض الصورة في
       '--------------------------------------

       ' التحقق اذا كان الداتا جريد ممتلئة ام فارغة لتنفيذ كود فتح الملف
       If (dataGridView1.RowCount > 0) Then
           ' تحويل الكود المسجل بقاعدة البيانات الى ملف
           Dim ff() As Byte = CType(dt.Rows(DgId)(3), Byte())
           Dim FPath = Application.StartupPath & "\" & dt.Rows(DgId)(1).ToString() & dt.Rows(DgId)(2).ToString()
           Dim FFS As FileStream = New FileStream(FPath, FileMode.Create, FileAccess.Write)
           FFS.Write(ff, 0, ff.Length)
           FFS.Close()
           ' تنفيذ فتح الملف بعد انشائه بالكود السابق
           ''Process.Start(FPath)
           PictureBox1.Image = Image.FromFile(FPath)
       Else
           ' رسالة تنبيه بان الداتا جريد فارغة
           MsgBox("Please Add Any Data So You Can Open File Selected.")
       End If
   End Sub
جراك الله خيراً خي العزير asmarsoy
بصراحة ما قصرت بارك الله فيك
سوف أجرب الحل الذي أرسلته لي وأخبرك بالنتيجة .
السلام عليكم يا أستاذ asmarsou
السلام عليكم أيها الجماعة الحاضرون

بعد التجربة وجدت أن هذا الكود يقوم بنسخ الصورة (التي تم النقر عليها ) في مسار البرنامج
ثم يعرض الصورة من مسار البرنامج في ( PictureBox)  !

أنا ما كان قصدي كذا أبدا أبدا ...

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

يعني الكود يجب أن يقوم بقراءة قيمة الحقل 0  في (DataGridView )والذي يكون مسجلا في قاعدة البيانات في الحقل المسمى id
والصورة تكون محفوظة في قاعدة البيانات في الحقل المسمى Attachment
اخي الكريم اعتذر لعدم تعديلي على المثال اللي انت رفعت لكن عملت مثال بسيط :


دبل كليك على الصورة لاضافة صورة ثم زر حفظ او تعديل

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

نورت الموضوع

شكرا جزيلا لك على المشاركة في حل المطلوب .

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


أنا فقط أريد التعديل في الكود السابق في زر واحد فقط ، وهو زر عرض الصورة

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

فليس مجديا أن يمتلئ الهاردسك بالصور التي أحفظها في قاعدة البيانات 
بمعنى آخر أنه كلما أردت استعراض صورة يقوم البرنامج أولا بنسخ الصورة في الهارسك ، ثم يقرأها من الهاردسك ويضعها في PictureBox
إقتباس :أنا فقط أريد التعديل في الكود السابق في زر واحد فقط ، وهو زر عرض الصورة
تصدق اني شفت المثال وحاولت افهمه ماقدرتSad
فين زر عرض الصورة؟

https://i.postimg.cc/5tNNbMXZ/000.png

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

PHP كود :
       pic.DataBindings.Add("image"dt"picbyte"True
العمود picbyte  من نوع كائن ole
pic = هي مربع صورة PictureBox
dt = هي داتا تيبل DataTable

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

ولكن عملت حيلة بسيطة Smile وهي أني أقوم بحذف ملف الصورة مباشرة بعد أن أقوم بعرضها في PictureBox
وبهذه الطريقة ارتحت من مسألة تكدس الصور المحفوظة في مجلد البرنامج .
(20-07-22, 02:23 AM)أبو خالد الشكري كتب : [ -> ]شكرا أستاذي جزاك الله خيرا 
حقيقة أيضًا لم أتمكن من تتبع الأكواد في التطبيق الذ أرسلته لي .

ولكن عملت حيلة بسيطة Smile وهي أني أقوم بحذف ملف الصورة مباشرة بعد أن أقوم بعرضها في PictureBox
وبهذه الطريقة ارتحت من مسألة تكدس الصور المحفوظة في مجلد البرنامج .

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

شوف الحدث هذا:
PHP كود :
dataGridView1_CellClick 
عدل الكود اللي فيه الى:
PHP كود :
       Dim b() As Byte Me.dataGridView1.Rows(e.RowIndex).Cells(3).Value
        Dim ms 
As New MemoryStream(b)
 
       Me.PictureBox1.Image Image.FromStream(ms

التعديل على اجراء GetLoadData
PHP كود :
Private Sub GetLoadData()
 
       For Each h As Control In Me.Controls
            h
.DataBindings.Clear()
 
       Next
        
' تفريغ DT
        dt.Clear()
        ' 
جلب البيانات من قاعدة البيانات
        cmd 
= New OleDbCommand("select * from TB_File"con)
 
       Da = New OleDbDataAdapter(cmd)
 
       Da.Fill(dt)
 
       ' تعبئة الداتا جريد بالبيانات التى تم تعبئتها
        dataGridView1.DataSource = dt
        ' 
تسمية الاعمدة فى الداتا جريد
        dataGridView1
.Columns(0).HeaderText "ID"
 
       dataGridView1.Columns(1).HeaderText "File Name"
 
       dataGridView1.Columns(2).HeaderText "File Extension"
 
       dataGridView1.Columns(3).HeaderText "Image"
 
       Me.PictureBox1.DataBindings.Add("image"dt"Attachment"True)
 
       txtpicid.DataBindings.Add("text"dt"id")
 
       txtpicname.DataBindings.Add("text"dt"FileName")
 
       txtpicext.DataBindings.Add("text"dt"FileExt")
 
   End Sub 

التعديل علة كود اضافة صورة:
PHP كود :
       Dim FileCon() As Byte File.ReadAllBytes(textBox2.Text)
 
       ' اضافة البيانات بقاعدة البيانات
        cmd = New OleDbCommand("Insert into TB_File (FileName,FileExt,Attachment) Values (@FileName,@FileExt,@Attachment)", con)
        con.Open()
        cmd.Parameters.AddWithValue("@FileName", textBox1.Text)
        cmd.Parameters.AddWithValue("@FileExt", Path.GetExtension(textBox2.Text))
        cmd.Parameters.AddWithValue("@Attachment", FileCon)
        cmd.ExecuteNonQuery()
        con.Close()
        MsgBox("OK!")
        ' 
تحميل البيانات بالداتا جريد
        GetLoadData
()
 
       ' تفريغ كلاً من اداء النصوص
        textBox1.Clear()
        textBox2.Clear() 

=================================
==================================
===============آخر تحديث=============
الصفحات : 1 2