RE:enlazar access con visual
Hola, espero poder ayudarte.
Si lo quenecesitas es llamar a una tabla de acces desde VB, vero todos los registros que contiene y seleccionar algunos de ellos, enviandolos as un textBox(digamos un solo textbox). Podes utilizar un DBGrid o un MsflexGrid.
Laconexion con la base de datos vamos a hacerla con ADODB.
Hacemos la aplicacion desde el principio.
Una vez que empezamos un nuevo proyecto. vas al menu y en la opcion "Project", desplegas las opciones, seleccionando "Referencess..." Cuando veas que aparece el cuadro de dialogo activa los sigientes recursos:
Microsoft DAO 3.51 Object Library
Microsoft Data Binding Collection (MSBIND.DLL)
Microsoft ActiveX Data Objects 2.0 Library
Ahora nuevamente en menu, seleccionas "Project", alli en el desplegable seleccionas "Components". En cuadro de dialogo que aparece activas el siguiente control: Microsoft FlexGrid Control 6.0 (MSFLXGRD.OCX)
Ahora cmenzamos. Tengo dos tablas "Director", "Maestros" con informacion minima.
Maestros=9 registros
Director= 7 registros
En mi formulario cuento con un msflexgrid, un CommandButton, un TextBox,
Dos optionButton (Option1(0),Option1(1) - decido si la tabla para realizar la apertura)
Dim cn As New ADODB.Connection 'Conexion con la base de datos
Dim Rs As New ADODB.Recordset 'Conexion con una Tabla de la base
'de datos
Private Sub Command1_Click()
Dim C1, C2, C3, C4, C5, C6 As String 'Podria haber utilizado un vector
Dim fila As Variant
Dim x As Integer
cn.Open "DSN=EjemploLWP.mdb" 'Me conecto con la base de datos
Rs.CursorType = adOpenStatic 'Cursor estatico
Rs.LockType = adLockBatchOptimistic 'actualizacion por lote optimistas
If Option1(0).Value = True Then
Rs.Open "SELECT * FROM Maestros", cn, , adLockBatchOptimistic 'me conecto
'con la tabvla Maestros
x = 1
Else
Rs.Open "SELECT * FROM Director;", cn, , adLockBatchOptimistic
x = 0
End If
If Rs.EOF = False Then
Rs.MoveFirst
Cont = 0
While Rs.EOF = False
C1 = Rs.Fields(x + 1).Value & " " & Rs.Fields(x + 2).Value
C2 = Rs.Fields(x + 3).Value
C3 = Rs.Fields(x + 4).Value
C4 = Rs.Fields(x + 5).Value
C5 = Rs.Fields(x + 6).Value
C6 = ""
If Option1(0).Value = True Then C6 = Rs.Fields(8).Value
fila = C1 & vbTab & C2 & vbTab & C3 & vbTab & C4 & vbTab & C5 _
& vbTab & C6
MSFlexGrid1.AddItem fila
Rs.MoveNext
Wend
End If
cn.Close 'Me desconecto de la base de datos
End Sub
Private Sub Form_Load()
MSFlexGrid1.Cols = 6
Command1.Caption = "Mostrar Datos"
Option1(1).Value = True 'Por defecto siempre al solicitar "Mostrar
'Datos", nos mostrara informacion de directores.
End Sub
Private Sub MSFlexGrid1_DblClick()
'Aqui es donde envio la informaciond e la celda al cuadro de texto (Text1.text)
With MSFlexGrid1
If .MouseRow <> 0 Then
Text1.Text = LTrim(Text1.Text & " " & .Text)
End If
End With
End Sub
Private Sub Option1_Click(Index As Integer)
With MSFlexGrid1
.Rows = 1
.TextMatrix(0, 0) = "Nombre y Apellido"
.TextMatrix(0, 1) = "DNI"
.TextMatrix(0, 2) = "Telefono"
.TextMatrix(0, 3) = "Direccion"
.TextMatrix(0, 4) = "Escuela"
.ColWidth(0) = 1500
.ColWidth(1) = 2550
.ColWidth(2) = 2550
.ColWidth(3) = 2550
.ColWidth(4) = 2550
.ColWidth(5) = 2550
.ColAlignment(0) = 4
.ColAlignment(1) = 4
.ColAlignment(2) = 4
.ColAlignment(3) = 4
.ColAlignment(4) = 4
.ColAlignment(5) = 4
Select Case Index
Case 1
.TextMatrix(0, 5) = ""
Case 0
.TextMatrix(0, 5) = "Director"
End Select
End With
End Sub
'Cursor estatico: Trabaja sobre una copia estatica del conjunto de registros obtenidos. Podes buscar informacion sobre apeturas de tablas y base de datos Para establecer que es lo que mas se ajusta a tu necesidad.
Trate de definir paso a paso la mayoria de las cosas, trabajando en el cuadro de propiedades, podes evitar declarar muchos pasos. La conexxion con las tablas las realizo desde un tipo, porque la cantidad de registros me servia y solo queria ver los datos. Para modificarlos o trabajr sobre ellos tal ves te convenga trabajar con un vector de Recordset o definir varios (Rs - el nombre que yo utilice).
El fin de este ejemplo es mostrar la conexion con una tabla, llevarlos a una tabla(msflexgrid) de VB y por seleccion de selda enviar el contenido a un cuadro de texto.
Espero haberte podido ayudar.
Arnaldo.