Update

13/07/2006 - 15:56 por JReyes | Informe spam
Como puedo darme cuenta si se hizo algun cambio el base de datos al ejecutar
este codigo:

AbrirConexion()
Dim cActualizar As OleDbCommand
cActualizar = New OleDbCommand("UPDATE AM_Medicamentos SET " & _
"Medicamentos = @Nombre," & _
"Presentacion_Medicamentos = @Presentacion," & _
"Descripcion_Medicamentos = @Descripcion," & _
"WHERE ID_Medicamentos = @ID", oSQLConn)

cActualizar.Parameters.Add("@Nombre", OleDbType.VarChar, 50).Value =
txtNombre.Text
cActualizar.Parameters.Add("@Presentacion", OleDbType.VarChar, 255).Value =
txtPresentacion.Text
cActualizar.Parameters.Add("@Descripcion", OleDbType.VarChar, 50).Value =
txtDescripcion.Text
cActualizar.Parameters.Add("@ID", OleDbType.Numeric, 10).Value =
txtCodigo.Text
Try
cActualizar.ExecuteNonQuery()
MsgBox("Información actualizada correctamente...", MsgBoxStyle.Information _
Or MsgBoxStyle.SystemModal _
Or MsgBoxStyle.MsgBoxRight _
Or MsgBoxStyle.MsgBoxRtlReading, "Info. Consultorio")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical _
Or MsgBoxStyle.MsgBoxRight _
Or MsgBoxStyle.MsgBoxRtlReading)
End Try

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
13/07/2006 - 16:45 | Informe spam
ExecuteNonQuery te devuelve la cantidad de registros afectadas por el
comando ejecutado. Si todo esta bien en la consulta pero no modifica nada te
devuelve 0, y por supuesto que si hay algun otro problema se generara una
excepcion.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
Respuesta Responder a este mensaje
#2 SoftJaén
13/07/2006 - 16:48 | Informe spam
"JReyes" preguntó:

Como puedo darme cuenta si se hizo algun cambio el base
de datos al ejecutar este codigo:

cActualizar.ExecuteNonQuery()



Hola:

El método «ExecuteNonQuery» devuelve los registros afectados por una
consulta SQL de acción, como la consulta de actualización que estás
ejecutando:

Dim record As Integer = cActualizar.ExecuteNonQuery()

MessageBox.Show("Registros afectados: " & record.ToString)

En tu caso, y al estar especificando un criterio único en la claúsula WHERE,
si la actualización se ha llevado a efecto, te devolverá el valor 1; de lo
contrario, obtendrás el valor 0.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#3 JReyes
13/07/2006 - 17:10 | Informe spam
He probado con esto:

Dim record As Integer = cActualizar.ExecuteNonQuery()
MessageBox.Show("Registros afectados: " & record.ToString)

y si hacer ningun cambio me devuelve 1, esto no me sirve

bien explico otra ves por ejemplo tengo un formulario con los textbox que
capturan mis datos los que les envie en el ejemplo anterior, bien tengo otro
donde tengo un datagridview al seleccionar cualquier registro del datagrid
para actualizarlo se pasa a cada textbox correspondiente, bien aqui voy, si
por ejemplo hago un cambio en un textbox osea en uno dice (Presentacion) por
decir algo; y lo cambio por (Presentar) hay un cambio y por tal razon se debe
actualizar pero si no hago ningun cambio en nada que me muestre algun mensaje
como (No hubo cambios en los datos) algo asi.

Creo que ahora si les explique mejor.

"SoftJaén" escribió:

"JReyes" preguntó:

> Como puedo darme cuenta si se hizo algun cambio el base
> de datos al ejecutar este codigo:
>
> cActualizar.ExecuteNonQuery()

Hola:

El método «ExecuteNonQuery» devuelve los registros afectados por una
consulta SQL de acción, como la consulta de actualización que estás
ejecutando:

Dim record As Integer = cActualizar.ExecuteNonQuery()

MessageBox.Show("Registros afectados: " & record.ToString)

En tu caso, y al estar especificando un criterio único en la claúsula WHERE,
si la actualización se ha llevado a efecto, te devolverá el valor 1; de lo
contrario, obtendrás el valor 0.

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.




Respuesta Responder a este mensaje
#4 SoftJaén
13/07/2006 - 18:34 | Informe spam
"JReyes" escribió:

Dim record As Integer = cActualizar.ExecuteNonQuery()
MessageBox.Show("Registros afectados: " & record.ToString)

y si hacer ningun cambio me devuelve 1, esto no me sirve



Pues si no te sirve, es el único medio que conozco para conocer los
registros afectados por la ejecución de una consulta SQL de acción.

Lo que ocurre es que, si la consulta se ha ejecutado correctamente, siempre
te devolverá el valor 1, con independencia que se haya actualizado o no el
registro, pero lo que indica dicho valor es que la consulta se ha ejecutado
satisfactoriamente.

si por ejemplo hago un cambio en un textbox osea en uno dice
(Presentacion) por decir algo; y lo cambio por (Presentar) hay
un cambio y por tal razon se debe actualizar pero si no hago
ningun cambio en nada que me muestre algun mensaje
como (No hubo cambios en los datos) algo asi.

Creo que ahora si les explique mejor.



Sí, creo que ahora te has explicado mejor. Pero para eso, no hace falta
ejecutar una consulta de actualización. Ésta la deberás de ejecutar
únicamente cuando se haya producido algún cambio.

Para conocer si ha habido algún cambio en los controles TextBox de tu
formulario, deberás de declarar una variable tipo Boolean a nivel de la
propia clase del formulario, y en los correspondientes eventos «TextChanged»
de los controles TextBox, establecer el valor True a la variable, para que
en todo momento puedes conocer si se ha producido un cambio en el texto del
control. Me explico:

A nivel de la clase del formulario, declaras un campo Boolean:

Private HasChanges As Boolean

Después, en todos los eventos TextChanged de los controles que deseas
comprobar, ejecutarías lo siguiente:

Private Sub TextBox1_TextChanged( ...) Handles TextBox1.TextChanged
' Se ha modificado el contenido del texto
HasChanges = True
End Sub

Cuando desees conocer si debes o no ejecutar la consulta SQL de
actualización, lo único que tienes que hacer es verificar el valor del
campo:

If HasChanges = True Then
' Ejecutar la consulta de Actualización
End If

Otra opción que tienes, es comprobar el valor de la propiedad «Modified» de
cada control TextBox, la cual te devolverá el valor «True» si el contenido
del texto ha sido modificado. Pero claro, esta propiedad la deberás de
comprobar con cada uno de los controles TextBox incluidos en el formulario,
y si son muchos, vas a tener que hacer bastantes comprobaciones.

No sé si me he explicado bien. :-)

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida