Sei sulla pagina 1di 8

LEP I

FIIS

UDCH-JAEN

VISUAL BASIC. ACCESO A BASE DE DATOS. CONTROL DATA ACCESO A BASES DE DATOS. Visual Basic proporciona los elementos necesarios para la construccin deaplicaciones que se dediquen a gestionar bases de datos. EL CONTROL DATA. Se puede utilizar para crear aplicaciones que presentan, modifican y actualizan informacin de muchos tipos existentes de Bases de Datos. El control Data puede tomarse directamente de la caja de controles iniciales que proporciona Visual Basic y su representacin en el formulario es la siguiente:

Este control proporciona acceso a datos almacenados en BD mediante uno de los tres tipos de objetos Recordset., adems nos permite acceder a distintos tipos de bases de datos (Access, dBase,Paradox, etc.). Adems, el control de datos le permite tener acceso y manipular bases de datos remotas de Open DatabaseConnectivity (ODBC, Conectividad Abierta de Base de Datos), como Microsoft SQL Server y Oracle. El control puede llevar a cabo las siguientes tareas sin utilizar cdigo: Conectar una base de datos local o remota. Abrir una tabla de base de datos especifica o definir un conjunto de registros basndose en una consulta de Lenguaje Estructurado de Consultas (SQL) de las tablas de esa BD. Pasar campos de datos a controles enlazados, donde puede ver o cambiar los valores. Agregar registros nuevos o actualizar una BD en base a los cambios que realiza a los datos mostrados en los controles enlazados. Interceptar los errores que se producen cuando se tiene acceso a los datos.

Las propiedades ms importantes del control data son: 1.- Connect: Se indica el tipo de base de datos con la que se va a trabajar, ennuestro caso usaremos Access. Sintaxis: objeto.connect= tipobasedatos;parametros 1 Ing. Pal Lovatn Hoyos

LEP I

FIIS

UDCH-JAEN

2.- DataBaseName: Se especifica el lugar y el nombre de la base de datos a la que sequiere acceder. Ej.: C:\VB6\Biblio.mdb Sintaxis: objeto.DatabaseName [= nombre_ruta] 3.- DataSource: Indica el conjunto de registros (tabla, consulta o instruccin SQL)con la que se va a trabajar. Una vez establecidas estas tres propiedades del control data (el tipo de base dedatos, la base de datos, y el conjunto de registros -tabla, consulta o instruccinSQL-) ya podemos acceder a los datos contenidos en los campos de esos registrospara trabajar con ellos. Para hacer referencia al conjunto de registros con los que vamos a trabajar seescribe el nombre del control data seguido de un punto (.) y de la palabra reservadaRecordset. 4.- RecordSource: Devuelve o establece la tabla, la instruccin SQL o el objeto QueryDef subyacente para un control Daa. Sintaxis: objeto.RecordSource [=valor] 5.- RecordsetType: Devuelve o establece un valor que indica el tipo de objeto Recordset que desea que cree el control Data. Sintaxis: objeto.RecordsetType [=valor] Configuracin VbRSTypeTable VbRSTypeDynaset VbRSTypeSnapShot Eventos del control Data: 1.- Validate: Se produce antes de que otro registro se convierta en el registro actual, antes del mtodo Update (excepto cuando se guardan los datos con el mtodo UpdateRecord) y antes de una operacin Delete, Unload y Close. 2.- Reposition: Se produce cuando un registro se convierte en el registro actual. Cuando se carga un control Data, el primer registro del objeto Recordset se convierte en el registro actual, provocando el evento reposition. El objeto Recordset Un objeto recordset representa los registros de una tabla base o los registros que se generan al 2 Ing. Pal Lovatn Hoyos Valor 0 1 2 Descripcin Un recordset de tipo table (Predeterminado) un recordset tipo dynaset Un recordset de tipo snapshot

LEP I ejecutar una consulta. Existen 3 tipos de objetos recordset:

FIIS

UDCH-JAEN

