Act. datos en base de datos

05/10/2006 - 12:54 por angelo | Informe spam
Hola, estoy haciendo una aplicación en Visual Basic 2005.

Cuando el ejecuto el comando Update me da un error:

Update requiere que UpdateCommand sea valido

Cuando genero el adaptador de datos me dice:

Instrucción SELECT generada

Instrucción INSET generada

Pero no me dice nada del Update.


If Me.DataSet1.HasChanges() Then

ValMess = MessageBox.Show("Desea actualizar los Datos ? ", "Actualizar",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information)

If ValMess = Windows.Forms.DialogResult.OK Then

Try

Me.DataFam.Update(DataSet1)

MessageBox.Show("Familias Actualizada")

Catch ex As System.InvalidOperationException

MsgBox(ex.ToString)

MessageBox.Show("No se actualizan los datos")

End Try

End If

End If



Muchas gracias

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
05/10/2006 - 13:59 | Informe spam
Hola Angelo

Prueba a crear un objeto CommandBuilder, que te construya automaticamente
para el adaptador, las sentencias necesarias para la tabla del dataset,
relativas a las operaciones de consulta, borrado y actualización. De esta
manera, cuando ejecutes el método Update() del adaptador, debido a que ya
tiene la sentencia de actualización, te debería de funcionar correctamente.

Te adjunto un bloque de código con un ejemplo:

'////////////////////////////////////
oConexion = New SqlConnection()
oConexion.ConnectionString = "Data Source=localhost;Initial
Catalog=Northwind;User ID=sa;Password="

oComando = New SqlCommand("SELECT * FROM Shippers", oConexion)

' crear un adaptador de datos que contenga el comando
oDataAdapter = New SqlDataAdapter(oComando)

' utilizar el generador de comandos para el DataAdapter
Dim oCommandBuilder As SqlCommandBuilder
oCommandBuilder = New SqlCommandBuilder(oDataAdapter)

' crear un dataset
oDataSet = New DataSet()

oConexion.Open()
' rellenar el dataset utilizando el adaptador
oDataAdapter.Fill(oDataSet, "Shippers")
oConexion.Close()

' mostrar el dataset en un datagridview
Me.grdDatos.DataSource = oDataSet
Me.grdDatos.DataMember = "Shippers"

'
' realizar operaciones con los datos
'

' actualizar cambios del dataset en la tabla de la base de datos

oDataAdapter.Update(oDataSet, "Shippers")
'////////////////////////////////////

Espero que te sea de utilidad.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"angelo" wrote:

Hola, estoy haciendo una aplicación en Visual Basic 2005.

Cuando el ejecuto el comando Update me da un error:

Update requiere que UpdateCommand sea valido

Cuando genero el adaptador de datos me dice:

Instrucción SELECT generada

Instrucción INSET generada

Pero no me dice nada del Update.


If Me.DataSet1.HasChanges() Then

ValMess = MessageBox.Show("Desea actualizar los Datos ? ", "Actualizar",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information)

If ValMess = Windows.Forms.DialogResult.OK Then

Try

Me.DataFam.Update(DataSet1)

MessageBox.Show("Familias Actualizada")

Catch ex As System.InvalidOperationException

MsgBox(ex.ToString)

MessageBox.Show("No se actualizan los datos")

End Try

End If

End If



Muchas gracias



Respuesta Responder a este mensaje
#2 angelo
05/10/2006 - 19:25 | Informe spam
Muchas gracias ..esto funciona..

Pero por que no funciona de la otra manera ?

Muchas gracias de nuevo.
Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
06/10/2006 - 08:49 | Informe spam
Hola Angelo

Cuando creas un dataadapter para cargar datos desde una base de datos en un
dataset, las propiedades correspondientes a los comandos de inserción,
borrado y modificación (InsertCommand, DeleteCommand, etc.) no tienen valor.

Si sólo vas a usar el dataadapter para volcar datos a un dataset, no debes
preocuparte, ya que no necesitas que dichas propiedades tengan el objeto
command correspondiente, pero si vas a hacer algún tipo de operación
adicional con el adaptador de datos, como por ejemplo, actualizar de vuelta
los registros modificados en el dataset sobre la base de datos física, en ese
caso necesitas que la propiedad UpdateCommand contenga el correspondiente
objeto command para que el dataadapter "sepa" cómo tiene que ejecutar las
actualizaciones.

Para no tener que estar creando manualmente este conjunto de comandos es
para lo que se proporciona el objeto CommandBuilder, el cual genera
automáticamente para el adaptador de datos los mencionados comandos, de
manera que se facilita en este sentido dichas operaciones de actualización.

Espero que estas indicaciones te hayan sido de utilidad.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"angelo" wrote:

