Sección de tutoriales y manuales vb
Volver al índice - 1 - 2
Vista del ejemplo:
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
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:
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
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
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 :
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
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar