conexion vb con access

49
Microsoft Office - Access 2007™ Practicas Escuela de Ingeniería de Antioquia EIA Escuela de Ingeniería de Antioquia EIA Primer semestre 2009 Christian Lochmueller Practicas – Base de Datos y Sistemas de Información © 2009 by C. Lochmueller Pagina 1

Upload: sargantanet

Post on 31-Mar-2015

1.616 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Conexion VB con Access

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

Page 2: Conexion VB con Access

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

Page 3: Conexion VB con Access

¿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

Page 4: Conexion VB con Access

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

Page 5: Conexion VB con Access

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

Page 6: Conexion VB con Access

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

Page 7: Conexion VB con Access

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

Page 8: Conexion VB con Access

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

Page 9: Conexion VB con Access

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

Page 10: Conexion VB con Access

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

Page 11: Conexion VB con Access

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

Page 12: Conexion VB con Access

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

Page 13: Conexion VB con Access

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

Page 14: Conexion VB con Access

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

Page 15: Conexion VB con Access

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

Page 16: Conexion VB con Access

3. Resultado de la asignación

Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 16

Page 17: Conexion VB con Access

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

Page 18: Conexion VB con Access

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

Page 19: Conexion VB con Access

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

Page 20: Conexion VB con Access

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

Page 21: Conexion VB con Access

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

Page 22: Conexion VB con Access

7. Coloque 4 controles (botones) para

navegar entre los registros

Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 22

Page 23: Conexion VB con Access

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

Page 24: Conexion VB con Access

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

Page 25: Conexion VB con Access

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

Page 26: Conexion VB con Access

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

Page 27: Conexion VB con Access

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

Page 28: Conexion VB con Access

… 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

Page 29: Conexion VB con Access

… 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

Page 30: Conexion VB con Access

… 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

Page 31: Conexion VB con Access

… 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

Page 32: Conexion VB con Access

… 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

Page 33: Conexion VB con Access

… 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

Page 34: Conexion VB con Access

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

Page 35: Conexion VB con Access

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

Page 36: Conexion VB con Access

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

Page 37: Conexion VB con Access

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

Page 38: Conexion VB con Access

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

Page 39: Conexion VB con Access

Opción 2:

… y el resultado es el mismo

Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 39

Page 40: Conexion VB con Access

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

Page 41: Conexion VB con Access

Opción 2:

… y el resultado es el mismo:

Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 41

Page 42: Conexion VB con Access

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

Page 43: Conexion VB con Access

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

Page 44: Conexion VB con Access

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

Page 45: Conexion VB con Access

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

Page 46: Conexion VB con Access

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

Page 47: Conexion VB con Access

Opción 3:

… y el resultado es el mismo:

Practicas – Base de Datos y Sistemas de Información © 2009 by C. LochmuellerPagina 47

Page 48: Conexion VB con Access

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

Page 49: Conexion VB con Access

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