none
Problema al utilizar un programa que ya funcionaba RRS feed

  • Pregunta

  • Buenas

    Tengo el siguiente problema:

    Enlacé una base de datos en access 2010 con visual studio 2008. Ya hice que, atraves de códigos, buscara, creara, modificara y eliminara registros.

    En access tengo las columnas: Numero de mantenimiento, Código, Equipo, Componente, subcomponente, descripción, fecha, duración y nota. Todas son tipo texto menos "Numero de mantenimiento"que es autonumerica.

    Instalé el programa en mi computadora y me servia perfectamente. Lo deje de utilizar una semana y hoy cuando tengo que volver a registrar un mantenimiento me sale el siguiente problema:

    LA OPERACION DEBE USAR UNA CONSULTA ACTUALIZABLE

    Como hago para que vuelva a funcionar?

    Espero puedan ayudarme.

    Muchas gracias

    lunes, 9 de julio de 2012 20:37

Respuestas

  • Hola Luis Aran Lo que te aconsejo es que no concatenes el objeto eso esta mal en cuanto el insert into deberia de ser algo a si :

    INSERT INTO table_name (column1, column2, column3,...)
    VALUES (value1, value2, value3,...) 

    y especificandolo a tu problema te voy a dejar un codigo fuente espero y te ayude a resolver el problema 

        Private Sub insert_into()
            Using con_insert As New OleDbConnection(tu_ruta_conexion)
                Dim comando As New OleDbCommand
                With comando
                    .Connection = con_insert
                    .CommandType = CommandType.Text
                    .CommandText = "INSERT INTO FALLAS (codigo,equipo,Componente,Subcomponente,Descripción,Causa,Inicio,Culminación,Duración,Costo,Nota,falla)" & "VALUES" & "(@cod,@equipo,@compone,@sub,@des,@Causa,@Consecuencia,@Inicio,@Culminación,@dura,@Costo,@Nota,@Falla)"
                    .Parameters.AddWithValue("@cod", cbf2.Text)
                    .Parameters.AddWithValue("@equipo", cbf3.Text)
                    .Parameters.AddWithValue("@compone", tbf1.Text)
                    .Parameters.AddWithValue("@sub", tbf2.Text)
                    .Parameters.AddWithValue("@des"tbf3.Text)
                    .Parameters.AddWithValue("@Causa", tbf4.Text)
                    .Parameters.AddWithValue("@Consecuencia", tbf5.Text)
                    .Parameters.AddWithValue("@Inicio", dtpf1.Text) 'si a dtpf1  te refieres a un datetimepicker yo aconsejaria insertar el value osea dtpfi1.value
                    .Parameters.AddWithValue("@Culminación"dtpf2.Text)
                    .Parameters.AddWithValue("@dura", tbf6.Text)
                    .Parameters.AddWithValue("@Costo"tbf7.Text)
                    .Parameters.AddWithValue("@Nota", tbf8.Text)
                    .Parameters.AddWithValue("@Falla", cbf1.Text)
                End With
                Try
                    con_insert.Open()
                    comando.ExecuteNonQuery() 'debes de controlar las exepciones 
                    con_insert.Close()
                    MsgBox("Registro agregado", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "Información")
                Catch ex As OleDb.OleDbException
                    MsgBox(ex.Message, MsgBoxStyle.Exclamation)
                End Try
            End Using
        End Sub

    En cuanto los campos me base en tu update espero y te sea de ayuda y como te mencionaba antes es recomendable usar parametros y con el update se hace lo mismo  

    te recomiendo este link es muy bueno  a qui hay un e jemplo de como hacer un update con paramtros  http://www.elguille.info/net/adonet/sql_instrucciones_update.aspx 

    espero y te ayude saludos






    lunes, 9 de julio de 2012 22:29