Muchas gracias ..esto funciona..

Pero por que no funciona de la otra manera ?

Muchas gracias de nuevo.



Respuesta Responder a este mensaje
#4 angelo
06/10/2006 - 16:31 | Informe spam
Muchas gracias por la aclaración.
Si quiereo hacer un Inser y un Delete, como deberia hacerlo ?

Gracias


"Luis Miguel Blanco" escribió
en el mensaje news:
Hola Angelo

Cuando creas un dataadapter para cargar datos desde una base de datos en


un
dataset, las propiedades correspondientes a los comandos de inserción,
borrado y modificación (InsertCommand, DeleteCommand, etc.) no tienen


valor.

Si sólo vas a usar el dataadapter para volcar datos a un dataset, no debes
preocuparte, ya que no necesitas que dichas propiedades tengan el objeto
command correspondiente, pero si vas a hacer algún tipo de operación
adicional con el adaptador de datos, como por ejemplo, actualizar de


vuelta
los registros modificados en el dataset sobre la base de datos física, en


ese
caso necesitas que la propiedad UpdateCommand contenga el correspondiente
objeto command para que el dataadapter "sepa" cómo tiene que ejecutar las
actualizaciones.

Para no tener que estar creando manualmente este conjunto de comandos es
para lo que se proporciona el objeto CommandBuilder, el cual genera
automáticamente para el adaptador de datos los mencionados comandos, de
manera que se facilita en este sentido dichas operaciones de


actualización.

Espero que estas indicaciones te hayan sido de utilidad.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"angelo" wrote:

> Muchas gracias ..esto funciona..
>
> Pero por que no funciona de la otra manera ?
>
> Muchas gracias de nuevo.
>
>
>
Respuesta Responder a este mensaje
#5 Luis Miguel Blanco
06/10/2006 - 17:48 | Informe spam
Hola Angelo

Para realizar una inserción en un dataset puedes utilizar el método NewRow()
de la tabla sobre la que vayas a añadir el registro. Esto te devuelte un
objeto datarow con la estructura de la fila adaptada a la tabla, por lo que
sólo tienes que ir añadiendo los valores a los campos del datarow, y por
último, añades dicho objeto a la colección rows del dataset.

En cuanto al borrado de un registro en un dataset, puedes utilizar el método
Delete() de la colección rows correspondiente a la tabla del dataset sobre la
que necesitas hacer el borrado, teniendo en cuenta que debes pasar como
parámetro la posición de fila a borrar.

Te adjunto un ejemplo de ambos casos

'//////////////////////////////////////////////////////
' añadir registro
Dim drFila As DataRow = oDataSet.Tables("NombreTabla").NewRow()
drFila("Campo1") = "valor campo"
drFila("Campo2") = "valor campo"
oDataSet.Tables("NombreTabla").Rows.Add(drFila)

' borrar registro
oDataSet.Tables("NombreTabla").Rows(nPosicionFila).Delete()
'//////////////////////////////////////////////////////

Espero que el ejemplo te sirva de ayuda.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"angelo" wrote:

Muchas gracias por la aclaración.
Si quiereo hacer un Inser y un Delete, como deberia hacerlo ?

Gracias


"Luis Miguel Blanco" escribió
en el mensaje news:
> Hola Angelo
>
> Cuando creas un dataadapter para cargar datos desde una base de datos en
un
> dataset, las propiedades correspondientes a los comandos de inserción,
> borrado y modificación (InsertCommand, DeleteCommand, etc.) no tienen
valor.
>
> Si sólo vas a usar el dataadapter para volcar datos a un dataset, no debes
> preocuparte, ya que no necesitas que dichas propiedades tengan el objeto
> command correspondiente, pero si vas a hacer algún tipo de operación
> adicional con el adaptador de datos, como por ejemplo, actualizar de
vuelta
> los registros modificados en el dataset sobre la base de datos física, en
ese
> caso necesitas que la propiedad UpdateCommand contenga el correspondiente
> objeto command para que el dataadapter "sepa" cómo tiene que ejecutar las
> actualizaciones.
>
> Para no tener que estar creando manualmente este conjunto de comandos es
> para lo que se proporciona el objeto CommandBuilder, el cual genera
> automáticamente para el adaptador de datos los mencionados comandos, de
> manera que se facilita en este sentido dichas operaciones de
actualización.
>
> Espero que estas indicaciones te hayan sido de utilidad.
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
>
>
> "angelo" wrote:
>
> > Muchas gracias ..esto funciona..
> >
> > Pero por que no funciona de la otra manera ?
> >
> > Muchas gracias de nuevo.
> >
> >
> >



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida