none
Como arreglar un error al modificar una tabla de access desde Visual Basic 2010

    คำถาม

  • Hola tengo un problema estoy ejecutando este codigo cuya finalidad es modificar un registro en access pero me sale error funcion UPDATE. les agradezco

        Private Sub modificar_registro()
            Dim oConn As New OleDbConnection
            Dim oComn As New OleDbCommand
            Dim oData As OleDbDataReader
            'Cadena de informaciòn para conectarse a la base de datos 
            oConn.ConnectionString = "provider = microsoft.ACE.oledb.12.0;data source = C:\\Users\Public\Documents\Olman\DATA\DATA.accdb;persist security info = False"
            Try
                'Abrir base de datos 
                oConn.Open()
                'Cadena de texto que tiene la sentencia SQL para consultar el usuario que se quiere loguear 
                oComn.CommandText = " UPDATE Clientes SET pais = '" + Tex_Pais.Text + "',ciudad='" + Tex_Ciudad.Text + "',nombre='" + Tex_Nombre.Text + "', direccion='" + Tex_Direccion.Text + "',telefono='" + Tex_Telefono.Text + "', contacto='" + Tex_Contacto.Text + "',area='" + Tex_Area.Text + "', correo='" + Tex_Correo.Text + "', where id='" + Tex_ID.Text + "'"


                'Asigna la conexion al comando de la consulta 
                oComn.Connection = oConn 'Ejecutar la consulta SQL 
                oData = oComn.ExecuteReader()
                MsgBox("Registro Modificado")
                'Cerramos a conexion a la base de datos 
                oConn.Close()
            Catch ex As Exception
                MsgBox("Ha ocurrido un error")
                MessageBox.Show(ex.Message)
            End Try
        End Sub

    1 เมษายน 2555 16:33

ตอบทั้งหมด

  • hola

    el error que tienes que que no usas parametros para armar la query

    tu codigo deberia ser

    Private Sub modificar_registro()
    	
    	Try
    		Dim connstring As String = "provider = microsoft.ACE.oledb.12.0;data source = C:\\Users\Public\Documents\Olman\DATA\DATA.accdb;persist security info = False"
    		Using  oConn As New OleDbConnection(connstring)
    
    			oConn.Open()
    			
    			Dim query As String = "UPDATE Clientes SET pais = @pais,ciudad= @ciudad, ... where id= @id"
    			Dim oComn As New OleDbCommand(query, oConn)
    			
    			oComn.Parameters.AddWithValue("@pais", Tex_Pais.Text)
    			oComn.Parameters.AddWithValue("@ciudad", Tex_Ciudad.Text)
    			.
    			.
    			oComn.Parameters.AddWithValue("@id", Tex_ID.Text)
    			
    			oComn.ExecuteNonQuery()
    			
    			MsgBox("Registro Modificado")
    			
    		End Using
    		
    	Catch ex As Exception
    		MsgBox("Ha ocurrido un error")
    		MessageBox.Show(ex.Message)
    	End Try
    	
    End Sub 

    -----------------

    Nota: recuerdas quitar esta coma

    Tex_Correo.Text + "', where id='" + Tex_ID.Text + "'"

    que esta justo delante del where

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    1 เมษายน 2555 22:51
  • A veces tengo sentimientos criminales hacia los instructores de programación con acceso a datos xD

    Nunca, pero realmente NUNCA se debe armar una consulta en SQL concatenando los valores. La forma correcta de construir una consulta en SQL es usar parámetros.

    http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL

    Leandro debería tener una medalla por la paciencia y consideración que tiene respondiendo una y otra vez lo mismo. Te admiro, colega; no sólo por lo MUCHÍSIMO que sabes sino por el don de gente que tienes.



    logo osoft
    Si he contestado tu pregunta, por favor marca mi post como respuesta.
    ...Y si mi post te ha servido, márcalo como útil smile

    10 เมษายน 2555 16:04