السلام عليكم
من فظلكم تصحيح الكود عند حفظ الصنف بإضافة صورة يحفظ عادي بدون مشاكل
لكن عند الحفظ بدون صورة يأتي هذا الخطأ
و ايضا نفس الشيئ بالنسبة للتعديل عند تغيير الصورة يعدل الصنف عادي بدون مشاكل
اما عند ابقاء الصورة السابقة المستوردة من قاعدة البيانات و الضغط على تعديل يأتي هذا الخطأ
الموضوع بسيط لكن شلون اشرحه لك؟
اكتب بارامترين للحفظ
واحد يحتوي حفظ صورة وآخر بدون حفظ صورة.
#29
ممكن حل أخر بدون التكرار يعني كود واحد يفي بالغرض
(24-10-20, 01:27 AM)sofiane-phy كتب : [ -> ]ممكن حل أخر بدون التكرار يعني كود واحد يفي بالغرض
هو اللي حيتنفذ كود واحد فقط لكن بناء على شرط هل الميموري ستريم فارغة ام لا ان كانت فارغة هذا يعني لم يتم اختيار صورة سواءا كجديد او تعديل.
PHP كود :
Dim row As DataRow = dt.NewRow
row(1) = tname.Text
row(2) = CDate(dob.Text).ToShortDateString
If IsNothing(ms) = False Then
row(3) = ms.ToArray
End If
dt.Rows.Add(row)
da.Update(dt)
ms = Nothing
السابق للجديد والتالي للتعديل كمثال
PHP كود :
Dim i As Integer = BindingContext(dt).Position
Dim row As DataRow = dt.Rows(BindingContext(dt).Position)
row.BeginEdit()
row(1) = tname.Text
row(2) = CDate(dob.Text).ToShortDateString
If IsNothing(ms) = False Then
row(3) = ms.ToArray
End If
row.EndEdit()
da.Update(dt)
ms = Nothing
الكود اللي كتبته كفكرة فقط بالاتصال المنفصل.
يا اخي هل فكرت تضع شرط if للتحقق مما اذا كان الـ stream فارغ تنفذ حفظ التعديل او البيانات بدون جزء حفظ الصورة
وعلى العكس تنفذ الكود كاملا
فقط اذا كنت لا تريد التكرار وما شبه
هو انشاء صورة بمقاس 1×1 بكسل
ومن ثم انشاء شرط تحقق اذا كان اداء الصورة فارغ / غير محدد
يقوم باستعانة مسار الصورة الافتراضية التى تم تصميمها بمقاس 1×1
وبكده تكون انهيت المشكلة
(24-10-20, 02:15 AM)sofiane-phy كتب : [ -> ]ممكن تصحيح الكود
كود :
'************************كود فك تشفير الصورة****************************
If IsDBNull(DR!ItemPicture) = False Then
Dim imgByteArray() As Byte
imgByteArray = CType(DR!ItemPicture, Byte())
Dim Stream As New MemoryStream(imgByteArray)
Dim bmp As New Bitmap(Stream)
ItemPicture.Image = Image.FromStream(Stream)
Stream.Close()
End If
Else
If OpenFileDialog1.FileName <> "" Then
Dim imgBYteArray() As Byte
Dim Stream As New MemoryStream
ItemPicture.Image.Save(Stream, ImageFormat.Jpeg)
imgBYteArray = Stream.ToArray()
Stream.Close()
DR!ItemPicture = imgBYteArray
End If
'*************************************
اخي الكريم
ان لم اخطيء فان الاجرائين اللذين كتبتهما تلو بعض غير مناسبة!
الاول يعين صورة مخزنة في القاعدة في مربع صورة والاخر يقوم بعملية عكسية اي يحفظ الصورة من مربع الصورة للجدول.
كونهم تلو بعض هذه هي المشكلة.
أم ان المطلوب شيء آخر.