conexion vb con access
TRANSCRIPT
Microsoft Office - Access 2007™
Practicas
Escuela de Ingeniería de Antioquia – EIAEscuela de Ingeniería de Antioquia – EIA
Primer semestre 2009
Christian Lochmueller
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 1
Objetivos
• Aprender como se “programa” una Base de Datosde Microsoft Access 2007 usando Visual Basic 6.0(VB6)
– Conectar VB6 con Access (p.ej. ventas.accdb)
• El control de datos ADO (Active X Data Object)•• Tres formas para conectarse
– Con data control (a. usando *.udl / b. usando código)
– Sin data control
– Diseñar / programar un formulario
– Programar los botones / campos
• Navegar entre registros
• Borrar, Añadir, grabar, refrescar datos / registros
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 2
¿Por qué usar Visual Basic con MS-Access?
• Visual Basic (VB) y Visual Basic for Applications (VBA) ambos tienen elmismo predecesor – Basic – y ambos son productos de la empresaMicrosoft
• VB es un lenguaje de programación usado por desarrolladores de softwarey en este sentido mas “amplio” que VBA. VBA es un lenguaje de scriptingpara crear aplicaciones y es integrado en MS-Excel, -Access, etc. Es decirVBA es incluido en otro productoVBA es incluido en otro producto
• VB y VBA amplían la funcionalidad de Macros– Un macro se usa para automatizar una serie / una secuencias de acciones o
comandos
• VB / VBA permite desarrollar interacciones orientadas hacia el usuario
• Permite ejecutar operaciones complejas con registros (=> SQL)
• Permite un control completo sobre el modelo objeto de Access (AccessObject Model) y sus métodos y propiedades
• VB / VBA ofrece mejor manejo de errores
• VB6, lo cual usamos en clase, fue introducido al mercado en el año 1998
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 3
ADO (Active X Data Object)
• 1) MS-Access tiene incorporado un motor de base de datos (database enginge)que se llama “Jet” – y lo cual usted podria usar
– Pero también se puede usar en el lugar de Jet un servidor de datos aparte
• Como MS-SQLServer, Oracle or MySQL
• Cada uno de ellos funciona un poco diferente
• 2) Los datos (y servidor) de pronto corren en el un solo computador – juntos conAccess
– Pero es posible también que ellos corren en diferentes maquinas– Pero es posible también que ellos corren en diferentes maquinas
• 3) Los datos (y servidor) de pronto no son en una base de datos relacional
– Pueden ser en una pagina web o en una hoja de calculo
• ADO = Active Data Objects es un solo modelo para capturar todos estos casos
• ADO es uno de los mecanismos que usan los programas de computadoras paracomunicarse con las bases de datos, darles órdenes y obtener resultados de ellas
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 4
ADO (Active X Data Object)
• Programación con ADO
– ADO ahora es el método mas importante y confiable de Microsoftpara conectar con una fuente de datos, modificar, recuperar y manejardatos [VINE, 2005]
• ADO permite conectarse con una fuente de datos que apoya el concepto de “opendatabase connectivity (ODBC)”
• ADO también permite usar extensivamente SQL
• Un comentario con respeto a DAO• Un comentario con respeto a DAO
– ADO substituyó tanto a DAO (Data Access Object), como a RDO(Remote Data Object), que eran los sistemas previos que se usabanpara acceder a las bases de datos y bases de datos remotas,respectivamente. ADO tiene la mayor parte de la funcionalidad deambos modelos y sin embargo es más sencillo de usar y de entender ypor lo tanto más fácil y menos engorroso de programar
[Wikipedia]
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 5
ADO (Active X Data Object)• Programación con ADO implica trabajar con el ADO API o sea el denominado “ADO
object model”• Un API (application programming interface) es un conjunto de interfaces o clases que
permiten el acceso a niveles mas bajos de la funcionalidad de los modelos de laprogramación y en este sentido juega el papel de un intermediario.
• ADO vocabulario:– Connection / Conexión
• Una conexión es la manera como uno gana acceso a una fuente de datos . En ADO unaconexión se puede establecer usando el “Connection object”
– Command / Comando– Command / Comando• Un conjunto de instrucciones como SQL que típicamente inserta, borra o actualiza datos.
Estos ADO comandos están incorporado en el “Command object”
– Recordset• Registros los cuales devuelve un comando como SQL son guardado en un conjunto de
registros (recordsets). El ADO “Recordset object “ permite iterar por un conjunto deregistros para insertar, actualizar y borrar filas
– Field / Campo• ADO recordsets contiene un o varios campos. ADO “fields” se implementan usando el
“Field object” que almacena propiedades para los nombres de un campo, tipos de datosy valores
– Parameter/Parámetro• “Parameters” permiten el uso de variables para entregar información a un comando
como SQL. ADO usa el “Parameter object” para construir consultas usando parámetros
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 6
Tres formas de conectarse con la BD (usando ADO):
1. Con data control (Adodc1 = Ado data control)
– “Configurar“ la conexión usando un archivo *.udl y la IDE deVB (=> “tiempo de diseño)
2. Con data control (Adodc1 = Ado data control)2. Con data control (Adodc1 = Ado data control)
– Programar la conexión usando VB6 (=> “tiempo de ejecución”)
3. Sin data control
– Programar la conexión usando VB6 (=>“tiempo de ejecución”)
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 7
Opción 1:UDL = Universal Data link
• UDL se puede usar para establecer una conexión conuna base de datos
• La ventaja de archivos de tipo UDL es que ofrecenuna manera fácil y grafico para establecer unaconexión con una base de datos que cumpla con elconexión con una base de datos que cumpla con elestándar ODBC
• *.UDL es un pequeño archivo de texto con uncomando para establecer una conexión
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 8
1. Crear un vinculo de datos OLE DB (1)
• Crear un archivo de tipo udl usando un editor (Bloc de notas). Guarde elnuevo archivo con el nombre de la base de datos– p.ej. ventas.udl – y en elmismo directorio donde esta el archivo con la base de datos (ventas.accdb)
• Para guardar el archivo con la extensión udl se tiene que seleccionar laopción “Todos los archivos” (al contrario el programa lo guardará como .txt):
• Para los tres próximos pasos véase el diapositiva siguiente– 1) Abra este archivo (con doble clic) y entre el Proveedor para Access 2007:
“Microsoft Office 12.0 Access Database Engine OLE DB Provider”
– 2) Entre el camino donde se encuentra la base de datos – p.ej. “C:\Documents andSettings\3.xB\Mis documentos\ventas.accdb” (donde x es el numero de la aula en la EIA)
– 3) Después seleccione en el dialogo “Probar la conexión”
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 9
1. Crear un vinculo de datos OLE DB (2)1 2 3
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 10
1. Abrir Visual Basic 6.0
• Abre la IDE (Integrated development
environment) de VB
• Abre un proyecto nuevo:
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 11
2. Diseño del formulario
• Sitúe sobre el formulario los controles para
– el nombre del vendedor,
– el nombre del producto,
– el nombre del municipio,
– la fecha de la venta y
– las unidades vendidas
• Para hacerlo usa las herramientas (a la
izquierda) => véase la próxima diapositiva
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 12
2. Diseño del formulario
Sitúe para cada campo
- una caja de texto y
- Una etiqueta
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 13
3. Asigna nombres a los controles usando el
compartimento “Propiedades”
Objeto Propiedad Valor
Etiqueta Caption
Name
Vendedor
Label1
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 14
3. Asigne los nombres de la manera siguiente:
Objeto Propiedad Valor
Etiqueta Caption
Name
Vendedor
Label1
Caja de texto Name
Text1
Text1
(nada)
Etiqueta Caption
Name
Producto
Label2
Caja de texto Name
Text1
Text2
(nada)
Etiqueta Caption
Name
Municipio
Label3Name Label3
Caja de texto Name
Text1
Text3
(nada)
Etiqueta Caption
Name
Fecha
Label4
Caja de texto Name
Text1
Text4
(nada)
Etiqueta Caption
Name
Unidades Vendidas
Label5
Caja de texto Name
Text1
Text5
(nada)
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 15
3. Resultado de la asignación
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 16
4. Seleccione el control ADO de la barra de
herramientas y dibújelo sobre el formulario
Advertencia:
Si el control ADO no aparece
automáticamente, seleccione lo
primero:
Proyecto – Componentes –
Controles - “Microsoft ADO Data
Control 6.0 (OLEDB)”
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 17
5. Especifique las propiedades para el control
ADO (Adodc1) de la manera siguiente:
Objeto Propiedad Valor
Control de datos ADO Caption
Name
ConnectionString
RecordSource
p.ej.: Vendedor
Label1
C:\Mis documentos\ventas.udl
SELECT vendedores.nombre,
productos.nombre,productos.nombre,
municipios.nombre,
ventas.fecha,
ventas.unidadesVendidas
FROM vendedores, productos,
municipios, ventas
Véase paginas siguientes
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 18
5a. Para la definición de la propiedad “ConnectionString”
haga clic en los “… “(a la derecha de la propiedad) y se abre el
dialogo para entrar el ConnectionString (con el archivo ventas.udl)
Pagina 19 Practicas – Base de Datos y Sistemas de Información © 2009 by C. Lochmueller
Seleccionar Aceptar entra
el string como propiedad
5b. Para la definición de la propiedad “RecordSource”
haga clic en los “… “(a la derecha de la propiedad) y se abre el dialogo
para entrar la “RecordSource” (con el comando SQL – la consulta)
Pagina 20 Practicas – Base de Datos y Sistemas de Información © 2009 by C. Lochmueller
Seleccionar “Aceptar”
entra la Source (fuente)
como propiedad
6. Para las 5 cajas de texto asigna en la propiedad “DataSource”
el valor “Adodc1” (el valor del control ADO) y para la propiedad
“DataField” el valor adecuado para cada campo (usando la
flecha / triangula al lado derecho de la propiedad). Es decir para
vendedor => vendedores.nombre etc.
• Si uno guarda el proyecto (como ventas) y lo ejecuta
se presentará así,
los valores para los valores para
los campos vienen
de la base de datos
(ventas.accdb):
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 21
7. Coloque 4 controles (botones) para
navegar entre los registros
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 22
8a. Asignar los valores a las propiedades de
la manera siguiente:
Objeto Propiedad Valor
Botón de pulsación Caption
Name
Inicio
Inicio
Botón de pulsación Caption
Name
Anterior
Anterior
Botón de pulsación Caption SiguienteBotón de pulsación Caption
Name
Siguiente
Siguiente
Botón de pulsación Caption
Name
Final
Final
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 23
8b. Definir el código para los botones (haz doble clic en el
botón para que se abra la ventana para introducir el
código de VB)
Private Sub Inicio_Click()Adodc1.Recordset.MoveFirst
End Sub
Private Sub Final_Click()Adodc1.Recordset.MoveLast
End Sub
Private Sub Anterior_Click()Adodc1.Recordset.MovePreviousIf Adodc1.Recordset.BOF Then � BOF = Begin of file
Adodc1.Recordset.MoveFirstEnd If
End Sub
Private Sub Siguiente_Click()Adodc1.Recordset.MoveNextIf Adodc1.Recordset.EOF Then � EOF = End of file
Adodc1.Recordset.MoveLastEnd If
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 24
9. Inactivamos el control ADO
(porque ahora tenemos los botones para navegar)
• Seleccione para el control ADO la propiedad “visible” y
elige “false”
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 25
9. … y así se presenta el resultado (cuando ejecutamos
la aplicación):
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 26
10. De la misma manera se pueden definir botones para borrar
(delete), nuevo, editar, buscar, cancelar, grabar (update), refrescar
(actualizar)Nota: El código siguiente fue escrito para la opción “conectarse con *udl y la IDE (tiempo
diseño) se tiene que cambiar un poco si se usa una de las alternativas B o C
Private Sub Borrar_Click() <- ‘Borrar
Dim r As Integer
On Error GoTo RutinaDeError
r = MsgBox("¿Desea borrar el registro?", vbYesNo, " Atención")
If r <> vbYes Then Exit Sub
Adodc1.Recordset.DeleteAdodc1.Recordset.Delete
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveLast
End If
Exit Sub
RutinaDeError:
r = MsgBox(Error, vbOKOnly, "Se ha producido un err or:")
Adodc1.Recordset.CancelUpdate
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 27
… continuación
Private Sub Nuevo_Click() <- ‘Entrar un nuevo registro
HabilitarCajas
InhabilitarBotones
Grabar.Enabled = True
Cancelar.Enabled = True
Adodc1.Recordset.AddNew ‘añadir un nuevo registro
Text1.SetFocus ‘ poner el cursor en la primera caja
El objetivo de
“In/HabilitarCajas y –
botones” se explica mas
adelante
Text1.SetFocus ‘ poner el cursor en la primera caja
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 28
… continuación
Private Sub Buscar_Click() <- ‘Buscar un registro
Dim Buscado As String, Criterio As String
Buscado = InputBox("¿Que nombre quieres buscar?")
If Buscado = "" Then Exit Sub
Criterio = "Nombre Like '*" & Buscado & "*'"
Adodc1.Recordset.MoveNext
If Not Adodc1.Recordset.EOF Then
Adodc1.Recordset.Find CriterioAdodc1.Recordset.Find Criterio
End If
If Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveFirst
Adodc1.Recordset.Find Criterio
If Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveLast
MsgBox ("No encuentro ese nombre")
End If
End If
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 29
… continuación
Private Sub Cancelar_Click() <- ‘Cancelar una acción
Adodc1.Recordset.CancelUpdate
HabilitarBotones
Grabar.Enabled = True
InhabilitarCajas
End Sub
Private Sub Editar_Click() <- ‘Editar el registro actual
HabilitarCajasHabilitarCajas
HabilitarBotones
Grabar.Enabled = True
Cancelar.Enabled = True
Text1.SetFocus
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 30
… continuación
Private Sub Grabar_Click() <- ‘Almacenar un registro nuevo (véase “Nuevo”)
Adodc1.Recordset.Update
HabilitarBotonesGrabar.Enabled = TrueInhabilitarCajas
End Sub
Private Sub Refrescar_Click() <- ‘Recargar los registros (del formulario)
Adodc1.Recordset.Requery
HabilitarBotonesGrabar.Enabled = FalseGrabar.Enabled = False
End Sub
Private Sub Form_Load() <- ‘Función para cargar el formulario con los datos
Grabar.Enabled = FalseInhabilitarCajas
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 31
… continuación
Private Sub InhabilitarCajas()Dim n As IntegerFor n = 0 To Controls.Count - 1
If TypeOf Controls(n) Is TextBox ThenControls(n).Enabled = False
End IfNext n
End Sub
Private Sub InhabilitarBotones()Dim n As Integer
El objetivo de “In/HabilitarCajas y –
botones” es que queremos evitar
que el usuario puede realizar
operaciones sin sentido como
cambiar de registro en mitad de una
operación de altas o pulsar el botón
“Nuevo” (dar de alta un registro)
repetidas veces (=> para evitar
registros en blancos), etc.
Dim n As IntegerFor n = 0 To Controls.Count - 1
If TypeOf Controls(n) Is CommandButton ThenControls(n).Enabled = False
End IfNext n
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 32
… continuación
Private Sub HabilitarCajas()Dim n As IntegerFor n = 0 To Controls.Count - 1
If TypeOf Controls(n) Is TextBox ThenControls(n).Enabled = True
End IfNext n
End Sub
Private Sub HabilitarBotones()Dim n As IntegerDim n As IntegerFor n = 0 To Controls.Count - 1
If TypeOf Controls(n) Is CommandButton ThenControls(n).Enabled = True
End IfNext n
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 33
Tareas / Ejercicios (sin evaluación):
(1) Programa el ejemplo dado, es decir:
• Programa la conexión con la base de datos (Ventas) que seencuentra en moodle.
• Usando *udl y la IDE de VB6
• Genera con VB 6 un formulario que muestra vendedor,producto, municipio, fecha de la venta y unidades vendidas.Además programa 4 botones para navegar (Inicio, Anterior,producto, municipio, fecha de la venta y unidades vendidas.Además programa 4 botones para navegar (Inicio, Anterior,Siguiente, Final) y luego botones para agregar un registronuevo y grabarlo, y un botón para buscar un registro.
(2) Haz lo mismo con la base de datos “AccessBD_DatosBasicos_0”que se encuentra también en moodle
• En el formulario muestre los campos nombres, apellidos yteléfono
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 34
Opción 2:
=> es una alternativa para conectarse con la BD
• Con data control (Adodc1 = Ado data control)
– Programar la conexión usando VB6 (=> “tiempo de ejecución”)
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 35
Opción 2:
Lo mismo se puede lograr escribiendo código. Es decir sin “configurar”
las propiedades del formulario y sin usar un archivo *.udl.
(a) Genere simplemente un formulario dibujando las etiquetas (en
este caso una matriz) y las cajas de texto (otra matriz):
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 36
Opción 2:
(b) Y ahora se escribe el código siguiente para conectarse con la BD:
Private Sub Form_Load()
' Indicar el path correcto de la base de datos
Const sPathBase As String = "C:\Documents and Settings \3. xB\Mis documentos\ventas2.accdb"
' Crear la conexión manualmente
' Con "Provider=Microsoft.ACE.OLEDB.12.0;" se permi te abrir bases de datos de Access 2007Access 2007
With Adodc1
.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & sPathBase & ";"
' Indicarle de que tabla / consulta vamos a leer lo s datos
.RecordSource = "SELECT vendedores.nombre, productos .nombre, municipios.nombre, ventas.fecha, ventas.unidadesVen didas FROM vendedores, productos, municipios, ventas"
End With
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 37
Opción 2:
(b) … continuación
' Indicar el DataSource de los cajas de texto (las c uales en este ejemplo son una matriz)
' ya que con ADO se puede asignar en tiempo de ejec ución
Dim i As Long
For i = 0 To 4
Set Text1(i).DataSource = Adodc1
Next
' Asignar los campos (el indice (0) a (4) hace refer encia a la matriz)
Text1(0). DataField = " vendedores.nombre "Text1(0). DataField = " vendedores.nombre "
Text1(1).DataField = "productos.nombre"
Text1(2).DataField = "municipios.nombre"
Text1(3).DataField = "fecha"
Text1(4).DataField = "UnidadesVendidas"
' Mostrar en las etiquetas el campo a usar
Label1(0).Caption = "Vendedor:"
Label1(1).Caption = "Producto:"
Label1(2).Caption = "Municipio:"
Label1(3).Caption = "Fecha:"
Label1(4).Caption = "Unidades vendidas:"
End SubPracticas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 38
Opción 2:
… y el resultado es el mismo
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 39
Opción 2:
(c) El código para los botones se tiene que cambiar un
poco porque no se puede asignar un nombre al comando
en tiempo de ejecución (solo en tiempo de diseño):
Private Sub Command2_Click()
Agregue a Sub form_load () el código siguiente y cambie los nombres en
los métodos correspondientes de manera adecuada:
Command1.Caption = "Inicio“
Command2.Caption = "Anterior“
Command3.Caption = "Siguiente“
Command4.Caption = "Final"
Private Sub Command1_Click()
Adodc1.Recordset.MoveFirst
End Sub
Private Sub Command4_Click()
Adodc1.Recordset.MoveLast
End Sub
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then
Adodc1.Recordset.MoveFirst
End If
End Sub
Private Sub Command3_Click()
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveLast
End If
End Sub
Command4.Caption = "Final"
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 40
Opción 2:
… y el resultado es el mismo:
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 41
Opción 3:
=> es otra alternativa para conectarse con la BD
• Pero esta vez sin data control
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 42
Opción 3:
Lo mismo se puede lograr sin usar un data control (Adodc1)
(a) Genere simplemente un formulario dibujando las etiquetas (en
este caso una matriz) y las cajas de texto (otra matriz), pero esta vez
sin el data control (Adodc1):Nota: Se necesita Proyectos -> Referencias – ”Microsoft ActiveX Data Objects 2.8
Library”
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 43
Opción 3:
(b) Y ahora se escribe el código siguiente para conectarse con la BD:
Option Explicit' En ADO, se usa el objeto Connection para abrir las bases de datosPrivate cnn As ADODB.Connection' Necesitamos los eventos si queremos controlar alg unas cosillasPrivate WithEvents rst As ADODB.Recordset
Private Sub Form_Load()' Indicar el path correcto de la base de datosConst sPathBase As String = "C:\Documents and Settings \3. xB\Mis
documentos\ventas2.accdb"
' Crear los objetosSet cnn = New ADODB.ConnectionSet rst = New ADODB.Recordset
' Crear la conexión manualmente' Usar "Provider=Microsoft.ACE.OLEDB.12.0;" para ba ses de Access 2007With cnn
.ConnectionString = _"Provider=Microsoft.ACE.OLEDB.12.0;" & _"Data Source=" & sPathBase & ";"
.OpenEnd With
…
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 44
Opción 3:
(b) … continuación
' Indicarle de que tabla vamos a leer los datosrst.Open "SELECT vendedores.nombre, productos.nombre, municipios.nombre, ventas.fecha, ventas.unidadesVendidas FROM vendedores, productos, municipios, ventas", cnn, adOpenDynamic, adLockOptimistic
' Asignar el recordset al que estarán los datos conectados' Esto funciona igual que si se conectaran a un DataControl,' Por tanto no hay que preocuparse de actualizar el contenido, etc.Dim i As LongFor i = 0 To 4
Set Text1(i).DataSource = rstNext
' Asignar los campos' Asignar los camposText1(0).DataField = "vendedores.nombre"Text1(1).DataField = "productos.nombre"Text1(2).DataField = "municipios.nombre"Text1(3).DataField = "fecha"Text1(4).DataField = "unidadesVendidas"
' Asignar los nombres de los campos a las etiquetasLabel1(0).Caption = "Vendedor:"Label1(1).Caption = "Producto:"Label1(2).Caption = "Municipio:"Label1(3).Caption = "Fecha:"Label1(4).Caption = "Unidades vendidas:"
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 45
Opción 3:
(c) Para los botones el código básicamente es como en la alternativa
B. Se tiene que cambiar un poco porque ahora no trabajamos con
Adodc1 (data control) sino con el objeto recordset. Por lo tanto
tenemos que cambiar Adodc1 por la variable “rst” (recordset):Como en la alternativa B: Agregue a Sub form_load () el código siguiente y
cambie los nombres en los métodos correspondientes de manera adecuada:
Command1.Caption = "Inicio“
Command2.Caption = "Anterior“
Command3.Caption = "Siguiente“
Command4.Caption = "Final" Private Sub Command2_Click()
Private Sub Command1_Click()
rst.MoveFirst
End Sub
Private Sub Command4_Click()
rst.MoveLast
End Sub
rst.MovePrevious
If rst.BOF Then
rst.MoveFirst
End If
End Sub
Private Sub Command3_Click()
rst.MoveNext
If rst.EOF Then
rst.MoveLast
End If
End Sub
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 46
Opción 3:
… y el resultado es el mismo:
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 47
Tarea / Ejercicios (sin evaluación):
• Programar la conexión con la base de datos“AccessBD_DatosBasicos_0” (que se encuentra en moodle)1. Primero como indicado en la opción 2 y2. Luego como indicado en la opción 3 (sin data control)
• Colocar etiquetas y cajas de texto en un formulario para• Cedula• Nombres• Nombres• Apellidos• Telefono• Correo
• Colocar 4 botones para la navegación (Inicio, Anterior,Siguiente, Final)
• Realizar la programación para el formulario
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 48
Tarea / Ejercicio (sin evaluación):
• Colocar 4 botones para
• borrar (delete) un registro y
• Nuevo (nuevo registro) y
• Grabar (update) un registro (nuevo) y
• Refrescar (re- query)• Refrescar (re- query)
en el formulario de la base de datos “AccessBD_DatosBasicos_0” (el cual creamos en la tarea anterior) y realizar la programación
Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 49