المشاركات : 684
المواضيع 248
الإنتساب : Dec 2013
السمعة :
18
الشكر: 381
تم شكره 381 مرات في 232 مشاركات
السلام عليكم
اضيف صور لقاعدة البيانات من البيكتشر بوكس بتحويل الصور الي بايت
الكود يضيف عادي لو اضفت صورة بصندوق الصور ولكن ان كان فارغ لا يضيف الصورة الفارغة او 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
المشاركات : 112
المواضيع 0
الإنتساب : Oct 2018
السمعة :
22
الشكر: 1520
تم شكره 260 مرات في 146 مشاركات
جرب هذا
كود :
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
المشاركات : 813
المواضيع 24
الإنتساب : Oct 2012
السمعة :
228
الشكر: 1145
تم شكره 2171 مرات في 815 مشاركات
في الجدول بقاعدة البيانات إجعل حقل الصورة يقبل ( Null )
وفي البرنامج , لا تمرر أي شيء يخص الصورة إذا كانت خالية , لست مطالب بتمرير ( Parameter ) يعبر عن قيمة الصورة , إذا كانت في الجدول بقاعدة البيانات تقبل ( Null )
المشاركات : 684
المواضيع 248
الإنتساب : Dec 2013
السمعة :
18
الشكر: 381
تم شكره 381 مرات في 232 مشاركات
(02-10-18, 08:22 PM)عبدالله الدوسري كتب : في الجدول بقاعدة البيانات إجعل حقل الصورة يقبل ( Null )
وفي البرنامج , لا تمرر أي شيء يخص الصورة إذا كانت خالية , لست مطالب بتمرير ( Parameter ) يعبر عن قيمة الصورة , إذا كانت في الجدول بقاعدة البيانات تقبل ( Null )
فين الخاصية دية بجدول الاكسيس required = no , text align , caption
المشاركات : 813
المواضيع 24
الإنتساب : Oct 2012
السمعة :
228
الشكر: 1145
تم شكره 2171 مرات في 815 مشاركات
المشاركات : 684
المواضيع 248
الإنتساب : Dec 2013
السمعة :
18
الشكر: 381
تم شكره 381 مرات في 232 مشاركات
03-10-18, 01:08 PM
(آخر تعديل لهذه المشاركة : 03-10-18, 01:09 PM {2} بواسطة محمد اسماعيل.)
(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 )
جزاكم الله خيرا عني وعن غيري
المشاركات : 101
المواضيع 27
الإنتساب : Feb 2020
السمعة :
4
الشكر: 76
تم شكره 148 مرات في 74 مشاركات
السلام عليكم ورحمة الله وبركاته
لدي نفس المشكلة ولم أفهم ما يقصده الاستاذ عبدالله الدوسري
قمت بتعديل في قاعدة البيانات وجعلت خانة الصورة تقبل 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)
المشاركات : 2,061
المواضيع 49
الإنتساب : Oct 2017
السمعة :
538
الشكر: 10647
تم شكره 5323 مرات في 2095 مشاركات
29-04-20, 07:59 PM
(آخر تعديل لهذه المشاركة : 29-04-20, 08:00 PM {2} بواسطة ابراهيم ايبو.)
السلام عليكم ورحمة الله وبركاته
يبدو ان المشكلة الصغيرة هذه قد ارقت الكثيرين
تخزين سجل ما وتخزين الصورة اوبشنال اي كيفي ولجل هذا الاشكال نتبع التالي :
اولا في قاعدة البيانات يجب ان يكون حقل الصورة يقبل 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
دمتم بخير .. رمضان كريم والله اكرم
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
المشاركات : 813
المواضيع 24
الإنتساب : Oct 2012
السمعة :
228
الشكر: 1145
تم شكره 2171 مرات في 815 مشاركات
|