Textbox enlazado no graba

06/07/2005 - 20:06 por Ricardo S | Informe spam
el problema es el siguiente tengo un textbox enlazado con DataBindings,
modifico el valor y al ejecutar dataadapter.uodate nada no se entera que
cambio el dato:

dsCustomer.Tables(0).Rows(1).RowState es igual a Unchanged

les agradecería muchísimo si me pueden dar un norte o mandarme un ejemplo de
como se hace esto de los controles enlazados en NET yo y mis hijos les vamos
a estar eternamente agradecidos ; )

mi código esta si:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

strConexion = "data source=" & "Ricardo-Movil" & "; initial catalog=" &
"ProesaApp" & ";"

strConexion &= "user id=" & "sa" & ";"

strConexion &= "password=" & "" & ";"

cnProesaApp = New SqlConnection(strConexion)

cnProesaApp.Open()



daCustomer = New SqlDataAdapter

daCustomer.TableMappings.Add("Customer", "Customer")

SQLSt = "Select * from Customer"

cmdCustomer = New SqlCommand(SQLSt, cnProesaApp)

cmdCustomer.CommandType = CommandType.Text

daCustomer.SelectCommand = cmdCustomer

cbCustomer = New SqlCommandBuilder(daCustomer)

dsCustomer = New DataSet("Customer")

daCustomer.Fill(dsCustomer)

cCustId.DataBindings.Add (New Binding("Text", dsCustomer.Tables(0),
"custid"))

cAddr1.DataBindings.Add (New Binding("Text", dsCustomer.Tables(0),
"Addr1"))

cmCustomer = CType(Me.BindingContext(dsCustomer.Tables(0)),
CurrencyManager)

cmCustomer.Position = 0

End Sub

Private Sub pbSave_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles pbSave.Click

cbCustomer = New SqlCommandBuilder(daCustomer)

daCustomer.Update(dsCustomer.Tables("customer"))

dsCustomer.AcceptChanges()

End Sub
 

Leer las respuestas

#1 Tristan
06/07/2005 - 21:27 | Informe spam
Prueba a cambiar tu código por esto:

Private Sub pbSave_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles pbSave.Click
cbCustomer = New SqlCommandBuilder(daCustomer)
daCustomer.SelectCommand = cb.GetUpdateCommand()
' La siguiente sentencia puede no ser necesaria
me.BindingContext(dsCustomer, "customer").EndCurrentEdit()
daCustomer.Update(dsCustomer.Tables("customer"))
' *** NO dsCustomer.AcceptChanges()
End Sub

Te recomiendo, que el DataAdapter y en especial el CommandBuilder, lo crees
en un punto de ejecución única, para que no se tenga que crear una y otra
vez.

Una buena manera y muy sencilla de crear el DataAdapter, es mediante el
asistente del diseñador winforms. Simplemente arrastra un objeto DataAdapter
y el diseñador hará el resto.

Juan Carlos Badiola
MVP - C#

Preguntas similares