1. Recordset tipo Table: Es una representacin en cdigo de una tabla base que puede utilizarse para aadir, cambiar o eliminar registros desde una nica tabla Base de Datos (slo espacios de trabajo Microsoft Jet). 2. Recordset tipo Dynaset: El resultado de una consulta cuyos registros pueden actualizarse. Un objeto recordset de tipo Dynaset es un conjunto dinmico de registros que puede utilizarse para aadir, cambiar o eliminar registros desde una tabla o tablas subyacentes de una Base de Datos. 3. Recordset tipo Snapchot: Es una copia esttica de un conjunto de registros que puede utilizar para encontrar datos o generar informes. Un objeto Recordset de tipo Snapshot puede contener campos de una o ms tablas de una base de datos pero no se puede actualizar. Mtodos de desplazamiento del objeto Recordset MoveFirst, MoveLast, MoveNext, MovePrevious.

Propiedades del objeto Recordset BOF: La propiedad BOF indica si la posicin del registro activo es anterior al primer registro de un objeto Recordset. La propiedad BOF devuelve el valor True, si la posicin del registro activo es anterior al primer registro. Y False si el registro activo est en el registro activo o en el posterior. EOF: La propiedad EOF indica si la posicin del registro activo es posterior al ltimo registro de un objeto Recordset. La propiedad EOF devuelve el valor True, si la posicin del registro activo es posterior al ltimo registro. Y False si el registro activo est en el ltimo registro o antes de ste. Bookmark: Establece o devuelve un marcador que identifica de forma nica el registro activo de un objeto Recordset.

Propiedades adicionales del control TextBox Para enlazar los controles TextBox a la tabla de la BD se debed e configurar las siguientes propiedades:

3 Ing. Pal Lovatn Hoyos

LEP I

FIIS

UDCH-JAEN

DataSource: Establece un valor que especifica el control Data a travs del cual el control actual se enlaza a una BD. No est disponible en tiempo de ejecucin. Para enlazar un control a un campo de una BD en tiempo de ejecucin, debe especificar un control Data en la propiedad DataSource en tiempo de diseo desde la ventana propiedades. Datafield: Devuelve o establece un valor que enlaza un control a un campo de registro actual. Ejercicio Ejemplo de una aplicacin utilizando el control data que permita el desplazamiento y el mantenimiento de la tabla clientes que se encuentra en la base de datos Nwindceada en Access. Se van a utilizar: 9 etiquetas, 9 cajas de texto, 4 botones de comando y 1 DataControl

En el cdigo de la aplicacin se necesitan crear 2 procedimientos de usuario que son bloques de cdigo que se pueden volver a utilizar: HabilitaTexto HabilitaBotonesMantenimiento Public sw As Integer Private Sub CmdAgregar_Click() On Error GoTo Imprevisto If CmdAgregar.Caption = "&Agregar" Then sw = 1 HabilitaTexto False HabilitaBotonesMantenimiento False DatClientes.Recordset.AddNew 4 Ing. Pal Lovatn Hoyos

LEP I

FIIS

UDCH-JAEN

DatClientes.Caption = "Nuevo Registro" TxtCodigo.SetFocus '***************** CmdAgregar.Caption = "&Grabar" CmdEditar.Caption = "&Cancelar" Else HabilitaBotonesMantenimiento True If DatClientes.EditMode = dbEditAdd Then If MsgBox("Desea Grabar Nuevo registro?", vbYesNo + vbQuestion, _ "Sistema de Facturacion") Then Screen.MousePointer = vbHourglass DatClientes.Recordset.Update numRegs = numRegs + 1 DatClientes.Recordset.MoveLast Else DatClientes.UpdateControls DatClientes.Refresh End If Else If MsgBox("Desea Guardar Cambios?", vbYesNo + vbQuestion, _ "Sistema de Facturacion") = vbYes Then screenmousepointer = vbHourglass DatClientes.Recordset.Update Else DatClientes.UpdateControls End If End If HabilitaBotonesMantenimiento True HabilitaTexto True '****************** CmdAgregar.Caption = "&Agregar" CmdEditar.Caption = "&Editar" End If Screen.MousePointer = vbDefault Exit Sub Imprevisto: MsgBox Err.Description, vbCritical Resume Next End Sub Private Sub CmdEditar_Click() On Error GoTo Imprevisto 5 Ing. Pal Lovatn Hoyos

