Este documento proporciona tres ejemplos del uso del control Data en Visual Basic para acceder y manipular datos de bases de datos. El primer ejemplo muestra cómo crear una agenda simple con un control Data enlazado a una tabla de Access. El segundo ejemplo demuestra cómo establecer la propiedad Recordsource del control Data en tiempo de ejecución. El tercer ejemplo explica cómo enlazar un control Data a un control DbGrid para visualizar datos.
1. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Inicio Ejemplos vb Ocx - Activex Api vb Tutoriales - Manuales Código fuente
Ejemplos vb.net
Sección de tutoriales y
manuales vb
Control Data - Página 1
Volver - 1 - 2
emLink
Consultores expertos en desarrollo con
.NET
www.emlink.com.mx
En esta sección se ven
algunos ejemplos muy
simples del uso del
control Data de visual
Basic
Contenido :
Breve descripción
Ejemplo 1 : Crear una
Agenda simple
Ejemplo 2 - Propiedad
Recordsource en tiempo de ejecución
Enlazar un control Data con un DbGrid
Acceder a una base de datos con Password
Enlaces relacionados
1 - Breve descripción
El control Data se utiliza con el motor de base de datos Microsoft Jet para acceder
a base de datos de diferentes formatos como por ejemplo: Microsoft Access,
Dbase, Excel, FoxPro, Lotus y Paradox, aunque en los ejemplos solo se utilizará
Microsoft Access como base de datos.
El control Data permite trabajar con controles enlazados, por ejemplo con
controles Label, TextBox, ComboBox, controles Image etc.. para presentar los
datos. Esto quiere decir que al colocar un control Data y enlazarlo a una base de
datos y luego enlazar dichos controles con el control Data, los cambios que se
realicen en los controles enlazados se reflejarán en la base de datos.
1 de 13 19/04/2010 12:31 p.m.
2. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Para enlazar la base de datos con un control Data ubicado en el formulario, se
utiliza la propiedad DataBaseName y Connect. En la propiedad Connect se
especifica el tipo de base de datos, por ejemplo: Access. Luego, ya se puede
seleccionar la base de datos. Para indicar con que tabla se encontrará unida al
control se utiliza la propiedad RecordSource.
Nota: Antes de especificar la tabla en la propiedad RecordSource hay que indicar
la propiedad DataBaseName y Connect, de lo contrario se producirá un error "
Debe rellenar las propiedades DataBaseName y Connect para llevar a cabo la
operación"
Si bien estas propiedades se pueden establecer en tiempo de ejecución, en el
ejemplo solo se realizará en tiempo de diseño
2 - Ejemplo 1 : Crear una Agenda simple
El primer paso será crear una base de datos Access con los siguientes campos:
Nombre, Direccion y Telefono. El tipo de dato de los campos establecerle como
de Tipo Texto
Luego guardar la tabla con el nombre Contactos
Colocar la base de datos en una carpeta cualquiera, donde se ubicará también el
proyecto de ejemplo.
Iniciar un nuevo proyecto de tipo Exe y guardarlo en la carpeta anterior. En el
formulario principal, lo primero será colocar un control Data llamado Data1.
Ahora seleccionar el control Data1, y desde la ventana de propiedades serciorarse
que la propiedad Connect esté con el valor Access y en la propiedad
DataBaseName elegir la base de datos anteriormente creada.
Manteniendo seleccionado siempre el control Data, ahora localizar la propiedad
Recordsource para indicar la tabla a la cual estará enlazada, y seleccionamos la
Tabla Contactos.
Colocar los siguiente controles en el formulario como está en la siguiente imagen:
Textbox: txtNombre, txtDireccion y txtTelefono
TextBox: txtNomEdit, txtDirEdit y txtTelEdit
2 de 13 19/04/2010 12:31 p.m.
3. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
El commandButton Agregar colocarle el nombre CmdAgregar
El botón de Eliminar CmdEliminar
Refrescar: CmdRefresh
Actualizar : CmdActualizar
Modificar: CmdModificar
Ahora para enlzar los textBox llamados txtNombre, txtDireccion y txtTelefono,
hay que indicarle en la propiedad DataField de cada uno de los TextBox, el
campo por el cual se enlazará. Para el primero, seleccionar el campo Nombre en
la propiedad DataField, el segundo Textbox el campo Direccion y el tercero el
campo Telefono
El código del formulario:
3 de 13 19/04/2010 12:31 p.m.
4. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
'Botón para Agregar un Nuevo Registro
Private Sub CmdAgregar_Click()
Data1.Refresh
Data1.Recordset.AddNew
txtNombre.SetFocus
End Sub
'Botón para Eliminar el Registro Activo
Private Sub CmdEliminar_Click()
With Data1.Recordset
'Elimina
If Data1.Recordset.RecordCount = 0 Then Exit Sub
.Delete
'Posiciona en el siguiente
.MovePrevious
If Not .EOF Then .MoveLast
End With
End Sub
'Botón para Actualizar los cambios
Private Sub CmdActualizar_Click()
On Error GoTo errSub
'Actualiza el control data
Data1.UpdateRecord
Data1.Recordset.Bookmark = Data1.Recordset.LastModified
Exit Sub
errSub:
If Err.Number = 524 Then
MsgBox "Para actualizar un registro primero agregue uno nuevo o" & _
"modifique algun registro activo", vbInformation
End If
End Sub
'Botón para modificar el registro activo
Private Sub CmdModificar_Click()
Data1.Recordset.Edit
If txtNomEdit <> "" Then Data1.Recordset("Nombre").Value = txtNomEdit
If txtDirEdit <> "" Then Data1.Recordset("Direccion").Value = txtDirEdit
If txtTelEdit <> "" Then Data1.Recordset("telefono").Value = Val(txtTelE
Data1.Recordset.Update
End Sub
'Refresca el control
Private Sub CmdRefresh_Click()
Data1.Refresh
End Sub
'Evento que ocurre Cuando se produce un error en el control Data
Private Sub Data1_Error(DataErr As Integer, Response As Integer)
MsgBox "Error: " & Error$(DataErr)
Response = 0
End Sub
'Muestra la posición del registro activo del control Data
Private Sub Data1_Reposition()
Screen.MousePointer = vbDefault
On Error Resume Next
'Mostramos el número de registro en el control Data en la propiedad capti
Data1.Caption = "Registro n° : " & (Data1.Recordset.AbsolutePosition + 1
End Sub
Private Sub Data1_Validate(Action As Integer, Save As Integer)
4 de 13 19/04/2010 12:31 p.m.
5. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Agregar una opción para buscar un registro:
Añadirle al ejemplo anterior los siguientes controles:
3 TextBox: txtSearchNom, txtSearchDir y txtSearchTel
Un Option1 y en el Caption: " Por nombre "
Un Option2 y en el Caption: " Por Diercción "
Un Option3 y en el Caption: " Por Teléfono "
Un CommandButton llamado CmdBuscar
El código del procedimiento al pulsar el botón Buscar
5 de 13 19/04/2010 12:31 p.m.
6. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Private Sub CmdBuscar_Click()
If Option1.Value = True Then
Data1.Recordset.FindFirst ("Nombre = '" & txtSearchNom & "'")
ElseIf Option2.Value = True Then
Data1.Recordset.FindFirst ("Direccion = '" & txtSearchDir & "'")
ElseIf Option3.Value = True Then
Data1.Recordset.FindFirst ("telefono = '" & txtSearchTel & "'")
End If
If Data1.Recordset.NoMatch Then MsgBox " Registro no encontrado", vbInfo
End Sub
Descargar ejemplo
3 - Ejemplo 2 - Propiedad Recordsource en tiempo de ejecución
El siguiente ejemplo muestra una forma de utilizar la propiedad Recordsource del
control Data
El mismo consiste en un control Combo que tiene cargado los nombres de Clientes
de una Tabla, y al seleccionar uno de ellos, poder mostrar otros datos del Cliente
en unos TextBox, como muestra esta imagen:
Pasos para crear el ejemplo :
Crear una base de datos llamada base.MDB. Dentro de esta una tabla llamada
Clientes en la cual tendrá los siguientes campos: Nombre, Telefono, Pais y
Correo. Todos los campos dejarlos como de tipo texto.
Cargar algunos datos de ejemplo y Guardar la base de datos en una carpeta
donde también se guardará el proyecto de Visual basic.
Ahora crear un nuevo proyecto en Visual basic y agregar en el formulario los
siguiientes controles: Un control Data llamado Data1. Un control ComboBox
llamado ComboNombres, Un textBox llamado txtTelefono, otro txtPais y otro
txtCorreo
Ahora se enlazará en la propiedad DataField y DataSource de cada TextBox, el
campo relacionado y el control Data1 como fuente de los registros.
6 de 13 19/04/2010 12:31 p.m.
7. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Por ejemplo, para el txtTelefono seleccionar la propiedad DataSource y
seleccionar el control Data1 y en la propiedad DataField escribir el nombre del
campo, en este caso Telefono. Todo esto desde la ventana de propeidades como
muestra la imagen:
Hacer lo mismo para los restantes Controles textBox
El código fuente del Formulario sería el siguiente:
7 de 13 19/04/2010 12:31 p.m.
8. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Option Explicit
'Ejemplo 2 del control Data y la propiedad Recordsource en tiempo de ejecuci
Private Sub ComboNombres_Click()
' Al hacer Click en el elemento del combo _
se selecciona mediante sql el registro _
y la cadena Sql se asigna al Recorsource del _
control data
Data1.RecordSource = _
"SELECT * FROM Clientes WHERE Nombre='" & ComboNombres & "'"
'Refresca el control data
Data1.Refresh
End Sub
Private Sub Form_Load()
Dim Path_Base_Dato As String, db As Database
Dim rst As Recordset
Path_Base_Dato = App.Path
Path_Base_Dato = Path_Base_Dato & "base.mdb"
'Abre la base de datos
Set db = OpenDatabase(Path_Base_Dato)
'Abre el Recordset con la consulta: Selecciona los nombres ordenados
Set rst = db.OpenRecordset( _
"SELECT Nombre FROM Clientes ORDER BY Nombre", _
dbOpenSnapshot)
' Se mueve al primer registro
rst.MoveFirst
Do While Not rst.EOF
'Agrega el Nombre al Combo
ComboNombres.AddItem rst!Nombre
'siguiente registro
rst.MoveNext
Loop
'Cierra el recordset y la base
rst.Close
db.Close
'Se asigna la base de datos al Data1
Data1.DatabaseName = Path_Base_Dato
'Seleccionamos el primer elemento del combo
ComboNombres.ListIndex = 0
Me.Caption = " Ejemplo de la propiedad recordsource del control Data "
End Sub
Este mismo ejemplo lo podés descargar desde este enlace:
Descargar Ejemplo 2 - Control Data
8 de 13 19/04/2010 12:31 p.m.
9. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
4 - Enlazar un control Data con un DbGrid
Para enlazar un control Data a un control DbGrid, es muy simple. Una ves que el
control Data ya tiene especificado en la propiedad DataBaseName el nombre de la
base de datos, y en la propiedad Recordsource la fuente de los registros ( consulta
sql o tabla) , solo hay que especificar en la propiedad DataSource del control
DbGrid, el control Data al cual estará enlazado. Como muestra la imagen:
Para enlzar un control MsFlexGrid, se realiza de la misma forma, especificando en
el control FlexGrid en la propiedad DataSource, el Data al cual enlazarlo.
Enlazar un control Data con un DbGrid y especificar el RecordSource en
tiempo de ejecución
Este ejemplo es similar al anterior, es decir, se enlazará un control Data con un
DbGrid, pero al cambiar la propiedad Recordsource del control Data en tiempo de
ejecución, el DbGrid visualizará los nuevos datos.
Colocar un DbGrid llamado DbGrid1, un control Data llamado Data1, un control
TextBox llamado Text1 , un CommonDialog1, y dos botones, Command1 y
Command2
El Command1 será para seleccionar la base de datos. El Command2 para ejecutar
la consulta sql que se escribirá en el control Text1.
Esta es una vista del ejemplo
9 de 13 19/04/2010 12:31 p.m.
10. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Importante: Al control DbGrid, especificarle en la propiedad DataSource el
control Data1
El código fuente del formulario:
10 de 13 19/04/2010 12:31 p.m.
11. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Option Explicit
Private Sub Command1_Click()
On Error GoTo ErrSub
With Data1
'Se asigna el Recordsource al data
.RecordSource = Trim$(Text1.Text)
.Refresh 'refresca el control
End With
Exit Sub
ErrSub:
MsgBox Err.Description, vbCritical, " Error "
End Sub
Private Sub Command2_Click()
On Error GoTo ErrSub
'Abre el cuadro de diálogo para Seleccionar la base de datos
With CommonDialog1
.DialogTitle = " Seleccionar base de datos para anlzar con el Data "
.Filter = "Archivos de base de datos Access|*.mdb"
.ShowOpen
If .FileName = "" Then
Exit Sub
Else
'Le especifica el path de la Bd al control data1
Data1.DatabaseName = .FileName
MsgBox " Ahora escriba una consulta en Text1 para " & _
"cargar el DbGrid ", vbInformation
End If
End With
Exit Sub
ErrSub:
MsgBox Err.Description, vbCritical, " Error "
End Sub
Private Sub Data1_Error(DataErr As Integer, Response As Integer)
Response = 0
End Sub
Private Sub Form_Load()
Me.Caption = " Ejemplo DbGrid y el control Data "
Command1.Caption = " Ejecutar consulta "
Command2.Caption = " Seleccionar BD "
' Tipo de base de datos para el Data
Data1.Connect = "Access"
End Sub
11 de 13 19/04/2010 12:31 p.m.
12. Control Data http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-data.htm
Descarga ejemplo
5 - Abrir una base de datos con Password
Estos dos ejemplos muestran como abrir una base de datos Microsoft Access con
password para asociarla luego a un control Data
El primer ejemplo abre una Bd de tipo Access 2000, el segundo una Bd de tipo
Access 97.
Este ejemplo requiere incluir la referencia a Microsoft DAO desde el menú
Proyecto - Referencias e incluir un control Data llamado Data1
Option Explicit
Private Sub Form_Load()
Dim Path As String
Dim db As Database
Dim rst As Recordset
Path = App.Path & "Bd1.mdb"
Set db = DBEngine.OpenDatabase(Path, False, False, "MS Access;PWD=EL_PAS
' Abre el recordset
Set rst = db.OpenRecordset("El_Campo")
' Asocia el recordset al control Data
Set Data1.Recordset = rst
End Sub
Abrir la base con Password en Access 97:
12 de 13 19/04/2010 12:31 p.m.