Ayuda con SqlDataAdapter, por favor.

29/07/2004 - 00:40 por Miguel Arenas | Informe spam
Tengo este problema al actualizar SqlDataAdapter.
En el evento form_load lleno dataset y lo asgino al
DataGrid, este dataset esta declarado en este evento
Form_load y aqui mismo se cierra.


En un boton tengo Este Codigo, que esdonde marca el
siguiente error
An unhandled exception of
type 'System.InvalidOperationException' occurred in
system.data.dll
Additional information: Update requires a valid
UpdateCommand when passed DataRow collection with modified
rows.

'**** Variable DGSqlTabla es un DataGrid ****

Dim Cn As System.Data.SqlClient.SqlConnection = New
SqlClient.SqlConnection(pARAMETROS)
Dim sdasqlTabla As New System.Data.SqlClient.SqlDataAdapter
Dim DssqlTabla As System.Data.DataSet = New
System.Data.DataSet
Dim Wsql As String

Wsql = ""

sdasqlTabla.SelectCommand = New
System.Data.SqlClient.SqlCommand
Wsql = "Select * from sqlTabla "
sdasqlTabla.SelectCommand.Connection = Cn
sdasqlTabla.SelectCommand.CommandType = CommandType.Text
sdasqlTabla.SelectCommand.CommandText = Wsql
Cn.Open()
DssqlTabla = DGsqlTabla.DataSource

Dim tblsqlTabla As DataTable = DssqlTabla.Tables
(0).GetChanges(DataRowState.Modified)
If Not tblsqlTabla.HasErrors Then
sdasqlTabla.Update(tblsqlTabla)'Aqui marca error.
End If
tblsqlTabla = Nothing
DssqlTabla = Nothing
sdasqlTabla = Nothing
Cn.Close()
Cn = Nothing
 

Leer las respuestas

#1 DJ_MIAO
29/07/2004 - 02:43 | Informe spam
Flaco para que no escribas tanto usa el asistende.El
control de sqldataadapter tiralo en la forma y el sale.
ya hay el crea todo lo necesario para insert,deletey
update.

Si me das tu mail te puedo enviar unos print screen de
como hacerlo.Por este medio no se puede.
De la forma que la loca te dice hay que escribir mucho y
exacto y si son 40 campos? De la dorma que te digo es
automatico.


Miao...

Tienes que declarar un update command para el data


adapter (para que
actualice los registros cambiados en el dataSet -


vinculado al dataGrid-), y
si hay insercion de nuevos registros, tambien debes


declara un insert
command
Tambien puedes ayudarte con el CommandBuilder
Te doy un ejemplo con ambos. Yo uso OLEDB pero es muy


similar con SQL

SIN COMMAND BUILDER

dataAdapter.UpdateCommand = New OleDb.OleDbCommand


( "UPDATE tabla SET
campo1= ? , campo2= ? , campo3= ? WHERE campo4 = ?",


conexion)
****LOS PARAMETROS DEBEN SER EN EL ORDEN EN EL QUE ESTEN


EN EL QUERY
dataAdapter.UpdateCommand.Parameters.Add(New


OleDb.OleDbParameter("?",
TipoDeDatoDelCampo1, TamañoDelCampo1, "campo1"))
dataAdapter.UpdateCommand.Parameters.Add(New
OleDb.OleDbParameter("?",TipoDeDatoDelCampo2,


TamañoDelCampo2, "campo2"))
dataAdapter.UpdateCommand.Parameters.Add(New


OleDb.OleDbParameter("?",
TipoDeDatoDelCampo3, TamañoDelCampo3, "campo3"))
dataAdapter.UpdateCommand.Parameters.Add(New


OleDb.OleDbParameter("?",
TipoDeDatoDelCampo4, TamañoDelCampo4, "campo4"))

Es lo mismo con el InsertCommand

CON COMMAND BUILDER

Dim ComBuild As OleDb.OleDbCommandBuilder = New
OleDb.OleDbCommandBuilder(dataAdapter)
dataAdapter = New OleDb.OleDbDataAdapter
dataAdapter.SelectCommand = New OleDb.OleDbCommand(QUERY


DE SELECCION
ORIGINAL,conexion)
ComBuild.DataAdapter = dataAdapter
dataAdapter.InsertCommand = New
OleDb.OleDbCommand


(ComBuild.GetInsertCommand.CommandText, conexion)

***LA DIFERENCIA CON ESTOS, ES QUE YA DEBES SABER LOS


PARAMETROS QUE TE PIDE
EL INSERT COMMAND GENERADO
dataAdapter.InsertCommand.Parameters.Add(New


OleDb.OleDbParameter("?",
OleDb.OleDbType.VarChar, 7, "campo1"))
dataAdapterInsertCommand.Parameters.Add(New


OleDb.OleDbParameter("?",
OleDb.OleDbType.VarChar, 20, "campo2"))
dataAdapter.InsertCommand.Parameters.Add(New


OleDb.OleDbParameter("?",
OleDb.OleDbType.Date, 8, "campo3"))

ESPERO QUE TE HAYA SIDO DE AYUDA

Ing. Alejandra Parra
Mexico


"Miguel Arenas"


escribió en el mensaje
news:616201c474f3$d3402d90$
Tengo este problema al actualizar SqlDataAdapter.
En el evento form_load lleno dataset y lo asgino al
DataGrid, este dataset esta declarado en este evento
Form_load y aqui mismo se cierra.


En un boton tengo Este Codigo, que esdonde marca el
siguiente error
An unhandled exception of
type 'System.InvalidOperationException' occurred in
system.data.dll
Additional information: Update requires a valid
UpdateCommand when passed DataRow collection with




modified
rows.

'**** Variable DGSqlTabla es un DataGrid ****

Dim Cn As System.Data.SqlClient.SqlConnection = New
SqlClient.SqlConnection(pARAMETROS)
Dim sdasqlTabla As New




System.Data.SqlClient.SqlDataAdapter
Dim DssqlTabla As System.Data.DataSet = New
System.Data.DataSet
Dim Wsql As String

Wsql = ""

sdasqlTabla.SelectCommand = New
System.Data.SqlClient.SqlCommand
Wsql = "Select * from sqlTabla "
sdasqlTabla.SelectCommand.Connection = Cn
sdasqlTabla.SelectCommand.CommandType =




CommandType.Text
sdasqlTabla.SelectCommand.CommandText = Wsql
Cn.Open()
DssqlTabla = DGsqlTabla.DataSource

Dim tblsqlTabla As DataTable = DssqlTabla.Tables
(0).GetChanges(DataRowState.Modified)
If Not tblsqlTabla.HasErrors Then
sdasqlTabla.Update(tblsqlTabla)'Aqui marca error.
End If
tblsqlTabla = Nothing
DssqlTabla = Nothing
sdasqlTabla = Nothing
Cn.Close()
Cn = Nothing





.

Preguntas similares