PROGRAMA DE CONTROL
DE BASE DE DATOS A PARTIR DE UNA CONEXIÓN Y UN RECORDSET
Creamos un formulario a partir de un control conexión y un control recordset
Proyecto comprimido con winrar: descargar
El código comentado del programa és el siguiente:
Dim conexion 'DECLARO CONEXIÓN PERO NO LE DOY NINGÚN
TIPO
Dim RS '
DECLARO RS (RECORDSET) PERO NO LE DOY NINGÚN TIPO
Dim consulta As String
'DECLARO
Dim conectado As Boolean 'DECLARO
Dim insertar As Boolean 'DECLARO UNA VARIABLE INSERTAR
PARA DISTINGUIRLA DE ACTUALIZAR EN EL BOTÓN ACEPTAR
Dim i, contreg, regact,
'FUNCIÓN INICIAL DEL PROGRAMA
Private Sub Form_Load()
'INICIALIZO LAS VARIABLES
conectado = False
insertar = False
'INICIALIZO LOS CONTROLES
Command1.Visible = True
Command2.Visible = False
'LLAMO A
nodatos
End Sub
'BOTONES DE CONEXIÓN A
Private Sub Command1_Click()
'**** BOTON DE CONEXION A
'CONTROLO LOS BOTONES
Command2.Visible = True
Command1.Visible = False
'CREAMOS
Set conexion =
CreateObject("ADODB.connection")
conexion.Open ("DRIVER={Microsoft
Access Driver (*.mdb)}; DBQ= " & App.Path &
"\prueba.mdb")
Label1.Caption = "CONECTADO"
Label1.BackColor = vbGreen
conectado = True
End Sub
Private Sub Command2_Click()
'**********BOTÓN DE DESCONEXION A
Command1.Visible = True
Command2.Visible = False
conexion.Close
Label1.Caption = "DESCONECTADO"
Label1.BackColor = vbRed
conectado = False
'LIMPIO LOS CUADROS DE TEXTO PARA PODER INTRODUCIR
NUEVOS DATOS
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
End Sub
'BOTÓN DE SELECCIÓN DE DATOS DE
Private Sub Command3_Click()
'**********BOTÓN DE CONSULTA DE SELECCIÓN
'SI ESTAMOS CONECTADOS A
If conectado Then
'GENERAMOS
consulta = "SELECT * FROM PERSONAS"
'EJECUTAMOS
Set RS =
conexion.EXECUTE(consulta)
'CONTAMOS EL NUMERO DE REGISTROS QUE TIENE
contarregistros
'VAMOS AL PRIMERO
RS.movefirst
'ESTABLECEMOS COMO REGISTRO ACTUAL EL 1
regact = 1
'VISUALIZAMOS EL REGISTRO ACTUAL
verregistro
Else
'SI NO ESTAMOS CONECTADOS, AVISAMOS PARA CONECTAR A
MsgBox "POR FAVOR CONÉCTESE PRIMERO A
End If
End Sub
'FUNCION CONTAR REGISTROS
Private Sub contarregistros()
'**********FUNCIÓN CONTADOR DE REGISTROS
'INICIALIZO EL CONTADOR DE REGISTROS
contreg = 0
regact = 1
'RECORRO UN NÚMRO GRANDE DE REGISTROS (POR EJEMPLO
1000)
For i = 1 To 1000
regact = i - 1
Label2.Caption = contreg &
" - " & regact
'SI LLEGAMOS AL FINAL DE FICHERO ENTONCES SALIMOS DE
If RS.EOF Then Exit Sub
RS.movenext
contreg = contreg + 1
Next
End Sub
'FUNCION VER REGISTRO EN
Private Sub verregistro()
'**********FUNCIÓN PARA VISUALIZAR UN REGISTRO
DETERMINADO
If RS.EOF Then RS.movefirst:
regact = 1
'VISUALIZAMOS EN LOS CUADROS DE TEXTO LOS VALORES DE
LOS CAMPOS CORRESPONDIENTES
Text1.Text = RS(0) ' CAMPO ID
Text2.Text = RS(1)
' CAMPO NOMBRE
Text3.Text = RS(2)
' CAMPO APELLIDO1
Text4.Text = RS(3)
' CAMPO APELLIDO2
Text5.Text = RS(4) 'CAMPO EDAD
Label2.Caption = contreg &
"/" & regact
End Sub
'BOTONES ACEPTAR Y CANCELAR
Private Sub Command11_Click()
'BOTÓN ACEPTAR
If conectado Then
If insertar Then
'INSERTAMOS LOS DATOS
consulta = "INSERT INTO PERSONAS
(NOMBRE,APELLIDO1,APELLIDO2,EDAD) VALUES(" _
& "'" &
Text2.Text & "'" & "," _
& "'" &
Text3.Text & "'" & "," _
& "'" &
Text4.Text & "'" & "," _
& CInt(Text5.Text) &
")"
contreg = contreg + 1
Else
'BOTÓN CANCELAR
consulta = "UPDATE
PERSONAS SET NOMBRE=" & "'" & Text2.Text &
"'" & "," _
& " APELLIDO1=" & "'"
& Text3.Text & "'" & "," _
& " APELLIDO2=" & "'"
& Text4.Text & "'" & "," _
& " EDAD=" &
CInt(Text5.Text) & " WHERE ID=" & ID
End If
'EJECUTAMOS
Set RS =
conexion.EXECUTE(consulta)
Command1_Click ' LLAMO A
Command3_Click ' LLAMO A
Command10_Click 'VAMOS AL ÚLTIMO REGISTRO
nodatos
Else
MsgBox "POR FAVOR CONÉCTESE PRIMERO A
End If
End Sub
Private Sub Command12_Click()
'BOTÓN CANCELAR
Command8_Click
nodatos
End Sub
Private Sub Command4_Click()
'BOTÓN INSERTAR REGISTRO
insertar = True
sidatos
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End Sub
Private Sub Command5_Click()
'BOTÓN EDITAR REGISTRO
ID = RS(0)
insertar = False
sidatos
End Sub
Private Sub Command6_Click()
If conectado Then
'BORRRAR UN REGISTRO
If MsgBox("¿Seguro que quiere borrar el
registro?", vbOKCancel, "Borrar registro") = vbOK Then
ID = RS(0)
consulta = "DELETE * FROM
PERSONAS WHERE ID=" & ID
Set RS =
conexion.EXECUTE(consulta)
Set RS =
conexion.EXECUTE(consulta)
contreg = contreg + 1
Command1_Click ' LLAMO A
Command3_Click ' LLAMO A
Command10_Click 'VAMOS AL ÚLTIMO REGISTRO
nodatos
End If
Else
MsgBox "POR FAVOR CONÉCTESE PRIMERO A
End If
End Sub
Private Sub Command7_Click()
'**********CONEXIÓN DE NAVEGACIÓN I CONEXIÓN AL PRIMER
REGISTRO DE
'**********DE DATOS
If conectado Then
regact = 1
RS.movefirst
verregistro
Else
MsgBox "POR FAVOR CONÉCTESE PRIMERO A
End If
End Sub
Private Sub Command10_Click()
' **********BOTÓN DE NAVEGACIÓN AL ÚLTIMO REGISTRO
If conectado Then
'RS.movelast NO SE ADMITE
For i = 1 To contreg - regact:
RS.movenext: Next
regact = contreg
verregistro
Else
MsgBox "POR FAVOR CONÉCTESE PRIMERO A
End If
End Sub
Private Sub Command8_Click()
'**********BOTÓN PARA IR AL REGISTRO ANTERIOR DE
If conectado Then
regact = regact - 1
If regact < 1 Then regact =
contreg
For i = 1 To (contreg - 1)
RS.movenext
If RS.EOF Then RS.movefirst
Next
verregistro
Else
MsgBox "POR FAVOR CONÉCTESE PRIMERO A
End If
End Sub
Private Sub Command9_Click()
'**********BOTÓN DE NAVEGACIÓN PARA IR AL REGISTRO
SIGUIENTE
If conectado Then
RS.movenext
regact = regact + 1
verregistro
Else
MsgBox "POR FAVOR CONÉCTESE PRIMERO A
End If
End Sub
'FUNCIONES SIDATOS Y NODATOS PARA BLOQUEAR O NO EL
FORMULARIO
Private Sub nodatos()
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
Text5.Enabled = False
Command11.Visible = False
Command12.Visible = False
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Command10.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
End Sub
Private Sub sidatos()
Text1.Enabled = True
Text2.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
Text5.Enabled = True
Command11.Visible = True
Command12.Visible = True
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
End Sub