Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con sentencia UPDATE

Estas en el tema de Problema con sentencia UPDATE en el foro de .NET en Foros del Web. Hola, soy un viejo programador de Visual Basic 6 que despues de muchos años he retornado usando Visual Basic 2010. Despues de usar sentencias SQL ...
  #1 (permalink)  
Antiguo 19/03/2011, 11:42
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Problema con sentencia UPDATE

Hola, soy un viejo programador de Visual Basic 6 que despues de muchos años he retornado usando Visual Basic 2010.
Despues de usar sentencias SQL de tipo Select o Delete no he tenido ningun problema pero al usar el UPDATE me da error a la hora de ejecutar.
Aqui pongo la parte del codigo donde está el error:

Dim oconn As New OleDbConnection

Dim ocomn As New OleDbCommand

Dim odata As OleDbDataReader

oconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.AppDomain.CurrentDomain.BaseDirectory + "\usuarios.accdb"

oconn.Open()

ocomn.CommandText = "UPDATE Users SET User='" & TextBox1.Text & "',Pass='" & TextBox2.Text & "' WHERE User='" & login & "'"
ocomn.Connection = oconn

odata = ocomn.ExecuteReader()

Es una simple tabla con usuario y contraseña y lo que quiero es modificar los datos que escriba en el text1 y el text2. La variable login es de tipo string y guarda el usuario original que deseo modificar.

Agradecería cualquier tipo de ayuda. Muchas gracias y un saludo!
  #2 (permalink)  
Antiguo 19/03/2011, 23:03
Avatar de TECKNOCK  
Fecha de Ingreso: agosto-2010
Mensajes: 80
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problema con sentencia UPDATE

La lógica en .NET es diferente, te explico:

