Posted by : Unknown lunes, 16 de septiembre de 2013

Base de Datos con Visual Basic 6.0 (Access)  [Método CRUD] [Parte 2]

Ir al tutorial [Parte 1] de Base de Datos con Visual Basic 6.0 (Access)  [Método CRUD], para entender la Parte 2


Doble click al Modulo que tiene por nombre Module1


Y agrega el siguiente código:

'Esta variable nos ayuda a conectarnos a la Base de Datos creado con Access
Global Base As New ADODB.Connection
'Esta variable nos ayuda a abrir la Tabla cons us respectivos campos
'Nos Facilitará Agregar, Modificar, Eliminar y Buscar los datos
Global Contacto As New ADODB.Recordset

'Ahora Conectamos
Sub main()
     With Base
         .CursorLocation = adUseClient
         .Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\BaseDeDatos.mdb;Persist Security Info=False"
     End With
End Sub
'Esta función nos ayuda a mostrar los campos de la Tabla Contacto en el DataGrid Creado
'En el formulario
Sub Contactos()
     'Contacto es la Variable "Global Contacto As New ADODB.Recordset"
     With Contacto
         If .State = 1 Then .Close
              .Open "SELECT * FROM Contacto", Base, adOpenStatic, adLockOptimistic
     End With
End Sub


Ya tenemos nuestro controlador listo, ahora vamos a nuestro formulario Form1


Ahora que abrimos nuestro formulario, darle doble click al Formulario


Antes de entrar en la parte de programación vamos a deshabilitar algunas opciones del DataGrid, darle click derecho al DataGrid1 y click izquierdo a la opción propiedades, y te saldrá la siguiente ventana:


Te saldra una ventana lo cual tendras que desactivar las siguientes opciones:

AllowAddNew
AllowDelete
AllowUpdate

Como se ve en la imagen


Darle click en Aplicar y luego click en Aceptar

Darle doble click al formulario, no darle doble click a los Labels, TextBox, CommandButton, DataGrid y el ADODC1, solamente darle doble click al formulario, si le das doble click al fomulario te saldrá el siguiente código
Private Sub Form_Load()

End Sub
Y dentro de la sintaxis copiar y pegar el siguiente código

'Estos son los procedimientos Sub creado en el Module1.bas
main
   Contactos
   'Esta sentencia es para mostrar los campos de la Tabla Contacto
   'En el DataGrid
   'Si no lo agregas no mostrará en el DataGrid los campos de la Tabla Contacto
   'De la Base de Datos Access "BaseDeDatos.mdb"
   Set DataGrid1.DataSource = Contacto

                            'Llamamos el procedimiento Sub HabilitarCajas()
                            HabilitarCajas True
                            
                            'En HabilitarBotones True es Habilitar y False es Deshabilitar
                            HabilitarBotones True, False
Debe quedarte así
Private Sub Form_Load()
'Estos son los procedimientos Sub creado en el Module1.bas
main
   Contactos
   'Esta sentencia es para mostrar los campos de la Tabla Contacto
   'En el DataGrid
   'Si no lo agregas no mostrará en el DataGrid los campos de la Tabla Contacto
   'De la Base de Datos Access "BaseDeDatos.mdb"
   Set DataGrid1.DataSource = Contacto
End Sub

Arriba de Private Sub Form_Load(), copia y pega el siguiente código
'Si le das click al boton Modificar
'Es True
Dim Modificar As Boolean
Dim CodigoDelContacto As Integer
Dim BuscarContacto As String


Abajo de End Sub de Private Sub Form_Load(), copia y pega los siguientes códigos:


Public Sub HabilitarCajas(Estado As Boolean)
    Text1.Locked = Estado
    Text2.Locked = Estado
    Text3.Locked = Estado
    Text4.Locked = Estado
    Text5.Locked = Estado
End Sub

Public Sub HabilitarBotones(Habilitado As Boolean, Deshabilitado As Boolean)
      'Boton "Nuevo"
      Command1.Enabled = Habilitado
      'Boton "Modificar"
      Command2.Enabled = Habilitado
      'Boton "Grabar"
      Command3.Enabled = Deshabilitado
      'Boton "Eliminar"
      Command4.Enabled = Habilitado
      'Boton "Cancelar"
      Command5.Enabled = Deshabilitado
      'Boton "Buscar"
      Command6.Enabled = Habilitado
   
End Sub

Sub Limpiar()
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
    Text4.Text = ""
    Text5.Text = ""
        Text1.SetFocus
End Sub


Ahora le das doble Click al botón "Nuevo", y copia el siguiente código:

 Private Sub Command1_Click()
