منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : OleDbCommandBuilder لا يعمل مع الداتاقريد فيو (تم الحل)
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ...كيف حال الجميع
لقد صادفتني مشكلة اثناء الحفظ بإستعمال OleDbCommandBuilder
حيث لما امرر قيمة من تكست بوكس مثلا الى الداتاقريد فيو برمجيا لا تتم عملية الحفظ اما لم اقوم بتغيير القيمة يديويا يتم الحفظ
قمت بملأ الداتا قريد(dgv_produit) بالكود التالي :
PHP كود :
Sub fillDgv_produit()

 
       MyadapterSP = New OleDbDataAdapter("select * from tbl_produit"con)
 
       dtsp = New DataTable
        MyadapterSP
.Fill(dtsp)
 
       dgv_Produit.AutoGenerateColumns False
        dgv_Produit
.DataSource dtsp.DefaultView


    End Sub 

ثم قمت بتمرير قيمة من تكست بوكس الى خلية من الداتاقريد و هي كالأتي :
PHP كود :
dgv_Produit.Item("qty"rowindex).Value = (dgv_Produit.Item("qty"rowindex).Value) - (Val(txtQty.Text)) 
 
ثم عملية الحفظ كالأتي 
PHP كود :
   Dim cmdb As New OleDbCommandBuilder(MyadapterSP)
        MyadapterSP.Update(dtsp)
        dtsp.AcceptChanges() 
طريقه تعريف OleDbCommandBuilder هي
Dim cmdb As New OleDbCommandBuilder(dtsp)
بالاضافه الى التحديث
MyadapterSP.Update(dtsp)


لكن قبلها يجب عمل endedit للداتاجريد
dgv_Produit.EndEdit

وبعد عمليه الحفظ اعد تحميل البيانات
fillDgv_produit

يعني الكود

dgv_Produit.EndEdit

Dim cmdb As New OleDbCommandBuilder(dtsp)

MyadapterSP.Update(dtsp)

fillDgv_produit

والافضل اضافه QuotePrefix وQuoteSuffix الى cmdb بفيكون الكود

dgv_Produit.EndEdit

Dim cmdb As New OleDbCommandBuilder(dtsp)
cmdb.QuotePrefix = "]"
cmdb.QuoteSuffix = "["

MyadapterSP.Update(dtsp)

fillDgv_produit
اخي بدري بارك الله فيك 
لكن بقي هناك إشكال 
اخر سجل في الداتاقريد لا يتم تحديثه
لا ادري ما السبب
قد يحتاج الامر الى ان تضع مشروع بسيط للفكره
السلام عليكم
لقد تم الحل بإضافة الكود التالي 
PHP كود :
 ValidateChildren()