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.
Información relacionada
- Ir a inicio »
- Visual Basic 6.0 »
- Base de Datos con Visual Basic 6.0 (Access) [Método CRUD] [Parte 2]
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
ResponderEliminarSolucionado me faltaba la llave primaria gracias amigo funciona a la perfeccion!!!!!
ResponderEliminarA mi tambien me tira esos errores que nombra JUAN CARDOZO en el boton modificar :/ ...
ResponderEliminarYa probe cambiar la clave principal en la base de datos a todos los campos y nada.... Como lo solucionaron???
tomasvallejos@outlook.com
Saludos!!!
¿Dejaste como Llave Principal el "id" en Access?
EliminarHola Tomas, te respondí por MP y lo de la llave principal ya no haría falta jeje
Eliminarhola, 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¿Tienes la tabla Contacto de la BaseDeDatos.mdb, con los campo de esta forma?
Eliminarid (Cómo llave primaria y auto incremento)
Nombre (Tipo Texto)
Apellido (Tipo Texto)
Telefono (Tipo Texto)
Email (Tipo Texto)
FechaDeNacimiento (Tipo Texto)
O tendrás mal escrito algún campo de la Tabla Contacto de BaseDeDatos.mdb
Eliminarcorregi 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...
EliminarMandalo por werneriasearch@gmail.com
EliminarHola 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
ResponderEliminarTe respondo, tus dudas
Eliminar1) ¿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 :)!
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.....
ResponderEliminarDonoban
donoban_51010@hotmail.com
Claro, enviame el problema que tienes en este correo: werneriasearch@gmail.com
Eliminaroye 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
ResponderEliminarClaro enviame un correo en werneriasearch
Eliminarhola necesito ayuda yo utilize lo de tu programa pero a mi forma
ResponderEliminarverdad 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
Enviame tu progrma por este correo werneriasearch@gmail.com, para ver cual es la falla
Eliminargracias ahorita lo envio
Eliminaruna 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?
ResponderEliminarHey 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...
ResponderEliminarY gracias por compatir este buen aporte.
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
ResponderEliminarTengo 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
ResponderEliminarEste 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