Declaramos variables:
Cita:
Public con AsNew OleDb.OleDbConnection _
("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.AppDomain.CurrentDomain.BaseDirectory + "\usuarios.accdb")

'Command Builder: Nexo entre BD y Programa
Public cb AsNew OleDb.OleDbCommandBuilder()

'DataSet: Contiene las tablas resultantes de tus consultas a la BD
Public ds AsNewDataSet

'Data Adapter: Realiza operaciones en las tablas del DataSet
Public da As OleDb.OleDbDataAdapter

'Instrucciones SQL: Para enviar y ejecutar en la BD
Public SQL AsString

Te aconsejo hacer esto en un MODULE y no en un FORM, asi podras hacer estas variables PUBLICAS y utilizarlas en varios FORMS.
  #3 (permalink)  
Antiguo 19/03/2011, 23:05
Avatar de TECKNOCK  
Fecha de Ingreso: agosto-2010
Mensajes: 80
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problema con sentencia UPDATE

Para obtener los datos de una tabla y poder manejarlos en el programa:
Cita:
SQL = "SELECT * FROM Mi_Tabla"
da = New OleDb.OleDbDataAdapter(SQL, con)
da.Fill(ds,
"Mi_Tabla")
Para agregar un Dato:
Cita:
'Creamos el Nuevo registro
Dim Nuevo_Reg AsDataRow = ds.Tables("Mi_Tabla").NewRow()
Nuevo_Reg.Item(
"Campo_1") = "Mi dato 1"
Nuevo_Reg.Item("Campo_2") = "Mi dato 2"
Nuevo_Reg.Item("Campo_3") = "Mi dato 3"

'Agregamos el nuevo Registro a la Tabla
ds.Tables("Mi_Tabla").Rows.Add(Nuevo_Reg)

'Cargamos el DA en el CB para que pueda realizar operaciones en la BD
cb.DataAdapter = da

'Actualizamos la BD

da.Update(ds,
"Mi_Tabla")
Para modificar un Dato:
Cita:
'Accedemos al Registro
ForEach Registro AsDataRowIn ds.Tables("Mi_Tabla").Rows
If Registro.Item("ID") = "El ID del registro" Then
Registro.Item("Campo_1") = "Mi nuevo dato 1"
Registro.Item("Campo_2") = "Mi nuevo dato 2"
Registro.Item(
"Campo_3") = "Mi nuevo dato 3"
EndIf
Next

'Cargamos el DA en el CB para que pueda realizar operaciones en la BD
cb.DataAdapter = da

'Actualizamos la BD

da.Update(ds,
"Mi_Tabla")
  #4 (permalink)  
Antiguo 19/03/2011, 23:06
Avatar de TECKNOCK  
Fecha de Ingreso: agosto-2010
Mensajes: 80
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problema con sentencia UPDATE

Para eliminar un Dato:
Cita:
'Accedemos al Registro
ForEach Registro AsDataRowIn ds.Tables("Mi_Tabla").Rows
If Registro.Item("ID") = "El ID del registro" Then
Registro.Delete()
EndIf
Next

'Cargamos el DA en el CB para que pueda realizar operaciones en la BD
cb.DataAdapter = da

'Actualizamos la BD

da.Update(ds,
"Mi_Tabla")


Recuerda lo siguiente:

- Puedes Cargar varias tablas en el DS, solo les pones diferentes nombres:

ds.Tables("Mi_Tabla_1"); ds.Tables("Mi_Tabla_2"); ds.Tables("Mi_Tabla_3")

- NO Puedes utilizar el mismo DA para diferentes consultas:

Cita:

'Creamos varios DA
Public da_1, da_2, da_3 As OleDb.OleDbDataAdapter

SQL =
"SELECT * FROM Mi_Tabla_1"
da_1 = New OleDb.OleDbDataAdapter(SQL, con)
da_1.Fill(ds,
"Mi_Tabla")

SQL = "SELECT * FROM Mi_Tabla_2"
da_2 = New OleDb.OleDbDataAdapter(SQL, con)
da_2.Fill(ds,
"Mi_Tabla")

SQL = "SELECT * FROM Mi_Tabla_3"
da_3 = New OleDb.OleDbDataAdapter(SQL, con)
da_3.Fill(ds,
"Mi_Tabla_3")
Recuerda que al modificar los datos en "Mi_Tabla_X" siempre debes utilizar el DA_X que contiene la consulta original.

Saludos !!!
  #5 (permalink)  
Antiguo 19/03/2011, 23:07
Avatar de TECKNOCK  
Fecha de Ingreso: agosto-2010
Mensajes: 80
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problema con sentencia UPDATE

ACLARACIÓN:

Tuve que poner el código en varias repustas porque FOROS del WEB me decia que era muy largo.... ¿¿Cómo esperan que ayudemos apropiadamente??

  #6 (permalink)  
Antiguo 20/03/2011, 03:04
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema con sentencia UPDATE

Está muy bien explicado el "nuevo" sistemas para trabajar con datos de una tabla. Para insertar y eliminar datos si admite mediante sentencias SQL y al parecer UPDATE no lo permite con SQL.

He probado para modificar los datos tal y como me dices pero me da otro error:

No se controló OleDbException
Error de sintaxis en la instrucción Update

da.Update(ds, "Users")
  #7 (permalink)  
Antiguo 20/03/2011, 23:01
Avatar de TECKNOCK  
Fecha de Ingreso: agosto-2010
Mensajes: 80
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problema con sentencia UPDATE

Asegurate de no utilizar nombres con espacios en la Base de Datos

(Ej. "Primer Apellido" esta mal, debe ser "Primer_Apellido")
  #8 (permalink)  
Antiguo 21/03/2011, 12:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema con sentencia UPDATE

Pues no era ese el problema... Al parecer como lo hice en principio estaba bien salvo q el error venia de otro lado. Mis campos en la tabla se llamaban User y Pass y los he cambiado por Usuario y Contra. El resultado es que ahora funciona y al parecer poner alguno de esos nombres en un campo crea algun tipo de conflicto.

Muchas gracias por tu ayuda que gracias a ese he aprendido a usar algo los commandbuilder, dataset y dataadapter.
  #9 (permalink)  
Antiguo 04/04/2011, 22:08
 
Fecha de Ingreso: agosto-2005
Mensajes: 722
Antigüedad: 18 años, 8 meses
Puntos: 2
Busqueda Respuesta: Problema con sentencia UPDATE

amigos una consulta estoy tratando de actualizar un registro con este codigo,

SQL = "select alumnos.* from alumnos"
da = NewOleDb.OleDbDataAdapter(SQL, oConn)

da.Fill(ds, "alumnos")

For EachRegistroAsDataRow In ds.Tables("alumnos").Rows

If Registro.Item("IdAlumno") = IdAlumno Then
Registro.Item("Nombres") = "Mi1"
Registro.Item("Apellidos") = "Mi2"

End If
Next

cb.DataAdapter = da


da.Update(ds, "alumnos")


pero al ejecutar en la linea da.Update(ds, "alumnos") muestra el error Error de sintaxis en la instruccion Update

por favor si alguien pudiera darme una mano se lo agradecería mucho

Última edición por alfil123; 04/04/2011 a las 22:13

Etiquetas: sentencia, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:00.