'Habilitamos las Cajas con el procedimiento Sub HabilitarCajas() con False
    HabilitarCajas False
        'Limpiamos Cajas de Textos
        Limpiar
             'Usamos la variable global Modificar en False
             Modificar = False
                'En HabilitarBotones False es Habilitar y True es Deshabilitar
                HabilitarBotones False, True
End Sub

Ahora le das doble Click al botón "Modificar", y copia el siguiente código:

Private Sub Command2_Click()
'Habilitamos las Cajas con el procedimiento Sub HabilitarCajas() con False
    HabilitarCajas False
        'Limpiamos Cajas de Textos
             'Usamos la variable global Modi en False
             Modificar = True
                'En HabilitarBotones False es Habilitar y True es Deshabilitar
                HabilitarBotones False, True
End Sub
Ahora le das doble Click al botón "Grabar", y copia el siguiente código:

Private Sub Command3_Click()
'Validamos las cajas de textos
   If Text1.Text = "" Then MsgBox "No has ingresado el Nombre", vbInformation, "Aviso": Text1.SetFocus: Exit Sub
       If Text2.Text = "" Then MsgBox "No has ingresado el Apellido", vbInformation, "Aviso": Text2.SetFocus: Exit Sub
          If Text3.Text = "" Then MsgBox "No has ingresado el Telefono", vbInformation, "Aviso": Text3.SetFocus: Exit Sub
             If Text4.Text = "" Then MsgBox "No has ingresado el Correo Electrónico", vbInformation, "Aviso": Text4.SetFocus: Exit Sub
                If Text5.Text = "" Then MsgBox "No has ingresado la Fecha de Nacimiento", vbInformation, "Aviso": Text5.SetFocus: Exit Sub
                      'Si le diste click al boton "Nuevo" Hacer
                      If Modificar = False Then
                         With Contacto
                             .Requery
                                .AddNew
                                   !Nombre = Text1.Text
                                   !Apellido = Text2.Text
                                   !Telefono = Text3.Text
                                   !Email = Text4.Text
                                   !FechaDeNacimiento = Text5.Text
                                    .Update
                                     .Requery
                         End With
                         'Si le diste click al boton "Modificar" Hacer
                         Else
                            With Contacto
                                .Requery
                                   .Find "id='" & Val(CodigoDelContacto) & "'"
                                   'Si Existe el contacto elegido
                                   !Nombre = Text1.Text
                                   !Apellido = Text2.Text
                                   !Telefono = Text3.Text
                                   !Email = Text4.Text
                                   !FechaDeNacimiento = Text5.Text
                                    .UpdateBatch
                                     .Requery
                            End With
                      End If
                       Limpiar
                       'Habilito Cajas
                   HabilitarCajas True
                      'Habilito Botones
                          HabilitarBotones True, False
End Sub

Ahora le das doble Click al botón "Eliminar", y copia el siguiente código:

Private Sub Command4_Click()
If CodigoDelContacto = 0 Then
    MsgBox "Elija el Contacto", vbInformation, "AVISO"
    Exit Sub
Else
    With Contacto
       .Find "id='" & Trim(CodigoDelContacto) & "'"
           'Si no encontró el registro
           If .EOF Then
              MsgBox "No se encontró el contacto", vbInformation, "No se encontro"
              Exit Sub
                 Else
                   If MsgBox("¿Desea eliminar el contacto: " & DataGrid1.Columns(1) & "?", vbInformation + vbYesNo) = vbYes Then
                   .Delete
                     .Requery
                     'Esto evita si quiero eliminar un registro y lo vuelvo eliminar no me permitira a hacerlo
                        CodigoDelContacto = 0
                    End If
           End If
    End With
End If
End Sub

Ahora le das doble Click al botón "Cancelar", y copia el siguiente código:

Private Sub Command5_Click()
'En HabilitarBotones True es Habilitar y False es Deshabilitar
     HabilitarBotones True, False
     'Llamamos el procedimiento Sub HabilitarCajas()
                            Limpiar
                            HabilitarCajas True
End Sub

Ahora le das doble Click al botón "Buscar", y copia el siguiente código:

Private Sub Command6_Click()
BuscarContacto = InputBox("Ingrese el nombre del Contacto", "BUSCANDO CONTACTO", "Ingrese el nombre del Contacto")
   If BuscarContacto = "" Then
     MsgBox "No has ingresado el nombre del Contacto", vbInformation, "AVISO"
   
Else
'Si ingresaste el cliente
    With Contacto
        .Requery
           .Find "Nombre='" & Trim(BuscarContacto) & "'"
              If .EOF Then
                 MsgBox "No se encontro el Contacto: " & BuscarContacto, vbInformation, "AVISO"
                 .Requery
                 Exit Sub
              Else
                'Si se encontro el registro
                'Llenamos las cajas de texto
                'Campos
           
              Text1.Text = !Nombre
                  Text2.Text = !Apellido
                     Text3.Text = !Telefono
                        Text4.Text = !Email
                        Text5.Text = !FechaDeNacimiento
                         
           End If
    End With
