Evitar duplicados en acces desde VB6.0

Velasquez_danys Mensajes enviados 1 Fecha de inscripción jueves, 14 de septiembre de 2023 Estatus Miembro Última intervención jueves, 14 de septiembre de 2023 - 14 sep 2023 a las 22:05
EduElMejor Mensajes enviados 10 Fecha de inscripción domingo, 28 de abril de 2024 Estatus Miembro Última intervención domingo, 28 de abril de 2024 - 28 abr 2024 a las 11:02

Hola amigos.

Acudo a ustedes para que me asesoren con este pequeño problema para ustedes.

Tengo una base de datos en acces con el nombre "Escuela.mdb" y una tabla con el nombre "DatosyNotas", también tengo una conexión DataGrid con el nombre DataGrid1.

En un formulario de Visual Basic 6.0 tengo un Text con el nombre Cedula y cuando introduzco un número de Cedula que ya esta registrado, me muestra este mensaje: Error "424" en tiempo de ejecución: se requiere un objeto y me subraya en color amarillo este código:

.RecordSource = "Select * from DatosyNotas where Cedula=" & TxtCedula.Text

Este es mi código:

Private Sub CmdGuardar_Click()
Dim Cedula As String
Cedula = TxtCedula.Text
With ControlData
      .RecordSource = "Select * from DatosyNotas where Cedula=" & TxtCedula.Text
      .Refresh
      If .Recordset.EOF = True Then
            MsgBox "Ese dato ya fue ingresado"
      Else
             .Recordset.AddNew
             .Recordset("Cedula") = Cedula
             .Recordset.Update
      End If
End With
End Sub

Lo que quiero es que no se repitan los números de Cedula

Muchas gracias amigos.

1 respuesta

EduElMejor Mensajes enviados 10 Fecha de inscripción domingo, 28 de abril de 2024 Estatus Miembro Última intervención domingo, 28 de abril de 2024
28 abr 2024 a las 11:02

El error "424" en tiempo de ejecución indica que hay un problema con el objeto que estás intentando utilizar. En tu código, parece que estás intentando acceder al objeto `ControlData` para establecer su propiedad `RecordSource`, pero este objeto no está definido en el código proporcionado.

Además, para evitar que se ingresen números de cédula duplicados, necesitas verificar si ya existe un registro en la base de datos con la misma cédula antes de agregar un nuevo registro.

Aquí te muestro cómo podrías modificar tu código para resolver estos problemas:

```vb
Private Sub CmdGuardar_Click()
    Dim Cedula As String
    Cedula = TxtCedula.Text
    
    Dim rs As Object
    Set rs = CreateObject("ADODB.Recordset")
    
    ' Establecer la conexión con la base de datos
    Dim cn As Object
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Ruta\De\Tu\BaseDeDatos\Escuela.mdb"
    
    ' Consultar si ya existe un registro con la misma cédula
    rs.Open "SELECT * FROM DatosyNotas WHERE Cedula='" & Cedula & "'", cn, 2, 2
    If Not rs.EOF Then
        MsgBox "Esa cédula ya fue ingresada", vbExclamation
    Else
        ' Agregar el nuevo registro
        rs.AddNew
        rs("Cedula") = Cedula
        rs.Update
        MsgBox "Registro agregado exitosamente", vbInformation
    End If
    
    ' Cerrar la conexión y liberar recursos
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub
```

Este código primero establece una conexión con la base de datos utilizando ADO (ActiveX Data Objects). Luego, ejecuta una consulta para verificar si ya existe un registro con la cédula ingresada. Si ya existe, muestra un mensaje de advertencia. Si no existe, agrega un nuevo registro con la cédula ingresada y muestra un mensaje de éxito. Asegúrate de reemplazar `"C:\Ruta\De\Tu\BaseDeDatos\Escuela.mdb"` con la ruta correcta de tu base de datos Access.

0