No actualiza campo ID en datagrid
Publicado por Mamila (10 intervenciones) el 27/02/2008 20:58:41
Hola,
tengo problemas para actualizar un datagrid que contiene 3 campos de una tabla de vendedores: id, codigo y nombre
El id es del tipo "identidad" por lo que se autogenera solo al crear nuevos registros en la BD.
El problema es que al agregar un nuevo registro y actualizar la BD, todo funciona bien pero en el datagrid agrega solo los campos de codigo y nombre y en la columna Id deja un (null). En la BD no hay problemas, solo en el datagrid.
Va el codigo para entender menjor el problema
gracias
Dim _connString As String
Dim conn As SqlConnection
Dim adapter As SqlDataAdapter
Dim ds As DataSet
Private Sub InitAdapter()
_connString = "DATA SOURCE=VENTAS; UID=sa; PWD=123456; DATABASE=Personas"
conn = New SqlConnection(_connString)
adapter = New SqlDataAdapter("SELECT id, codigo, nombre FROM vendedores", conn)
ds = New DataSet("ds")
'insertar nuevos datos
Dim insertCommand As New SqlCommand("INSERT INTO vendedores(codigo,nombre) VALUES(@codigo,@nombre)", conn)
Dim paramCodigo As New SqlParameter("@codigo", SqlDbType.NVarChar, 10, "codigo")
Dim paramNombre As New SqlParameter("@nombre", SqlDbType.NVarChar, 100, "nombre")
insertCommand.Parameters.Add(paramCodigo)
insertCommand.Parameters.Add(paramNombre)
adapter.InsertCommand = insertCommand
'actualizar registros modificados
Dim updateCommand As New SqlCommand("UPDATE vendedores SET codigo=@codigo,nombre=@nombre WHERE ( id = @id )", conn)
Dim paramUpdateCodigo As New SqlParameter("@codigo", SqlDbType.NVarChar, 10, "codigo")
Dim paramUpdateNombre As New SqlParameter("@nombre", SqlDbType.NVarChar, 100, "nombre")
Dim paramUpdateId As New SqlParameter("@id", SqlDbType.Int, 4, "id")
paramUpdateId.SourceVersion = DataRowVersion.Original
updateCommand.Parameters.Add(paramUpdateCodigo)
updateCommand.Parameters.Add(paramUpdateNombre)
updateCommand.Parameters.Add(paramUpdateId)
adapter.UpdateCommand = updateCommand
'eliminar registros
Dim deleteCommand As New SqlCommand("DELETE FROM vendedores WHERE (id = @id)", conn)
Dim paramDeleteId As New SqlParameter("@id", SqlDbType.Int, 4, "id")
paramDeleteId.SourceVersion = DataRowVersion.Original
deleteCommand.Parameters.Add(paramDeleteId)
adapter.DeleteCommand = deleteCommand
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InitAdapter()
Try
adapter.Fill(ds, "vendedores")
Me.DataGrid1.DataSource = ds
Me.DataGrid1.DataMember = "vendedores"
Catch ex As Exception
MessageBox.Show(ex.Message.ToString())
End Try
End Sub
Private Sub AddReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddReg.Click
'Crea una nueva fila para la tabla y la agrega al dataSet
Dim row As DataRow = ds.Tables("vendedores").NewRow()
row("codigo") = Me.TextBox1.Text.Trim
row("nombre") = Me.TextBox2.Text.Trim
ds.Tables("vendedores").Rows.Add(row)
adapter.Update(ds.Tables("vendedores"))
End Sub
tengo problemas para actualizar un datagrid que contiene 3 campos de una tabla de vendedores: id, codigo y nombre
El id es del tipo "identidad" por lo que se autogenera solo al crear nuevos registros en la BD.
El problema es que al agregar un nuevo registro y actualizar la BD, todo funciona bien pero en el datagrid agrega solo los campos de codigo y nombre y en la columna Id deja un (null). En la BD no hay problemas, solo en el datagrid.
Va el codigo para entender menjor el problema
gracias
Dim _connString As String
Dim conn As SqlConnection
Dim adapter As SqlDataAdapter
Dim ds As DataSet
Private Sub InitAdapter()
_connString = "DATA SOURCE=VENTAS; UID=sa; PWD=123456; DATABASE=Personas"
conn = New SqlConnection(_connString)
adapter = New SqlDataAdapter("SELECT id, codigo, nombre FROM vendedores", conn)
ds = New DataSet("ds")
'insertar nuevos datos
Dim insertCommand As New SqlCommand("INSERT INTO vendedores(codigo,nombre) VALUES(@codigo,@nombre)", conn)
Dim paramCodigo As New SqlParameter("@codigo", SqlDbType.NVarChar, 10, "codigo")
Dim paramNombre As New SqlParameter("@nombre", SqlDbType.NVarChar, 100, "nombre")
insertCommand.Parameters.Add(paramCodigo)
insertCommand.Parameters.Add(paramNombre)
adapter.InsertCommand = insertCommand
'actualizar registros modificados
Dim updateCommand As New SqlCommand("UPDATE vendedores SET codigo=@codigo,nombre=@nombre WHERE ( id = @id )", conn)
Dim paramUpdateCodigo As New SqlParameter("@codigo", SqlDbType.NVarChar, 10, "codigo")
Dim paramUpdateNombre As New SqlParameter("@nombre", SqlDbType.NVarChar, 100, "nombre")
Dim paramUpdateId As New SqlParameter("@id", SqlDbType.Int, 4, "id")
paramUpdateId.SourceVersion = DataRowVersion.Original
updateCommand.Parameters.Add(paramUpdateCodigo)
updateCommand.Parameters.Add(paramUpdateNombre)
updateCommand.Parameters.Add(paramUpdateId)
adapter.UpdateCommand = updateCommand
'eliminar registros
Dim deleteCommand As New SqlCommand("DELETE FROM vendedores WHERE (id = @id)", conn)
Dim paramDeleteId As New SqlParameter("@id", SqlDbType.Int, 4, "id")
paramDeleteId.SourceVersion = DataRowVersion.Original
deleteCommand.Parameters.Add(paramDeleteId)
adapter.DeleteCommand = deleteCommand
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InitAdapter()
Try
adapter.Fill(ds, "vendedores")
Me.DataGrid1.DataSource = ds
Me.DataGrid1.DataMember = "vendedores"
Catch ex As Exception
MessageBox.Show(ex.Message.ToString())
End Try
End Sub
Private Sub AddReg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddReg.Click
'Crea una nueva fila para la tabla y la agrega al dataSet
Dim row As DataRow = ds.Tables("vendedores").NewRow()
row("codigo") = Me.TextBox1.Text.Trim
row("nombre") = Me.TextBox2.Text.Trim
ds.Tables("vendedores").Rows.Add(row)
adapter.Update(ds.Tables("vendedores"))
End Sub
Valora esta pregunta


0