End If
End Sub
Ahora le das doble Click al botón "Salir", y copia el siguiente código:

Private Sub Command7_Click()
If MsgBox("¿Desea salir?", vbInformation + vbYesNo, "Aviso") = vbYes Then
       Unload Me
   End If
End Sub


Ahora le das doble Click al DataGrid1, y copia y pega al siguiente código:

Private Sub DataGrid1_Click()
With Contacto
   If .BOF Or .EOF Then Exit Sub
   CodigoDelContacto = DataGrid1.Columns(0).Text
       Text1.Text = DataGrid1.Columns(1).Text
       Text2.Text = DataGrid1.Columns(2).Text
      Text3.Text = DataGrid1.Columns(3).Text
       Text4.Text = DataGrid1.Columns(4).Text
       Text5.Text = DataGrid1.Columns(5).Text
End With
End Sub

Este código sirve para elegir nuestro contacto dentro del DataGrid1, y poderlo modificar ó eliminar

Le damos click en el icono de Disquete para poder guardar todo lo copiado y le damos click en Iniciar, para compilar y probar.



Y el programa debe ya compilar y no darte ningún error, y guarda, modifica, elimina y busca todo tipo de datos que quieras, te mostraré algunos datos que agregué en el programa, lo cual se verá dentro del DataGrid1.


Cualquier duda, comentar en el Blog.


