Sección de tutoriales y manuales vb

Ejemplos del Control Data - página 2

Volver al índice - 1 - 2



 

 

1 - Ejemplo para cargar una tabla en un DbGrid al seleccionarla en un control ListBox

 

Vista del ejemplo:

Formulario con el control Dbgrid y el control List para cargar los datos de la tabla seleccionada

 

Descripción:

Al seleccionar una base de datos mediante el Command "Abrir Base", se llama a un subrutina que mediante DAO recorre las tablas de la base y las agrega al control ListBox. Una ves cargadas los nombres de las tablas, al seleccionar una de ellas, se enlaza el control DbGrid con el control Data, es decir se le pasa a la propiedad RecordSource del Data el comando SQL con el nombre de la tabla, y automaticamente el control DbGrid presentará los datos de la misma.

Para el ejemplo se requiere de un control Listbox llamado List1. Un control DbGrid llamado DbGrid1. Un CommonDialog para poder utilizar el cuadro de diálogo de windows para seleccionar el archivo de base de datos, un Command1 y Un control Data llamado Data1

Luego de esto seleccionar el control Dbgrid y en la propiedad DataSource del mismo, desde la ventana de propiedades, especificar el control Data1, para que de esta forma quede enlazado

Por último se debe agregar desde el menú Proyecto - > referencias, la referencia: Microsoft DAO.

 

Código en un formulario:

 Option Explicit

'Botón para elegir el archivo MDB
Private Sub Command1_Click()
With CommonDialog1
    
    .Filter = "Archivo MDB|*.mdb"
    .DialogTitle = "Seleccionar base de datos "

    .ShowOpen
        
        
    If .FileName = "" Then Exit Sub
    
    Call Cargar_Tabla(.FileName)

End With
End Sub

Sub Cargar_Tabla(Path As String)

Dim BD As Database
Dim Tabla As TableDef
    
    'Abre la base de datos
    Set BD = OpenDatabase(Path)
 
    List1.Clear
    
    ' Recorre la tala de la base en un bucle y las _
     agrega en el control ListBix
    For Each Tabla In BD.TableDefs
        
        'Si no es una tabla de sistema
        If Left$(Tabla.Name, 4) <> "MSys" Then
           List1.AddItem Tabla.Name
        End If
    Next
    
    'cierra la base de datos
    BD.Close

    ' Asigna la base de datos al control Data
    Data1.DatabaseName = Path

End Sub

'recibe como parámetro el nombre de la tabla
Sub Enlazar_DbGrid_Data(Tabla As String)

Dim sql As String
    
    ' Cadena SQL
    sql = "SELECT * FROM " & "[" & Tabla & "]"
    
    ' Establece el RecordSource al Data, es decir el Sql
    Data1.RecordSource = sql
    
    'Refresca
    Data1.Refresh
    
End Sub

Private Sub Form_Load()
Command1.Caption = " Abrir base de datos"
Me.Caption = " Ejemplo para enlazar un Data a un DbGrid"
End Sub


Private Sub List1_Click()

If List1.ListIndex <> -1 Then
   'Le envía el nombre de la tabla seleccionada en el List
   Call Enlazar_DbGrid_Data(List1.List(List1.ListIndex))
End If

End Sub

 


2 - Ejemplo para buscar datos - Método FindNext y FindPrevious del objeto Recordset

 

El siguiente ejemplo es muy simple y permite mediante estos dos métodos buscar un registro. El primero buscará haci adelante y el FinPrevious hacia atrás. También hay otros dos métodos, uno llamado FindLast, que busca el último registro, y FindFirst que busca el último. pero en este ejemplo solo se verá el uso de los dos mencionados en el título.

Para armar el ejemplo se necesita colocar en un formulario como muestra la imagen los siguientes controles:

 

vista del formulario de ejemplo con los controles necesarios para buscar mediante el control data

 

Un control Data llamado Data1. Dos controles Commandbutton para buscar los datos. y cuatro controles textBox. El text1, Text2 y text3, en la propiedad DataSource , indicar el control Data1 para que de esta menra queden enlazados a la base de datos. El text4 se utilizará para ingresar el dato a buscar.

En le FormLoad, especificar lo siguiente:

En la Propiedad DatabaseName del control data, la ruta de la base de datos:

