منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
كود حفظ الصورة والبياانات في قاعده البيانات - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : كود حفظ الصورة والبياانات في قاعده البيانات (/showthread.php?tid=35665)

الصفحات: 1 2


RE: كود حفظ الصورة والبياانات في قاعده البيانات ,وإسترجاعها من قاعدة البيانات - khowla.goma - 21-07-20

السلام عليكم 
لدي مشكله ف التحقق 
        If Not IsDBNull(dr(11)) Then
            'PictureBox1.image
            Dim Pictur() As Byte = (CType(dr(11), Byte()))
            Dim ms As New MemoryStream(Pictur)
            PictureBox1.Image = Image.FromStream(ms)
        Else
            MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")
        End If

مشكله في IsDBNull يعطي ف خطا عند تنفيذ


RE: كود حفظ الصورة والبياانات في قاعده البيانات - ابراهيم ايبو - 21-07-20

السلام عليكم ورحمة الله وبركاته
اختي الكريمة اعتقد انك تتحققين من قيمة حقل الصورة ان كانت فارغة لسجل المطلوب التحقق من وجوده 
لكن انت تضعين رقم السجل 11 وهو غير موجود وفي العادة عندما يتم التحقق من سجل يجب ان تظهر نتيجة واحدة اي سجل واحد 
ويكون رقمه(اندكس) صفر ولهذا السجل حقول (item )منها حقل الصورة لااعلم ان كان 11 .... انت تعرفين والعد يبدأ من الصفر 
غيري الكود الى التالي وان شاء الله يكون صح :
كود :
If Not IsDBNull(dr(0)(11).Value) Then
           'PictureBox1.image
           Dim Pictur() As Byte = (CType(dr((0)(11).Value), Byte()))
           Dim ms As New MemoryStream(Pictur)
           PictureBox1.Image = Image.FromStream(ms)
       Else
           MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")



RE: كود حفظ الصورة والبياانات في قاعده البيانات - khowla.goma - 21-07-20

