Re: No puedo realizar update vb.net Access[SOLUCIONADO]

Iniciado por Yaldabaot, 8 Julio 2014, 00:05 AM

0 Miembros y 1 Visitante están viendo este tema.

Yaldabaot

Hola, estoy haciendo un programa que cambia contraseñas, pero por alguna extraña razón el UPDATE no me funciona D:, VB.NET 2010

Código (vbnet) [Seleccionar]


        conn.Open()

       cmd = New OleDb.OleDbCommand("UPDATE USUARIOS SET PASSWORD = @PASS WHERE USUARIO = @USER", conn)

       cmd.Parameters.AddWithValue("@USER", usuario)
       cmd.Parameters.AddWithValue("@PASS", password)




       cmd.ExecuteNonQuery()


       conn.Close()


 
ERROR = "Error de sintaxis en la instrucción UPDATE.".

Lo he cambiado sin parámetros y con parámetros, no se que será. Gracias por su ayuda y por leerme

Nunca me contestan -_-

Ari Slash

Intenta quitando los "@" de "AddWithValue".

Código (vbnet) [Seleccionar]
conn.Open()
cmd = New OleDb.OleDbCommand("UPDATE USUARIOS SET PASSWORD = @PASS WHERE USUARIO = @USER", conn)
cmd.Parameters.AddWithValue("USER", usuario)
cmd.Parameters.AddWithValue("PASS", password)
cmd.ExecuteNonQuery()

Yaldabaot

Gracias por responder  ;D

Lo intentaré y mañana te reporto que tal me fue!!, gracias.
Nunca me contestan -_-

Yaldabaot

#3
Código (vbnet) [Seleccionar]


    conn.Open()

       cmd = New OleDb.OleDbCommand("UPDATE USUARIOS SET PASSWORD = @PASS WHERE USUARIO = @USER", conn)

       cmd.Parameters.AddWithValue("USER", usuario)
       cmd.Parameters.AddWithValue("PASS", password)
       cmd.ExecuteNonQuery()

       conn.Close()



Me sigue dando el mismo error, también utilicé este código y nada :(


Código (vbnet) [Seleccionar]


         conn.Open()
         cmd = New OleDb.OleDbCommand("UPDATE USUARIOS SET PASSWORD = '" & password & "' WHERE USUARIO = '" & usuario & "'".Replace(".", ""), conn)
       cmd.ExecuteNonQuery()
       conn.Close()




Lo extraño es que esos campos son texto en el motor, y tengo esos mismos comandos y me funcionan bien en otras aplicaciones, sinceramente me quedo corto porque es un error muy extraño.

Imports System.Data.SqlClient
Imports System.Data.OleDb

Esas son las librería que uso, nada fuera de lo normal.

PD: Ya lo intenté usando también sin el replace por si era algún caracter o algo pero nada.

Nunca me contestan -_-

Ari Slash

Prueba con SqlCLient:

Código (vbnet) [Seleccionar]
Dim sql As String = "UPDATE USUARIOS SET PASSWORD = @PASS WHERE USUARIO = @USER"
Dim conexion As New Data.SqlClient.SqlConnection(miStringConeccion)
Dim comando As New Data.SqlClient.SqlCommand(sql, conexion)
try
   conexion .Open()
   comando.Parameters.AddWithValue("USER", usuario)
   comando.Parameters.AddWithValue("PASS", password)
   comando.ExecuteNonQuery()
   conexion .Close()
Catch ex As Exception
   'ERROR
   Throw New Exception("Asi quedo la consulta y fue error: " & comando.CommandText & " ---> " & ex.Message().ToString)
   conexion.Close()
End Try


Recuerda establecer miStringConeccion.
Lo otro puede ser, que en tus variables usuario y/o password, estes pasando algun dato malo. SI te da error este codigo, postea la excepcion.

Yaldabaot

System.Exception was unhandled
  HResult=-2146233088
  Message=Asi quedo la consulta y fue error: UPDATE USUARIOS SET PASSWORD = 's' WHERE USUARIO = 'Admin' ---> Error de sintaxis en la instrucción UPDATE.
  Source=CUENTAS
  StackTrace:
       at CUENTAS.frmCambiar.CambiarPassword(String usuario, String password) in W:\Desarrollo\Cuentas\CUENTAS\CUENTAS\frmCambiar.vb:line 84
       at CUENTAS.frmCambiar.btnCambio_Click(Object sender, EventArgs e) in W:\Desarrollo\Cuentas\CUENTAS\CUENTAS\frmCambiar.vb:line 15
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.Run(ApplicationContext context)
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       at CUENTAS.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException:


Eso es lo que me tira :(
Nunca me contestan -_-

Ari Slash

Cual es tu estructura de tablas? Postea el codigo SQL.
Especifica que Motor de BD usas, y el nombre de tu esquema.

Yaldabaot

ID_USUARIO = Autonumérico(Entero Largo)
USUARIO= Texto(80)
PASSWORD = Texto(16)
TIPO = Texto(10)

Motor de datos = Access 2007, Provider=Microsoft.ACE.OLEDB.12.0, Jet OLEDB


No tiene relaciones, es algo extremedamente simple para que no funcione :(.

Con respecto a lo que le entra ya revisé con el depurador usando datos MUY SIMPLES tales como una "s" o s y 1234, es algo demasiado sencillo y no comprendo.
Nunca me contestan -_-

Yaldabaot

Código (vbnet) [Seleccionar]


cmd = New OleDb.OleDbCommand("UPDATE [USUARIOS] SET [PASSWORD] = '" & password & "'    WHERE [USUARIO] =  '" & usuario & "'", conn)



Ya pude, no se como carajos sirve, pero sirvió, sinceramente no le veo lógica, porque esto nunca lo había configurado ni tocado. Gracias por responderme y leerme!.


Nunca me contestan -_-