LEP I

FIIS

UDCH-JAEN

If CmdEditar.Caption = "&Editar" Then HabilitaBotonesMantenimiento False HabilitaTexto False DatClientes.Recordset.Edit DatClientes.Caption = "Modifica Registro" CmdAgregar.Caption = "&Grabar" CmdEditar.Caption = "&Cancelar" Else DatClientes.UpdateControls HabilitaBotonesMantenimiento True HabilitaTexto True If ws = 1 Then DatClientes.Refresh sw = 0 End If CmdAgregar.Caption = "&Agregar" CmdEditar.Caption = "&Editar" End If Exit Sub Imprevisto: MsgBox Err.Description, vbCritical Resume Next End Sub Private Sub CmdEliminar_Click() On Error GoTo DelErrore If DatClientes.Recordset.EOF Then CmdEliminar.Enabled = False Exit Sub Else CmdEliminar.Enabled = True End If If DatClientes.Recordset.BOF Then CmdEliminar.Enabled = False Exit Sub Else CmdEliminar.Enabled = True End If If MsgBox("Eliminar Registro?", vbYesNo + vbQuestion, _ "Sistema de Facturacion") = vbYes Then DatClientes.Recordset.Delete numRegs = numRegs - 1 6 Ing. Pal Lovatn Hoyos

LEP I

FIIS

UDCH-JAEN

DatClientes.Recordset.MovePrevious 'sale de la condicion EOF si se diera If DatClientes.Recordset.RecordCount > 0 Then DatClientes.Recordset.MoveLast End If Exit Sub DelErrore: MsgBox Err.Description, vbCritical Resume Next End Sub Private Sub CmdSalir_Click() Unload Me End Sub Private Sub DatClientes_Reposition() On Error GoTo RepError Dim Cad1 As String Dim recActual As Long 'Obtiene el numero actual de registros numRegs = DatClientes.Recordset.RecordCount If DatClientes.EditMode <> dbEditAdd Then If DatClientes.Recordset.BOF Then Cad1 = "(BOF)/" & numRegs ElseIf DatClientes.Recordset.EOF Then Cad1 = "(EOF)/" & numRegs End If recActual = (numRegs * (DatClientes.Recordset.PercentPosition * 0.01)) + 1 Cad1 = recActual & "/" & numRegs DatClientes.Caption = Cad1 End If RepError: Exit Sub End Sub Private Sub Form_Load() HabilitaBotonesMantenimiento True End Sub Public Sub HabilitaBotonesMantenimiento(bEstado As Boolean) CmdEliminar.Enabled = bEstado CmdSalir.Enabled = bEstado DatClientes.Enabled = bEstado 7 Ing. Pal Lovatn Hoyos

LEP I End Sub

FIIS

UDCH-JAEN

Public Sub HabilitaTexto(bEstado As Boolean) TxtCodigo.Locked = bEstado TxtNCompania.Locked = bEstado TxtNContacto.Locked = bEstado TxtCargo.Locked = bEstado TxtDireccion.Locked = bEstado TxtCiudad.Locked = bEstado TxtPais.Locked = bEstado TxtTelefono.Locked = bEstado TxtFax.Locked = bEstado End Sub Private Sub Form_Unload(Cancel As Integer) Dim Rpta As Integer Rpta = MsgBox("Desea Salir?", vbYesNo + vbQuestion, "Sistema Facturacion") If Rpta = vbNo Then Cancel = True Else End End If End Sub

8 Ing. Pal Lovatn Hoyos

Potrebbero piacerti anche