Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Actualización fallida con ADO...ayuda, porfavor

Estas en el tema de Actualización fallida con ADO...ayuda, porfavor en el foro de Visual Basic clásico en Foros del Web. Hola, tengo el siguiente código, y no sé porqué si es el mismo, al crear un nuevo registro funciona pefectamente pero si lo edito no, ...
  #1 (permalink)  
Antiguo 03/02/2008, 19:03
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años
Puntos: 1
Actualización fallida con ADO...ayuda, porfavor

Hola, tengo el siguiente código, y no sé porqué si es el mismo, al crear un nuevo registro funciona pefectamente pero si lo edito no, me dice: El valor de BOF o EOF es True, o el registro actual se eliminó; la operación solicitada requiere un registro actual

El código es el siguiente:

Código:
Private Sub btnAceptar_Click()

If TipoOpcion = 0 Then 'Nuevo Registro
        On Error GoTo errorcreacion
        Cargar ("select * from productos where cod_art ='" & Trim(txtCod.Text) & "'")
        If rsRegistro.EOF = True Then
            rsRegistro.AddNew
            'txtCod.Enabled = True
            rsRegistro!cod_art = txtCod.Text
            rsRegistro!Nombre = txtNom.Text & ""
            rsRegistro!descripcion = txtDescri.Text & ""
            rsRegistro!pco = txtpco.Text & ""
            rsRegistro!pvp = txtpvp.Text & ""
            rsRegistro!stock = txtStock.Text & ""
            If chkDescatalogado.Value = 1 Then
                rsRegistro!descatalogado = "SI"
            Else
                rsRegistro!descatalogado = "NO"
            End If
            rsRegistro!f_alta = dtpF_Alta.Value
            rsRegistro!hoja = txtHoja.Text & ""
            rsRegistro!tmpPlan = txtPlan.Text & ""
            rsRegistro!tmpFlor = txtFlor.Text & ""
            'rsRegistro!imgFoto =
            rsRegistro!cod_rie = txtRie.Text & ""
            rsRegistro!cod_man = txtMan.Text & ""
            rsRegistro!cod_prov = txtProv.Text & ""
            
            rsRegistro.Update
        
        Else
            Exit Sub
        End If
Else
        If TipoOpcion = 1 Then 'Modificación de Registro
            On Error GoTo errormodificacion
            Cargar ("select * from Productos where cod_art ='" & Trim(txtCod.Text) & "'")
            rsRegistro.Find ("select * from Productos where cod_art ='" & Trim(txtCod.Text) & "'")
            rsRegistro!cod_art = txtCod.Text
            rsRegistro!Nombre = txtNom.Text & ""
            rsRegistro!descripcion = txtDescri.Text & ""
            rsRegistro!pco = txtpco.Text & ""
            rsRegistro!pvp = txtpvp.Text & ""
            rsRegistro!stock = txtStock.Text & ""
            If chkDescatalogado.Value = 1 Then
                rsRegistro!descatalogado = "SI"
            Else
                rsRegistro!descatalogado = "NO"
            End If
            rsRegistro!f_alta = dtpF_Alta.Value
            rsRegistro!hoja = txtHoja.Text & ""
            rsRegistro!tmpPlan = txtPlan.Text & ""
            rsRegistro!tmpFlor = txtFlor.Text & ""
            'rsRegistro!imgFoto =
            rsRegistro!cod_rie = txtRie.Text & ""
            rsRegistro!cod_man = txtMan.Text & ""
            rsRegistro!cod_prov = txtProv.Text & ""

            rsRegistro.Update
            
        Else 'Eliminación de Registro
            If MsgBox("¿Esta seguro de borrar el producto?", vbApplicationModal + vbYesNo + vbDefaultButton2 + vbExclamation, "Borrar registro") = vbYes Then
                On Error GoTo erroreliminacion
                Cargar ("select * from Productos where cod_art ='" & Trim(txtCod.Text) & "'")
                rsRegistro.Delete
                rsRegistro.Update
            End If
       End If
       frmProductosLista.adoAux.Refresh
       frmProductosLista.dtgAux.Refresh
End If
    rsRegistro.Close
    rsRegistro.Open
    Unload Me
    Exit Sub
