تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] اضافة صورة فارغة لقاعدة البيانات
#1
السلام عليكم

اضيف صور لقاعدة البيانات من البيكتشر بوكس بتحويل الصور الي بايت
الكود يضيف عادي لو اضفت صورة بصندوق الصور ولكن ان كان فارغ لا يضيف الصورة الفارغة او null

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


كود :
Dim ms As New MemoryStream
           PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
           Dim img() As Byte
           img = ms.ToArray()
           UPDATE_COM.Parameters.AddWithValue("@WEBSERVERPAYED_IMAG", img)

محاولتي لمعرفة القيمة الفارغة  بدون فائدة

كود :
 If Me.PictureBox1.Image Is Nothing Then
               img = CObj(DBNull.Value)

           Else
               img = ms.ToArray()

           End If
الرد }}}
تم الشكر بواسطة:
#2
جرب هذا
كود :
If Me.PictureBox1.Image Is Nothing Then
   UPDATE_COM.Parameters.AddWithValue("@WEBSERVERPAYED_IMAG", DBNull.Value)
Else
   Dim ms As New MemoryStream
   PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
   Dim img() As Byte = ms.ToArray()
   UPDATE_COM.Parameters.AddWithValue("@WEBSERVERPAYED_IMAG", img)
End If
الرد }}}
#3
في الجدول بقاعدة البيانات إجعل حقل الصورة يقبل ( Null ) 
وفي البرنامج , لا تمرر أي شيء يخص الصورة إذا كانت خالية , لست مطالب بتمرير ( Parameter ) يعبر عن قيمة الصورة , إذا كانت في الجدول بقاعدة البيانات تقبل ( Null )
الرد }}}
تم الشكر بواسطة: rnmr , rnmr , محمد اسماعيل , asemshahen5
#4
(02-10-18, 08:22 PM)عبدالله الدوسري كتب : في الجدول بقاعدة البيانات إجعل حقل الصورة يقبل ( Null ) 
وفي البرنامج , لا تمرر أي شيء يخص الصورة إذا كانت خالية , لست مطالب بتمرير ( Parameter ) يعبر عن قيمة الصورة , إذا كانت في الجدول بقاعدة البيانات تقبل ( Null )

فين الخاصية دية بجدول الاكسيس required = no , text align , caption
الرد }}}
تم الشكر بواسطة: asemshahen5
#5
required = no
الرد }}}
تم الشكر بواسطة: asemshahen5
#6
(02-10-18, 07:57 PM)rnmr كتب : جرب هذا
كود :
If Me.PictureBox1.Image Is Nothing Then
   UPDATE_COM.Parameters.AddWithValue("@WEBSERVERPAYED_IMAG", DBNull.Value)
Else
   Dim ms As New MemoryStream
   PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
   Dim img() As Byte = ms.ToArray()
   UPDATE_COM.Parameters.AddWithValue("@WEBSERVERPAYED_IMAG", img)
End If

(02-10-18, 08:22 PM)عبدالله الدوسري كتب : في الجدول بقاعدة البيانات إجعل حقل الصورة يقبل ( Null ) 
وفي البرنامج , لا تمرر أي شيء يخص الصورة إذا كانت خالية , لست مطالب بتمرير ( Parameter ) يعبر عن قيمة الصورة , إذا كانت في الجدول بقاعدة البيانات تقبل ( Null )

جزاكم الله خيرا عني وعن غيري
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري , asemshahen5
#7
السلام عليكم ورحمة الله وبركاته
لدي نفس المشكلة ولم أفهم ما يقصده الاستاذ عبدالله الدوسري
قمت بتعديل في قاعدة البيانات وجعلت خانة الصورة تقبل Null
ولكن نقطة أني غير مطالب بتمرير Parameter لم أفهمها ولم أستطيع أن أعدلها في الكود المرفق