{ 23 comentarios ... read them below or Comment }

  1. Gracias por compartir..te cuento q hice todo al pie de la letra pero salta dos errores en modificar y cuando voy a elegir un contacto para eliminar es en el Datagrid me ayudas!!!podras responderme a mi correo es jjc8524@gmail.com estare muy agradecido saludos

    ResponderEliminar
  2. Solucionado me faltaba la llave primaria gracias amigo funciona a la perfeccion!!!!!

    ResponderEliminar
  3. A mi tambien me tira esos errores que nombra JUAN CARDOZO en el boton modificar :/ ...

    Ya probe cambiar la clave principal en la base de datos a todos los campos y nada.... Como lo solucionaron???

    tomasvallejos@outlook.com

    Saludos!!!

    ResponderEliminar
    Respuestas
    1. ¿Dejaste como Llave Principal el "id" en Access?

      Eliminar
    2. Hola Tomas, te respondí por MP y lo de la llave principal ya no haría falta jeje

      Eliminar
  4. hola, vos sabes que me tia un error cuando quiero grabar datos, cuando depura me resalta la linea .update . no se si tendra que ver el indice o codigo de registro.necesitaria que me des una manito con esto porque despues tengo que adaptar el codigo a tablas mias para un trabajo fina jejej , desde ya muchas gracias

    ResponderEliminar
    Respuestas
    1. ¿Tienes la tabla Contacto de la BaseDeDatos.mdb, con los campo de esta forma?

      id (Cómo llave primaria y auto incremento)
      Nombre (Tipo Texto)
      Apellido (Tipo Texto)
      Telefono (Tipo Texto)
      Email (Tipo Texto)
      FechaDeNacimiento (Tipo Texto)

      Eliminar
    2. O tendrás mal escrito algún campo de la Tabla Contacto de BaseDeDatos.mdb

      Eliminar
    3. corregi algunas mayusculas que habia puesto en minuscula, pero igual no hay caso...te lo podre mandar por mail y me lo miras?? si te hincha mucho las bolas no hay drama, no te quiero molestar...

      Eliminar
    4. Mandalo por werneriasearch@gmail.com

      Eliminar
  5. Hola Otoniel el ejercicio se ejecuta pero tiene algunos inconvenientes,la opcion modificar arroja un mensaje que dice elija el contacto,o aveces si lo modifica,si me posiciono en la columna del campo id en el data grift y selecciono algun contacto y le doy eliminar aveces lo borra o aveces lo deja, arroja un mj que dice el registro o contacto no se puede borrar,no se encuentra,se puede colocar un control que refresque los registros? y se puede colocar un control que cargue la ruta de una foto? y es normal que cada vez que se agregue un registro obviamente se aumenta en el campo id? pero igual cuando se borra deberia reiniciar desde el numero mas bajo sin embargo sigue la secuencia de conteo a pesar de que los registros se eliminan, gracias correo jcvztupara@gmail.com

    ResponderEliminar
    Respuestas
    1. Te respondo, tus dudas

      1) ¿la opción modificar arroja un mensaje que dice elija el contacto,o aveces si lo modifica,si me posiciono en la columna del campo id en el data grift y selecciono algun contacto y le doy eliminar aveces lo borra o aveces lo deja, arroja un mj que dice el registro o contacto no se puede borrar,no se encuentra,se puede colocar un control que refresque los registros?

      Respuesta: En realidad el ejercicio ejecuta lo que tu me preguntas, de colocar un control de actualizar, si se puede hacer ese comodín.

      2) ¿Se puede colocar un control que cargue la ruta de una foto?

      Respuesta: Si, si se puede hacer.

      3) ¿Es normal que cada vez que se agregue un registro obviamente se aumenta en el campo id?

      Respuesta: Si, si es normal, ¿porque es bueno tener un campo autoincrementable en la base de datos? La razón es la siguiente, es tener una referencia del dato agregado en la dicha Tabla, es como una cédula de identidad. Es para tener una idea de cuantos datos se han agregado a lo largo del tiempo. ¡Me explico :)!

      Eliminar
  6. Que hay hermano, fijate que me parece bn interesante tu aporte, y lo intente pero fijate que me tira error en la conexion de la base de datos, me podes apoyar con eso, no se si te puedo enviar el proyecto a algun correo para que me ayudes, gracias.....

    Donoban
    donoban_51010@hotmail.com

    ResponderEliminar
    Respuestas
    1. Claro, enviame el problema que tienes en este correo: werneriasearch@gmail.com

      Eliminar
  7. oye tengo un problema ya copie todo como decia ay y me da un error yo lo estoy tratando de hacer con una base de datos que ya tenia creada o si me podrias responder como agregar una base de datos ya echa que se puedea visualizar como tabla te lo agradeceria mucho mi correo es kisame_narusas@hotmail.com

    ResponderEliminar
  8. hola necesito ayuda yo utilize lo de tu programa pero a mi forma
    verdad solo le agrege otros campos pero utilice las misma formullas
    que tenes aqui pero al momento de darle en el boton de guardar me tira
    el error 3265 no se que hacer tengo todo bien necesito ayuda

    ResponderEliminar
    Respuestas
    1. Enviame tu progrma por este correo werneriasearch@gmail.com, para ver cual es la falla

      Eliminar
  9. una pregunta , como hago si quiero que ese mismo datagrid me aparezca en todos mis forms ,se puede hacer? osea estoy haciendo un ABM que en todos los forms necesito que este exactamente el mismo datagrid, se puede hacer?

    ResponderEliminar
  10. Hey man buena info, yo hice el ejemplo y me aparece un error dice que no se puede encontrar la base de datos y me da una direccion donde deberia estar, y en efecto ahi esta la base de datos exactamente con mayusculas y minusculas, aunqe la unica variacion que es me tiene que esta en formato .mdb y el access 2010 que tengo me crea el archivo en .accdb no se si tendra que ver o no se si tiene correo para enviarte el programa que me aparece a ver si copie algo mal...
    Y gracias por compatir este buen aporte.

    ResponderEliminar
  11. que tal amigo buen aporte estoy checando tu programa pero me sale error cuando posiciono el cursor en el datagrid para eliminar o modificar me sale el error 13 no coinciden los tipos espero me ayudes gracias mi email: roberto_g_s_21@hotmail.com

    ResponderEliminar
  12. Tengo un problema cuando quiero eliminar un registro,me manda el aviso de elegir un contacto, y cuando pongo el puntero en la Id y le doy al botón eliminar me vuelve a mandar el mismo aviso. Gracias por ayudarme

    Este es el código:
    If CodigoDelContacto = 0 Then
    MsgBox "Elija el Contacto", vbInformation, "AVISO"
    Exit Sub
    Else
    With Contacto
    .Find "Id='" & Trim(CodigoDelContacto) & "'"
    'Si no encontró el registro
    If .EOF Then
    MsgBox "No se encontró el contacto", vbInformation, "No se encontró"
    Exit Sub
    Else

    If MsgBox("¿Desea eliminar el contacto:" & DataGrid1.Columns(1) & "?", vbInformation + vbYesNo) = vbYes Then
    .Delete
    .Requery
    'Esto evita si quiero eliminar un registro y lo vuelvo a eliminar no me permitira hacerlo
    CodigoDelContacto = 0

    End If

    End If
    End With
    End If
    End Sub

    ResponderEliminar

Werneriabits - La era de la información

Busqueda

Flakreath Chat

El Magistrado. Con la tecnología de Blogger.

Síguenos en Facebook

Suscribite vía Email:

Introduce tu Email:

- Copyright © WerneriaBits - La era de la información - werneriabits.com -