En la propiedad REcordSource, la Tabla.

en la propiedad TextField de los Text1, Text2 y Text3, los campos que visualizará cda textBox.

Nota: en este ejemplo se utiliza la base de datos que se instala con visual basic, llamada NWIND.MDB

 

Código fuente en el formulario:


'Busca hacia adelante
Private Sub Command1_Click()
Data1.Recordset.FindPrevious "Ciudad Like '" & Text4 & "'"
End Sub

'Busca hacia atrás
Private Sub Command2_Click()
Data1.Recordset.FindNext "Ciudad Like '" & Text4 & "'"
End Sub



Private Sub Form_Load()
Path = "C:\Archivos de programa\Microsoft Visual Studio\VB98\NWIND.MDB"

'Path de la base de datos para la propiedad DatabaseName
Data1.DatabaseName = Path

'Tabla para la propiedad RecordSource
Data1.RecordSource = "Clientes"

'Especifica los DAtaField de los controles
Text1.DataField = "Nombre_del_contacto"
Text2.DataField = "Ciudad"
Text3.DataField = "Teléfono"


Command1.Caption = " Buscar hacia Atrás "
Command2.Caption = " Buscar hacia adelante "
Me.Caption = " Ejemplo del método Find para buscar datos"

End Sub

 


Ejemplo para filtrar con el operador Like

Este otro sencillo formulario , utiliza un control data y un MsFlexgrid enlazado. Al escribir en un textbox , se filtran los datos utilizando el operador like de sql de microsoft jet.

Nota : En este caso se utiliza los campos idProducto y NombreProducto, de la base de datos nwind del directorio de visual basic.

Vista del form

 

Descargar ejemplo


3 - Pasar datos desde Microsoft Excel hacia Access

Este es un simple ejemplo que utiliza dos controles Data para exportar datos de una hoja de cálculo Excel hacia una base de datos mdb.

Uno de los controles Data, se enlaza con la hoja de Excel, y otro control data para acceder a la base de datos.

Formulario

 

Para el ejemplo, la hoja debe tener tres campos o columnas con algunos datos, por ejemplo :

vista de la hoja con los datos en cada columna

 

1 - Indicar en el código fuente, el nombre de la hoja del Excel y el nombre de la tabla en la propiedad Recordsource de cada control Data

2 - Crear tres campos dentro de la bd

Importante: asi como está el ejemplo, los campos en la base de datos , deben ser del mismo tipo o similares, ya que sino dará error de conversión de tipos. Para este caso, se colocaron por default como de tipo " Texto "

 

Código fuente en el formulario

Option Explicit

Private Sub Command1_Click()

On Error GoTo Mensaje_Error
    
    ' path del excel
    Data1.Connect = "Excel 8.0;"
    Data1.DatabaseName = App.Path & "\archivo_Excel.xls"
    
    ' Especifica la Hoja que tiene los datos
    Data1.RecordSource = "Hoja1$"
    ' refresca
    Data1.Refresh
    
    ' path del archivo Access
    Data2.Connect = "Access"
    Data2.DatabaseName = App.Path & "\archivo_Access.mdb"
    
    'indica el nombre de la tabla a usar
    Data2.RecordSource = "Tabla1"
    
    ' refresca
    Data2.Refresh
    
    ' Mueve al primer registro en la hoja
    Data1.Recordset.MoveFirst
    
    ' mientras haya registros
    Do While Data1.Recordset.EOF = False
        
        With Data2.Recordset
            .AddNew ' agrega uno nuevo
            
            ' asigna los datos a cada campo
            .Fields(0) = Data1.Recordset.Fields(0)
            .Fields(1) = Data1.Recordset.Fields(1)
            .Fields(2) = Data1.Recordset.Fields(2)
            
            ' actualiza la base de datos con los nuevos cambios
            .Update
            
            ' se posiciona en el siguiente registro
            Data1.Recordset.MoveNext
        End With
    Loop
    ' ok
    MsgBox " Datas exportados a Access correctamente !!!", vbInformation

Exit Sub
' error
Mensaje_Error:
MsgBox Err.Description

End Sub

Private Sub Form_Load()
    Command1.Caption = " Datos desde Excel hacia Access "
End Sub 

 

 


Volver al índice - 1 - 2

 

 


Buscar en Recursos vb