errorcreacion:
    'If Err.Number = -2147467259 Then
        'MsgBox "El NIF/CIF introducido ya existe!", vbExclamation, "El NIF/CIF ya existe"
        'txtNIF.SetFocus
        'Exit Sub
    'Else
        MsgBox Err.Number, vbCritical, "Error"
        Exit Sub
    'End If
errormodificacion:
    MsgBox Err.Description, vbCritical, "Error"
    Exit Sub
erroreliminacion:
    MsgBox Err.Description, vbCritical, "Error"
    Exit Sub
End Sub
SI me podeis ayudar os lo agradezco muchísimo. Un Saludo!
PD:este código lo tengo en otros formularios tal cual y no me da ningún error.
__________________
Técnico Superior en Desarrollo de Apliciones Informáticas
  #2 (permalink)  
Antiguo 03/02/2008, 20:25
Avatar de mexhost  
Fecha de Ingreso: febrero-2008
Mensajes: 47
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Actualización fallida con ADO...ayuda, porfavor

copy paste, muy comun, y trae errores por cambiar solo variables, te aconsejo que lo rutees desde 0 si no te da error solo es error de variables.
  #3 (permalink)  
Antiguo 04/02/2008, 05:49
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años
Puntos: 1
Re: Actualización fallida con ADO...ayuda, porfavor

como va a ser de variables si no hay ninguna diferente entre Nuevo y Modificación???
Es el mismo código, sólo que sin el AddNew.
Y lo de NUEVO funciona perfectamente al igual que BORRAR. Solo casca en Modificación y con ese error que puse arriba.
__________________
Técnico Superior en Desarrollo de Apliciones Informáticas
  #4 (permalink)  
Antiguo 04/02/2008, 08:31
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Actualización fallida con ADO...ayuda, porfavor

Efectivamente, no es problema de variables, pero el código no es el mismo (sin el AddNew) ya que le estás colocando una nueva instrucción (innecesaria, ya estás abriendo el recordset con los mismos datos) que el método Find del recorsert, que por cierto, tampoco es correcta pues al método Find no le puedes asignar una consulta sql.

Prueba eliminando esa instrucción (la de Find) y comprobando que el recordset trae registros y después nos cuentas como fué.

Última edición por Avellaneda; 04/02/2008 a las 11:03
  #5 (permalink)  
Antiguo 04/02/2008, 09:53
Avatar de mexhost  
Fecha de Ingreso: febrero-2008
Mensajes: 47
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Actualización fallida con ADO...ayuda, porfavor

Cita:
Iniciado por Avellaneda Ver Mensaje
Efectivamente, no es problema de variables, pero el código no es el mismo (sin el AddNew) ya que le estás colocando una nueva instrucción (innecesaria, ya estás abriendo el recordset con los mismos datos) que es el método Find al recorsert, que por cierto, tampoco es correcta pues al método Find no le puedes asignar una consulta sql.

Prueba eliminando esa instrucción (la de Find) y comprobando que el recordset trae registros y después nos cuentas como fué.
estas diciendo que la busqueda quedo con registros anteriores y por eso le esta dando error, raro nunca e tenido algun error de ese estilo.
  #6 (permalink)  
Antiguo 04/02/2008, 11:02
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Re: Actualización fallida con ADO...ayuda, porfavor

No!
o no me expliqué bien o no lo entendeiste.

Estoy diciendo que primero crea una consulta Select que devuelve (o no) unos datos y a continuación usa el método Find para hacer lo mismo.
  #7 (permalink)  
Antiguo 04/02/2008, 12:42
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años
Puntos: 1
Re: Actualización fallida con ADO...ayuda, porfavor

lo del find está puesto en el post por error, ya que lo puse despues para ver si me solucionaba el problema.

El error lo he encontrado. No estaba en ese código, sinó en un procedimento del propio formulario en donde me crea el Codigo y que se ejecutaba también en el modo editar. Le puse in IF para que solo se ejecute cuando la opcion es NUEVO y listo, todo solucionado.

Gracias por todo.

PD: ese código de arriba esta bien, solo hay que quitarle en FIND que está puesto ahí de prueba.
__________________
Técnico Superior en Desarrollo de Apliciones Informáticas
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 22:04.