Professional Documents
Culture Documents
CUNIVEMSA
El entorno de acceso a base de datos de datos ADO se puede manipular de dos formas, una mediante código
puro y empleando el control ADO. Para efectos de la siguiente guía se hará total énfasis en el manejo mediante
código, debido a su gran versatilidad y la integración con objetos command.
2. Agregue al explorador de proyectos un módulo para crear los procedimientos y variables globales.
- Clic derecho sobre el explorador de proyectos
- Dentro de la opción Agregar de clic en Módulo
Un módulo permite colocar código que puede ser ejecutado desde cualquier formulario, siempre y cuando
se establezca la declaración de variables procedimientos u objetos como Global o Public.
Global Rs As ADODB.Recordset
Las Variables Recordset permiten establecer las consultas que extraerán los registros de las tabas de la
base de datos
La cadena de conexión variará de acuerdo a la versión y tipo de base de datos a la que se este
conectando
- Creación de un procedimiento que permite realizar consultas a la base de datos
Una de las ventajas de emplear procedimientos globales en un módulo, es que nos permite llamarlo para su
ejecución desde cualquier parte del proyecto, agilizando el proceso de codificación.
NOTA: Tenga en cuenta que todo el código tratado hasta aquí, debe ir en el módulo.
5. Abra el formulario del Proyecto de doble clic en el y active el evento Form_Load, para llamar los
procedimientos creados en el módulo de la siguiente manera:
En este momento Inicie la ejecución (F5) para verificar que no hay errores de conexión ni de consultas.
NOTA: No espere a que salga algún dato en el formulario, puesto que el objetivo es verificar que las conexiones
y consultas estén bien.
• Si emplea el App.Path, el archivo de la base de datos debe estar ubicado en la carpeta del proyecto
actual, o en alguna subcarpeta pero siempre y cuando este dentro de esa carpeta indicada.
• Tenga pendiente cual es el formato actual de la base de datos, debido a que la cadena de conexión
puede variar si la versión del motor de la base de datos no concuerda. Por ejemplo: para bases de datos
de Access 97 la versión del proveedor es 3.5.1, pero si la base de datos es de Access 2000 en adelante
la versión del proveedor es 4.0.
• Revise la consulta SQL, para controlar que se halla escrito bien la tabla de la base de datos a la cual
se desea acceder, así como los campos.
• Verifique que se halla hecho correctamente referencia a la librería ADO adecuada, ya que es fácil
equivocarse, debido a la cantidad de librerías ADO que existen en diferentes versiones, a las que se
pueden hacer referencia. En este caso será: Microsoft ActiveX Data Object 2.0 Library,.
6. Después de Ejecutada la consulta y verificar que no hallan salido errores, creamos la siguiente interfaz.
TextBox
Label
Frame
- Cree el siguiente procedimiento para cargar los campos de la base de datos en los
TextBox
La propiedad .Fields del RecordSet debe usarse con cuidado, ya que genera un error cuando el campo de
la base de datos al que hace referencia esta vació. (Investigue como corregirlo)
La propiedad .AbsolutePosicion del RecordSet informa sobre la posición actual del registro activo
La propiedad .RecordCount del RecordSet informa sobre la cantidad de registros en la consulta
Llame el procedimiento Carga_Datos desde el Form_Load, así como llamó a Conexión y Consulta_SQL
Ejecute el proyecto para ver los datos cargados en los TextBox ubicados en el formulario, de no ser
así, rectifique.
Iniciaremos la codificación con los botones de movimiento, los cuales permitirán desplazarnos entre
un registro y otro. Para tal efecto siga atentamente las siguientes indicaciones:
Rs.MoveFirst
Carga_Datos
Rs.MovePrevious
If Rs.BOF Then
Rs.MoveFirst
End If
Carga_Datos
Es necesario que en cada uno de los botones de movimientos al dar clic, se carguen los campos de la base
de datos en los textbox, la razón es por que cuando se ejecuta uno de los cuatro métodos de movimiento, lo
que se mueve es el cursor del Recordset entre los registros activos de la consulta resultante y eso no se
refleja por sí solo en los controles del formulario. Por esta razón se crea el procedimiento Carga_Datos.
Cuando se da clic en el botón Primero (|<) o Último ( >| ) los métodos correspondientes (.MoveFirst ó
.MoveLast), desplazan el cursor directamente al primer ó último registro del conjunto de registros.
Ahora, Cuando se da clic en el botón Anterior o Siguiente, los métodos correspondientes (.MovePrevious
ó .MoveNext), desplazan el cursor uno a uno cada registro y llegará un momento en que se halla llegado al
final o inicio del conjunto de registros según sea, ahora, si se presiona nuevamente uno de esos dos
botones, se generará un error indicando que se ha llegado a una posición nula y que en ese momento no
existen valores para ninguno de los campos, por esta sencilla razón se establece un control en el momento
exacto en que esto ocurre mediante las propiedades .EOF y .BOF.
Después de comprobados, procedemos con la codificación de los botones de operación sobre la base de
datos (Guardar, Eliminar, Actualizar, Nuevo y Cancelar), pero primero crearemos unas rutinas de control
de botones activos, ya que en ningún momento, no todos los botones deben permanecer disponibles. A
continuación se mostrará gráficamente una tabla que representará dicho comportamiento:
TxtCodigo = ""
TxtDescripcion = ""
TxtValor = ""
TxtStockMin = ""
TxtStockMax = ""
TxtRegistro = "Nuevo Registro"
Control_Botones 2
TxtCodigo.Enabled = True
SwGuardaOModifica = True
Como el botón Guardar ejecutará los códigos al generar un Nuevo registro o Modificar uno ya existente,
se debe tener en cuenta cual de las dos operaciones debe realizar, ya que no es posible realizar las dos al
tiempo ni mucho menos invertirlas, puesto que los comandos SQL de la instrucción son diferentes. Por tal
razón declaramos una variable boleana la cual es True cuando se da clic en Nuevo y es False cuando se
da clic en Modificar:
Dim SwGuardaOModifica As Boolean
Esta declaración debe estar en la sección de declaración de variables, es decir en la parte superior del
código del formulario.
On Error GoTo es una etiqueta que permite mantener un control de los errores del código que se
encuentre dentro de ella, es decir, si en alguna de las líneas de código ubicadas dentro de On Error GoTo
ocurre algún suceso inesperado, automáticamente el programa realiza un salto a la etiqueta especificada
debajo, la cual captura el error y permite darle un tratamiento, sin que este bloquee la aplicación que
actualmente se esta ejecutando.
La propiedad BeginTrans del objeto Connection permite habilitar en modo de vista la base de datos para
realizar una transacción sobre ella.
La propiedad CommitTrans del objeto Connection permite completar la transacción en caso de no haber
ocurrido ningún error,
La propiedad RollbackTrans del objeto Connection permite deshacer los cambios ejecutados en una
transacción sobre la base de datos en caso de ocurrido algún error.
Control_Botones 2
SwGuardaOModifica = False
Pro último actualizamos el código del evento FormLoad cambiándolo por el siguiente:
Private Sub Form_Load( )
Conectar
Consulta_Inicial
Control_Botones 1
End Sub
• Validar que los campos reciban solo el tipo de datos solicitado, es decir, si solicita un número, que
permita escribir solo números.
• Al Guardar un nuevo registro, verificar que se hallan llenado los textbox solicitados.
• Al Guardar un nuevo registro, controlar que la identificación o clave primaria no se encuentre ya
registrada en la base de datos, ya que esto generaría errores por duplicidad en la clave.
• Habilitar una ventana de búsqueda de datos.
• No permitir desplazarse en los registros, mientras se está modificando o creando uno nuevo.
• Al eliminar, preguntar si realmente desea realizar la operación. Usando aceptar y cancelar mediante
un cuadro de mensaje ( Msgbox )