(21-07-20, 08:48 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اختي الكريمة اعتقد انك تتحققين من قيمة حقل الصورة ان كانت فارغة لسجل المطلوب التحقق من وجوده 
لكن انت تضعين رقم السجل 11 وهو غير موجود وفي العادة عندما يتم التحقق من سجل يجب ان تظهر نتيجة واحدة اي سجل واحد 
ويكون رقمه(اندكس) صفر ولهذا السجل حقول (item )منها حقل الصورة لااعلم ان كان 11 .... انت تعرفين والعد يبدأ من الصفر 
غيري الكود الى التالي وان شاء الله يكون صح :
كود :
If Not IsDBNull(dr(0)(11).Value) Then
           'PictureBox1.image
           Dim Pictur() As Byte = (CType(dr((0)(11).Value), Byte()))
           Dim ms As New MemoryStream(Pictur)
           PictureBox1.Image = Image.FromStream(ms)
       Else
           MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")

اخي الكريم عند التشغيل يعطي نفس الخطا 
    Dim cmd As New SqlCommand

    Sub selectSader1(id_esaryS)
        cmd = New SqlCommand("select * from  Sader1 where id_esaryS = " & id_esaryS, cn)
        cn.Open()
        Dim dr As SqlDataReader
        dr = cmd.ExecuteReader
        'dr.Read()
        While dr.Read
            Me.id_esaryS.Text = dr.Item("id_esaryS")
            Me.date_MasgS.Value = dr.Item("date_MasgS")
            Me.Mostalem.Text = dr.Item("Mostalem")
            Me.sefa.Text = dr.Item("sefa")
            Me.namberphon.Text = dr.Item("namberphon")
            Me.websait.Text = dr.Item("websait")
            Me.morfagatS.Text = dr.Item("morfagatS")
            Me.Sader_ela.Text = dr.Item("Sader_ela")
            Me.Sader_men.Text = dr.Item("Sader_men")
            Me.mawdo_MasgS.Text = dr.Item("mawdo_MasgS")
            Me.note.Text = dr.Item("note")
        End While

        If Not IsDBNull(dr(0)(11).Value) Then
            'PictureBox1.image
            Dim Pictur() As Byte = (CType(dr((0)(11).Value), Byte()))
            Dim ms As New MemoryStream(Pictur)
            PictureBox1.Image = Image.FromStream(ms)
        Else
            MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")
        End If
        cn.Open()
        dr.Close()
    End Sub
اي كانه IsDBNull غير معرفه


RE: كود حفظ الصورة والبياانات في قاعده البيانات - ابراهيم ايبو - 21-07-20

اختي الكريمة 
جربي الكود بهذا الشكل  
كود :
Public Sub selectSader1(id_esaryS As Integer)

       Dim dts As New DataTable
       Dim Cmd As New OleDbCommand()
       Try
           dts.Clear()
           Cmd = New OleDbCommand("select * from  Sader1 where id_esaryS = " & id_esaryS, cn)
           Con.Open()
           dts.Load(Cmd.ExecuteReader)
           If dts.Rows.Count > 0 Then
               Me.id_esaryS.Text = dts.Rows(0)("id_esaryS").value
               Me.date_MasgS.Value = dts.Rows(0)("date_MasgS").value
               Me.Mostalem.Text = dts.Rows(0)("Mostalem").value
               Me.sefa.Text = dts.Rows(0)("sefa").value
               Me.namberphon.Text = dts.Rows(0)("namberphon").value
               Me.websait.Text = dts.Rows(0)("websait").value
               Me.morfagatS.Text = dts.Rows(0)("morfagatS").value
               Me.Sader_ela.Text = dts.Rows(0)("Sader_ela").value
               Me.Sader_men.Text = dts.Rows(0)("Sader_men").value
               Me.mawdo_MasgS.Text = dts.Rows(0)("mawdo_MasgS").value
               Me.note.Text = dts.Rows(0)("note").value
               If Not IsDBNull(dts.Rows(0)(11).Value) Then
                   Dim Pictur() As Byte = (CType(dts.Rows((0)(11).Value), Byte()))
                   Dim ms As New MemoryStream(Pictur)
                   Me.PictureBox1.Image = Image.FromStream(ms)
               Else
                   MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")
                   Me.PictureBox1.Image = Nothing
               End If
           Else
               MsgBox("هذا السجل غير موجود", MsgBoxStyle.Exclamation, "تنبيه")
           End If
           Con.Close()
       Catch ex As Exception
           Messagebox.show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
       End Try

   End Sub



RE: كود حفظ الصورة والبياانات في قاعده البيانات - khowla.goma - 21-07-20

(21-07-20, 09:51 PM)ابراهيم ايبو كتب : اختي الكريمة 
جربي الكود بهذا الشكل  
كود :
Public Sub selectSader1(id_esaryS As Integer)

       Dim dts As New DataTable
       Dim Cmd As New OleDbCommand()
       Try
           dts.Clear()
           Cmd = New OleDbCommand("select * from  Sader1 where id_esaryS = " & id_esaryS, cn)
           Con.Open()
           dts.Load(Cmd.ExecuteReader)
           If dts.Rows.Count > 0 Then
               Me.id_esaryS.Text = dts.Rows(0)("id_esaryS").value
               Me.date_MasgS.Value = dts.Rows(0)("date_MasgS").value
               Me.Mostalem.Text = dts.Rows(0)("Mostalem").value
               Me.sefa.Text = dts.Rows(0)("sefa").value
               Me.namberphon.Text = dts.Rows(0)("namberphon").value
               Me.websait.Text = dts.Rows(0)("websait").value
               Me.morfagatS.Text = dts.Rows(0)("morfagatS").value
               Me.Sader_ela.Text = dts.Rows(0)("Sader_ela").value
               Me.Sader_men.Text = dts.Rows(0)("Sader_men").value
               Me.mawdo_MasgS.Text = dts.Rows(0)("mawdo_MasgS").value
               Me.note.Text = dts.Rows(0)("note").value
               If Not IsDBNull(dts.Rows(0)(11).Value) Then
                   Dim Pictur() As Byte = (CType(dts.Rows((0)(11).Value), Byte()))
                   Dim ms As New MemoryStream(Pictur)
                   Me.PictureBox1.Image = Image.FromStream(ms)
               Else
                   MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")
                   Me.PictureBox1.Image = Nothing
               End If
           Else
               MsgBox("هذا السجل غير موجود", MsgBoxStyle.Exclamation, "تنبيه")
           End If
           Con.Close()
       Catch ex As Exception
           Messagebox.show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
       End Try

   End Sub
اخي الكريم يعطي خطا في جمله في  IsDBNull تحتها خط كانها مش معرفه 
 If Not IsDBNull(dts.Rows(0)(11).Value) Then
و في ((0) كذلك
                    Dim Pictur() As Byte = (CType(dts.Rows((0)(11).Value), Byte()))

(21-07-20, 10:16 PM)khowla.goma كتب :
(21-07-20, 09:51 PM)ابراهيم ايبو كتب : اختي الكريمة 
جربي الكود بهذا الشكل  
كود :
Public Sub selectSader1(id_esaryS As Integer)

       Dim dts As New DataTable
       Dim Cmd As New OleDbCommand()
       Try
           dts.Clear()
           Cmd = New OleDbCommand("select * from  Sader1 where id_esaryS = " & id_esaryS, cn)
           Con.Open()
           dts.Load(Cmd.ExecuteReader)
           If dts.Rows.Count > 0 Then
               Me.id_esaryS.Text = dts.Rows(0)("id_esaryS").value
               Me.date_MasgS.Value = dts.Rows(0)("date_MasgS").value
               Me.Mostalem.Text = dts.Rows(0)("Mostalem").value
               Me.sefa.Text = dts.Rows(0)("sefa").value
               Me.namberphon.Text = dts.Rows(0)("namberphon").value
               Me.websait.Text = dts.Rows(0)("websait").value
               Me.morfagatS.Text = dts.Rows(0)("morfagatS").value
               Me.Sader_ela.Text = dts.Rows(0)("Sader_ela").value
               Me.Sader_men.Text = dts.Rows(0)("Sader_men").value
               Me.mawdo_MasgS.Text = dts.Rows(0)("mawdo_MasgS").value
               Me.note.Text = dts.Rows(0)("note").value
               If Not IsDBNull(dts.Rows(0)(11).Value) Then
                   Dim Pictur() As Byte = (CType(dts.Rows((0)(11).Value), Byte()))
                   Dim ms As New MemoryStream(Pictur)
                   Me.PictureBox1.Image = Image.FromStream(ms)
               Else
                   MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")
                   Me.PictureBox1.Image = Nothing
               End If
           Else
               MsgBox("هذا السجل غير موجود", MsgBoxStyle.Exclamation, "تنبيه")
           End If
           Con.Close()
       Catch ex As Exception
           Messagebox.show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
       End Try

   End Sub
اخي الكريم يعطي خطا في جمله في  IsDBNull تحتها خط كانها مش معرفه 
 If Not IsDBNull(dts.Rows(0)(11).Value) Then
و في ((0) كذلك
                    Dim Pictur() As Byte = (CType(dts.Rows((0)(11).Value), Byte()))



RE: كود حفظ الصورة والبياانات في قاعده البيانات - ابراهيم ايبو - 21-07-20

اختي الخطأ في عملية التحويل للقيمة الفارغة 
اليك الكود وان شاء الله سيعمل
كود :
Public Sub selectSader1(id_esaryS As Integer)

       Dim dts As New DataTable
       Dim Cmd As New OleDbCommand()
       Try
           dts.Clear()
           Cmd = New OleDbCommand("select * from  Sader1 where id_esaryS = " & id_esaryS, cn)
           Con.Open()
           dts.Load(Cmd.ExecuteReader)
           If dts.Rows.Count > 0 Then
               Me.id_esaryS.Text = dts.Rows(0)("id_esaryS").value
               Me.date_MasgS.Value = dts.Rows(0)("date_MasgS").value
               Me.Mostalem.Text = dts.Rows(0)("Mostalem").value
               Me.sefa.Text = dts.Rows(0)("sefa").value
               Me.namberphon.Text = dts.Rows(0)("namberphon").value
               Me.websait.Text = dts.Rows(0)("websait").value
               Me.morfagatS.Text = dts.Rows(0)("morfagatS").value
               Me.Sader_ela.Text = dts.Rows(0)("Sader_ela").value
               Me.Sader_men.Text = dts.Rows(0)("Sader_men").value
               Me.mawdo_MasgS.Text = dts.Rows(0)("mawdo_MasgS").value
               Me.note.Text = dts.Rows(0)("note").value
               If Not Convert.IsDBNull(dts.Rows(0)(11).Value) Then ' هنا كان الخطأ
                   Dim Pictur() As Byte = (CType(dts.Rows((0)(11).Value), Byte()))
                   Dim ms As New MemoryStream(Pictur)
                   Me.PictureBox1.Image = Image.FromStream(ms)
               Else
                   MsgBox("لاتوجد صورة ", MsgBoxStyle.Exclamation, "تنبيه")
                   Me.PictureBox1.Image = Nothing
               End If
           Else
               MsgBox("هذا السجل غير موجود", MsgBoxStyle.Exclamation, "تنبيه")
           End If
           Con.Close()
       Catch ex As Exception

       End Try
   End Sub
ولاستخدامه ننادي على الصب ونرسل له رقم الاي دي لان التحقق سيكون بحقل الاي دي وان اردت التحقق بحقل أخر ان كان نص ستغيري الباراميتر في الصب من رقمي الى نصي 

كود :
selectSader1(Val(مربع نص يحوي رقم))



RE: كود حفظ الصورة والبياانات في قاعده البيانات - ابراهيم ايبو - 22-07-20

السلام عليكم ورحمة الله وبركاته

اختي الكريمة اعذريني على الكود الذي لايحل مشكلتك والسبب انه كان  لدي مشكلة عائلية ولم اركز في ماتريدين ولم اتحقق من سلامة الكود و لم انتبه ايضا الى نوع قاعدة البيانات انها sql Server    حيث استخدمت oledb  وانا اعتذر عن الخطأ
اولا بالنسبة للتحقق من وجود سجل قبل الحفظ فقط يكفي ان نعلم بعدم وجوده في الجدول ولسنا بحاجة لجلب محتوياته وان كان موجودا نخرج من الصب وان كان غير موجود نكمل جملة الحفظ  بهذا الشكل فقط 
 
كود :
     Try

   Dim Cmd As New SqlCommand("select * from  Sader1 where id_esaryS = " & id_esaryS, cn)
           Con.Open()
   Dim dr As SqlDataReader = Cmd.ExecuteReader
           dr.Read()
           If dr.HasRows Then
               MsgBox("هذا السجل غير موجود")
               Exit Sub
           Else
   ' كود الحفظ
           End If
           Con.Close()
       Catch ex As Exception

       End Try


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


RE: كود حفظ الصورة والبياانات في قاعده البيانات - khowla.goma - 23-07-20

اخي ابراهيم ايبو جزاك الله كل خير
اريد ان أسال ف كود الحفظ عندي جدول اخر وهوا wared1 يعطي نفس اخطاء جدول sader1 سابقا مع اني عدلت فيه البارمترات مايناسب
Dim Cmd As New SqlCommand()
Dim Pictur() As Byte
Dim Ms As New MemoryStream()
PictureBox2.Image.Save(Ms, PictureBox2.Image.RawFormat)
Pictur = Ms.ToArray()
Cmd = New SqlCommand("insert into Wared1(id_esary, mawdo_Masg,esaryMasgWard,date_Masg,date_waredEstelamMasg,wared_men,wared_ela,morfagat,maktebMOstalem,date_Estelam,note,PicturW)Values(@id_esary,@ mawdo_Masg,@esaryMasgWard,@date_Masg,@date_waredEstelamMasg,@wared_men,@wared_ela,@morfagat,@maktebMOstalem,@date_Estelam,@note,@PicturW)", cn)
Cmd.Parameters.Add(New SqlParameter("@id_esary", SqlDbType.Int)).Value = CInt(id_esary.Text)
Cmd.Parameters.Add(New SqlParameter("@mawdo_Masg", SqlDbType.NVarChar, 50)).Value = mawdo_Masg.Text
Cmd.Parameters.Add(New SqlParameter("@esaryMasgWard", SqlDbType.NVarChar, 50)).Value = esaryMasgWard.Text
Cmd.Parameters.Add(New SqlParameter("@date_Masg", SqlDbType.Date)).Value = date_Masg.Value.ToString("dd-MM-yyyy")
Cmd.Parameters.Add(New SqlParameter("@date_waredEstelamMasg", SqlDbType.NVarChar, 50)).Value = date_waredEstelamMasg.Text
Cmd.Parameters.Add(New SqlParameter("@wared_men", SqlDbType.NVarChar, 50)).Value = wared_men.Text
Cmd.Parameters.Add(New SqlParameter("@wared_ela", SqlDbType.NVarChar, 50)).Value = wared_ela.Text
Cmd.Parameters.Add(New SqlParameter("@morfagat", SqlDbType.NVarChar, 50)).Value = morfagat.Text
Cmd.Parameters.Add(New SqlParameter("@maktebMOstalem", SqlDbType.NVarChar, 50)).Value = maktebMOstalem.Text
Cmd.Parameters.Add(New SqlParameter("@date_Estelam", SqlDbType.NVarChar, 50)).Value = date_Estelam.Text
Cmd.Parameters.Add(New SqlParameter("@note", SqlDbType.NVarChar, 50)).Value = note.Text
Cmd.Parameters.Add(New SqlParameter("@PicturW", SqlDbType.Image)).Value = Pictur
If cn.State = ConnectionState.Open Then cn.Close()
cn.Open()
Cmd.ExecuteNonQuery()
cn.Close()
MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)