كود :
Dim ms As New IO.MemoryStream
Dim bmpimage As New Bitmap(pbox.Image)
bmpimage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim data As Byte() = ms.GetBuffer()
Dim p As New SqlParameter("@PicEemploye", SqlDbType.Image)
p.Value = data
.Parameters.Add(p)
الرد }}}
تم الشكر بواسطة: asemshahen5
#8
السلام عليكم ورحمة الله وبركاته
يبدو ان المشكلة الصغيرة هذه قد ارقت الكثيرين 
تخزين سجل ما وتخزين الصورة اوبشنال اي كيفي ولجل هذا الاشكال نتبع التالي :
اولا في قاعدة البيانات يجب ان يكون حقل الصورة يقبل null قيمة فارغة وهذه الكل يعرفها
الان الفكرة تقوم على اننا سنعلم منفذ الاوامر بتخزين او عدم تخزين الصورة وسيكون ذلك عبر متغير نصي  سيحمل اسم الصورة ايا كان
ونضع فيه احدى القيمتين (؟) للدلالة على اننا نريد تحزين الصورة و(null) لانريد تخزين الصورة وبالتالي ستكون جملة الانسرت او الابديت
مشروطة بقيمة هذا المتغير بحيث نستخدم باراميتر وحقل او لا 
واليكم كود من ثلاث حقول ( اي دي - الاسم - الصورة) والاكواد بطريقة الاتصال غير المباشر


كود :
Dim NameImage As String = String.Empty '    تعريف متغير نصي قيمته فارغة

   '----------Public sub insert----------
   Public Sub insert_Personal(Cv_Id As Integer, Cv_FullName As String, Cv_Photo As Byte())
       Dim Cmd As New OleDbCommand()
       If NameImage = "?" Then ' اذا كان المتغير فيه قيمة نحن وضعناها اشارة استفهام سيتم الحفظ مع وجود صورة
           Cmd = New OleDbCommand("insert into Personal(Cv_Id,Cv_FullName,Cv_Photo) Values(@Cv_Id,@Cv_FullName,@Cv_Photo)", con)
       Else  '  المتغير ليس فيه قيمة سيتم التعديل بدون صورة
           Cmd = New OleDbCommand("insert into Personal(Cv_Id,Cv_FullName) Values(@Cv_Id,@Cv_FullName)", con)
       End If
       ' سيتم استخدام الباراميترات بناء على جملة الانسرت
       Cmd.Parameters.Add(New OleDbParameter("@Cv_Id", OleDbType.Integer)).Value = Cv_Id
       Cmd.Parameters.Add(New OleDbParameter("@Cv_FullName", OleDbType.VarWChar)).Value = Cv_FullName
       Cmd.Parameters.Add(New OleDbParameter("@Cv_Photo", OleDbType.LongVarBinary)).Value = Cv_Photo
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)
   End Sub
   '----------Public Sub Update----------
   Public Sub Update_Personal(Cv_FullName As String, Cv_Photo As Byte(), Cv_Id As Integer)
       Dim Cmd As New OleDbCommand()
       If NameImage = "?" Then ' اذا كان المتغير فيه قيمة نحن وضعناها اشارة استفهام سيتم التعديل مع وجود صورة وفق الباراميترات التالية  
           Cmd = New OleDbCommand("Update Personal set Cv_FullName=@Cv_FullName,Cv_Photo=@Cv_Photo Where Cv_Id=@Cv_Id", con)
           Cmd.Parameters.Add(New OleDbParameter("@Cv_FullName", OleDbType.VarWChar)).Value = Cv_FullName
           Cmd.Parameters.Add(New OleDbParameter("@Cv_Photo", OleDbType.LongVarBinary)).Value = Cv_Photo
           Cmd.Parameters.Add(New OleDbParameter("@Cv_Id", OleDbType.Integer)).Value = Cv_Id
       Else '  المتغير ليس فيه قيمة سيتم التعديل بدون صورة وفق الباراميترات التالية
           Cmd = New OleDbCommand("Update Personal set Cv_FullName=@Cv_FullName  Where Cv_Id=@Cv_Id", con)
           Cmd.Parameters.Add(New OleDbParameter("@Cv_FullName", OleDbType.VarWChar)).Value = Cv_FullName
           Cmd.Parameters.Add(New OleDbParameter("@Cv_Id", OleDbType.Integer)).Value = Cv_Id
       End If
       If con.State = ConnectionState.Open Then con.Close()
       con.Open()
       Cmd.ExecuteNonQuery()
       con.Close()
       MessageBox.Show("تم تعديل البيانات بنجاح  ", "تعديل", MessageBoxButtons.OK, MessageBoxIcon.Information)
   End Sub

   Private Sub Btn_Save_Click(sender As Object, e As EventArgs) Handles Btn_Save.Click
       Try
           Dim Byteimage() As Byte
           Dim Ms As New MemoryStream()
           If Not (Pb_Cv_Photo.Image Is Nothing) Then
               Pb_Cv_Photo.Image.Save(Ms, Pb_Cv_Photo.Image.RawFormat)
               Byteimage = Ms.ToArray()
               NameImage = "?" ' اسناد قيمة اشارة ؟ للمتغير النصي عندما نريد تخزين صورة
           Else
               Byteimage = Nothing
               NameImage = "null" ' اسناد قيمة فارغ  للمتغير النصي عندما لا نريد تخزين صورة
           End If
           insert_Personal(Txt_Cv_Id.Text, Txt_Cv_FullName.Text, Byteimage)
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try

   End Sub

   Private Sub Btn_Update_Click(sender As Object, e As EventArgs) Handles Btn_Update.Click
       Try
           If MessageBox.Show("هل تريد تعديل السجل؟", "Alert", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
               Dim byteimage() As Byte
               Dim ms As New MemoryStream()
               If Not (Pb_Cv_Photo.Image Is Nothing) Then
                   Pb_Cv_Photo.Image.Save(ms, Pb_Cv_Photo.Image.RawFormat)
                   byteimage = ms.ToArray()
                   NameImage = "?" ' اسناد قيمة اشارة ؟ للمتغير النصي عندما نريد تخزين صورة
               Else
                   byteimage = Nothing
                   NameImage = "null"  ' اسناد قيمة فارغ  للمتغير النصي عندما لا نريد تخزين صورة
               End If
               Update_Personal(Txt_Cv_FullName.Text, byteimage, Txt_Cv_Id.Text)
           End If
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try

   End Sub

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







الرد }}}
#9
(29-04-20, 07:29 AM)محمد العامر كتب : السلام عليكم ورحمة الله وبركاته
لدي نفس المشكلة ولم أفهم ما يقصده الاستاذ عبدالله الدوسري
قمت بتعديل في قاعدة البيانات وجعلت خانة الصورة تقبل Null
ولكن نقطة أني غير مطالب بتمرير Parameter لم أفهمها ولم أستطيع أن أعدلها في الكود المرفق




هنا القصد اتمنى يكون واضح


   
   




لكن الافضل بهذة الطريقة ( مع التحقق من القيمة التي سيتم تمريرها للحقل )

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة فى Radiobutton عند وضع صورة فيه أبو جودة 3 89 15-04-24, 04:31 AM
آخر رد: Taha Okla
  اريد اضافة حفظ PDF فى مسار على الهارد- مثال الاستاذ عبدالله الدوسري new_programer 0 53 13-04-24, 12:59 PM
آخر رد: new_programer
  تعديل كود ارسال صورة الى الواتس new_programer 2 173 21-03-24, 10:07 PM
آخر رد: new_programer
  [VB.NET] حل مشكلة الاتصال بقواعد البيانات access loay775 2 171 25-02-24, 06:29 AM
آخر رد: loay775
  كيفية انشاء سكريبت لقاعدة بيانات من خلال الكود heem1986 1 217 20-02-24, 12:00 AM
آخر رد: Kamil
  سؤال عن عملية حذف سجل من قاعدة البيانات assuhimi 3 264 11-02-24, 08:43 PM
آخر رد: assuhimi
  [VB.NET] منع تكرار البيانات في عند الادخال مبرمج صغير 1 2 272 24-01-24, 05:18 PM
آخر رد: مبرمج صغير 1
  [VB.NET] مساعدة في استدعاء البيانات معينه من form الأول إلى form 2 بدون التعديل loay775 2 283 18-01-24, 05:04 PM
آخر رد: loay775
  [VB.NET] إعادة استدعاء البيانات من قاعدة بيانات اكسس والاهم الصورة مبرمج صغير 1 1 282 13-01-24, 01:17 PM
آخر رد: مبرمج صغير 1
  [كود] اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF issamsaidd 10 5,866 25-12-23, 06:30 PM
آخر رد: الحزين اليماني

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


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