Todas las respuestas

  • ese mensaje se produce porque seguramente estes usando tableadapter o has creado un datadapter que realiza un update que no afecta ningun registro

    valida si esto se produce cuando actualizas los datos ?

    valida el dato que pasas para indicar que registro actualizar porque este no esta pudiendo impactar en ningun registro


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 9 de julio de 2012 20:46
  • Buenas Leandro

    Gracias por u respuesta.

    Como bien me dijiste, tambien me sucede al intentar modificar/actualizar un registro.

    Este es mi codigo y el error sale en la linea que esta en negritas.

    Anteriormente me has recomendado utilizar parametros pero de verdad no he sabido hacerlo correctamente.

        Sub Nuevo()
            Dim CMD As New OleDb.OleDbCommand("INSERT INTO FALLAS VALUES(" & cbf1.Text & ",'" & cbf2.Text & "','" & cbf3.Text & "','" & tbf1.Text & "','" & tbf2.Text & "','" & tbf3.Text & "','" & tbf4.Text & "','" & tbf5.Text & "','" & dtpf1.Text & "','" & dtpf2.Text & "','" & tbf6.Text & "','" & tbf7.Text & "','" & tbf8.Text & "')", CN)
            CN.Open()
            CMD.ExecuteNonQuery()
            CN.Close()
            Mostrar()
            MsgBox("Registro agregado", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "Información")
        End Sub
       

        Sub Modificar()
            Dim CMD As New OleDb.OleDbCommand("UPDATE FALLAS SET [Código]='" & cbf2.Text & "',[Equipo]='" & cbf3.Text & "',[Componente]='" & tbf1.Text & "',[Subcomponente]='" & tbf2.Text & "',[Descripción]='" & tbf3.Text & "',[Causa]='" & tbf4.Text & "',[Consecuencia]='" & tbf5.Text & "',[Inicio]='" & dtpf1.Text & "',[Culminación]='" & dtpf2.Text & "',[Duración]='" & tbf6.Text & "',[Costo]='" & tbf7.Text & "',[Nota]='" & tbf8.Text & "' WHERE [Falla]=" & cbf1.Text & "", CN)
            CN.Open()
            CMD.ExecuteNonQuery()
            CN.Close()
            Mostrar()
            MsgBox("Registro modificado", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "Información")
        End Sub

    Y no entendi bien la ultima linea de lo que me dijiste

    lunes, 9 de julio de 2012 20:59
  • Hola Luis Aran Lo que te aconsejo es que no concatenes el objeto eso esta mal en cuanto el insert into deberia de ser algo a si :

    INSERT INTO table_name (column1, column2, column3,...)
    VALUES (value1, value2, value3,...) 

    y especificandolo a tu problema te voy a dejar un codigo fuente espero y te ayude a resolver el problema 

        Private Sub insert_into()
            Using con_insert As New OleDbConnection(tu_ruta_conexion)
                Dim comando As New OleDbCommand
                With comando
                    .Connection = con_insert
                    .CommandType = CommandType.Text
                    .CommandText = "INSERT INTO FALLAS (codigo,equipo,Componente,Subcomponente,Descripción,Causa,Inicio,Culminación,Duración,Costo,Nota,falla)" & "VALUES" & "(@cod,@equipo,@compone,@sub,@des,@Causa,@Consecuencia,@Inicio,@Culminación,@dura,@Costo,@Nota,@Falla)"
                    .Parameters.AddWithValue("@cod", cbf2.Text)
                    .Parameters.AddWithValue("@equipo", cbf3.Text)
                    .Parameters.AddWithValue("@compone", tbf1.Text)
                    .Parameters.AddWithValue("@sub", tbf2.Text)
                    .Parameters.AddWithValue("@des"tbf3.Text)
                    .Parameters.AddWithValue("@Causa", tbf4.Text)
                    .Parameters.AddWithValue("@Consecuencia", tbf5.Text)
                    .Parameters.AddWithValue("@Inicio", dtpf1.Text) 'si a dtpf1  te refieres a un datetimepicker yo aconsejaria insertar el value osea dtpfi1.value
                    .Parameters.AddWithValue("@Culminación"dtpf2.Text)
                    .Parameters.AddWithValue("@dura", tbf6.Text)
                    .Parameters.AddWithValue("@Costo"tbf7.Text)
                    .Parameters.AddWithValue("@Nota", tbf8.Text)
                    .Parameters.AddWithValue("@Falla", cbf1.Text)
                End With
                Try
                    con_insert.Open()
                    comando.ExecuteNonQuery() 'debes de controlar las exepciones 
                    con_insert.Close()
                    MsgBox("Registro agregado", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "Información")
                Catch ex As OleDb.OleDbException
                    MsgBox(ex.Message, MsgBoxStyle.Exclamation)
                End Try
            End Using
        End Sub

    En cuanto los campos me base en tu update espero y te sea de ayuda y como te mencionaba antes es recomendable usar parametros y con el update se hace lo mismo  

    te recomiendo este link es muy bueno  a qui hay un e jemplo de como hacer un update con paramtros  http://www.elguille.info/net/adonet/sql_instrucciones_update.aspx 

    espero y te ayude saludos






    lunes, 9 de julio de 2012 22:29
  • a donde apuntaba es que valides que valor asignas aqui

    WHERE [Falla]=" & cbf1.Text & "

    proque segun el mesnaje el valor alli proporcionado no corresponde a ningun registro en la tabla

    Nota: usa parametros como lo ejemplifica Oscar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 9 de julio de 2012 23:05