(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
19-07-22, 11:35 PM (آخر تعديل لهذه المشاركة : 19-07-22, 11:41 PM {2} بواسطة أبو خالد الشكري.)
السلام عليكم يا أستاذ asmarsou السلام عليكم أيها الجماعة الحاضرون
بعد التجربة وجدت أن هذا الكود يقوم بنسخ الصورة (التي تم النقر عليها ) في مسار البرنامج ثم يعرض الصورة من مسار البرنامج في ( PictureBox) !
أنا ما كان قصدي كذا أبدا أبدا ...
أنا قصدي أريد الكود يقرأ بيانات الصورة من قاعدة البيانات مباشرة
يعني الكود يجب أن يقوم بقراءة قيمة الحقل 0 في (DataGridView )والذي يكون مسجلا في قاعدة البيانات في الحقل المسمى id والصورة تكون محفوظة في قاعدة البيانات في الحقل المسمى Attachment
20-07-22, 12:13 AM (آخر تعديل لهذه المشاركة : 20-07-22, 12:26 AM {2} بواسطة سعود.)
اخي الكريم اعتذر لعدم تعديلي على المثال اللي انت رفعت لكن عملت مثال بسيط :
دبل كليك على الصورة لاضافة صورة ثم زر حفظ او تعديل يوجد خطا فظيع في مثالي ان لم تكتشفه اخبرني ... تذكرته الحين.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
لكن للأسف تهت في الأكواد التي في التطبيق الذي أرسلته لي .
أنا فقط أريد التعديل في الكود السابق في زر واحد فقط ، وهو زر عرض الصورة
أرجو منكم جميعا عصر أفكاركم النيرة بالخروج بكود مناسب يمكنه قراءة بيانات الصورة من قاعدة البيانات مباشرة .
فليس مجديا أن يمتلئ الهاردسك بالصور التي أحفظها في قاعدة البيانات بمعنى آخر أنه كلما أردت استعراض صورة يقوم البرنامج أولا بنسخ الصورة في الهارسك ، ثم يقرأها من الهاردسك ويضعها في PictureBox
العمود picbyte من نوع كائن ole
pic = هي مربع صورة PictureBox
dt = هي داتا تيبل DataTable
حليت المشكلة او الخطا و ذلك باضافة زر جديد للحفظ و تكون مهمة ازرار الجديد والتعديل فقط تهيئة و يكون زر الحفظ هو المسؤول عن طلب الاجراءات.
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
شكرا أستاذي جزاك الله خيرا حقيقة أيضًا لم أتمكن من تتبع الأكواد في التطبيق الذ أرسلته لي .
ولكن عملت حيلة بسيطة وهي أني أقوم بحذف ملف الصورة مباشرة بعد أن أقوم بعرضها في PictureBox وبهذه الطريقة ارتحت من مسألة تكدس الصور المحفوظة في مجلد البرنامج .
20-07-22, 06:33 AM (آخر تعديل لهذه المشاركة : 20-07-22, 07:17 AM {2} بواسطة سعود.)
(20-07-22, 02:23 AM)أبو خالد الشكري كتب : شكرا أستاذي جزاك الله خيرا حقيقة أيضًا لم أتمكن من تتبع الأكواد في التطبيق الذ أرسلته لي .
ولكن عملت حيلة بسيطة وهي أني أقوم بحذف ملف الصورة مباشرة بعد أن أقوم بعرضها في 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)
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
20-07-22, 07:37 AM (آخر تعديل لهذه المشاركة : 20-07-22, 07:42 AM {2} بواسطة سعود.)
التعديل على اجراء 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()
=================================
==================================
===============آخر تحديث=============
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير