Emmanuel Sánchez Ramírez

Universidad  de  Colima

 

Tema de Investigación para la

Memoria para derecho a ordinario.

 

Facultad de Telemática

 

DAO en Visual Basic

La información aquí presentada se

refiere a:

-Microsoft Visual Basic for Windows, versión 4.0

Introducción.

En este artículo vamos a ver un

modelos de acceso a Bases de Datos:

    
-     El modelo DAO (Data Access Object). 
 
DAO (Objetos de acceso a datos) fue la 
primera interfaz orientada a objetos que 
exponía el motor de base de datos Microsoft 
Jet (empleado por Microsoft Access) y 
permitía a los programadores de Visual Basic 
usar ODBC para conectar directamente con 
tablas Access, así como con otras bases de 
datos. DAO es apropiado para el desarrollo
 de aplicaciones dentro de un único sistema 
o para despliegues locales de pequeño 
tamaño.

MÁS INFORMACIÓN

DAO (Data Access Object) ? Fue diseñado

parapermitir a los desarrolladores accesar el

motor de la base de datos Jet común a VB y

Access. DAO provee un camino relativa-

mente fácil de tomar para la migración de

MDB?s de Jet hacia bases de datos ODBC.

 

El modelo DAO (Objetos de Acceso a Datos)

viene definido como sigue:

   Podemos utilizar el modelo de Objetos de 
Accesoa Datos para manipular bases de 
datos bien en el modelo nativo del motor
 de acceso JET (.MDB) o bien en cualquier 
otro formato ISAM (Fox, dBASE, Excel, 
Btrieve, Paradox, y Text). Adicionalmente, 
es posible utilizar el motor JET a la hora 
deacceder a Microsoft SQL Server o a 
cualquier otra base de datos que disponga 
de un driver de ODBC, con el mismo código 
DAO.
                 DBEngine
Es el objeto de nivel más alto en el 
modelo de objeto DAO el cual contiene 
y controla todos los otros objetos en 
la jerarquía de los objetos del DAO. 
No puede crear objetos DBEngine 
adicionales y el objeto DBEngine no 
es un elemento de ninguna colección.
                   Workspace
	Define una sesión para un usuario. 
Contiene las bases de datos abiertas y 
proporciona mecanismos para realizar 
transacciones y admite asegurar 
Workspace. 
Ademas cada Workspace tiene un área 
de trabajo aislada de los demasesto 
es importante por que aisla las 
transacciones de cada Workspace para 
evitar interferencia entre bloques o 
transacciones simultáneas.
            Databases
	Este objeto nos representa una 
base de datos abierta en la que 
ademas nosotros podemos manipular la 
base de datos abierta y poedmos 
tambien manejar sus métodos y 
propiedades.
            Recordset
	Representa los registros que se 
generan al ejecutar una consulta.
Utilice estos objetos para datos en 
una base de datos a nivel de registro.

Tener acceso a datos remotos con

DAO mediante Jet

Esta sección describe la funcionalidad de

DAO cuando se conecta con el motor Jet.

El motor de base de datos Microsoft Jet es

un sistema de administración de bases de

datos independiente que puede procesar

consultas y enviar consultas a servidores

remotos según sea necesario.

El acceso a Jet mediante DAO agrega la

facilidad de desarrollo de Microsoft Visual

Basic proporcionando un modelo de

desarrollo orientado a objetos y el acceso

a controles enlazados a datos.

 

Mediante el control Data, DAO o Microsoft

Access puede crear código virtualmente

independiente de la base de datos, ya que

Jet realiza automáticamente todas las

traducciones de sintaxis y manipulación de

datos. Por ejemplo, puede escribir una

aplicación que tenga acceso a diferentes

tipos de orígenes de datos sin hacer

referencia a las características específicas

del servidor remoto. Dichos orígenes de

datos podrían ser bases de datos de

Open Database Connectivity (ODBC,

Conectividad abierta de bases de datos),

como Microsoft SQL Server; bases de

datos con formato Index Sequential Access

Method (ISAM), como Microsoft FoxPro,

Paradox o dBASE; u otras bases de

datos Jet.

 

Al contrario que la mayoría de los motores

de bases de datos independientes, Jet puede

realizar combinaciones heterogéneas entre

varias bases de datos diferentes. Si va a

trabajar con datos departamentales

almacenados en formato ISAM y tiene

que combinarlos con datos de un servidor

centralizado, ésta es una característica

esencial.

 

DIFERENCIAS CON RDO

Estas son las diferencias entre DAO y RDO:

    - El modelo DAO se emplea con bases de 
datos ISAM, Access y ODBC databases. El 
modelo RDO se halla diseñado únicamente 
para bases de datos ODBC, y ha sido
 optimado para su uso contra Microsoft  
SQL Server 6.0 y Oracle. 
    - El modelo RDO puede tener mayor 
rendimiento, ya que todo el  proceso se 
lleva a cabo en el servidor y no en nuestra
 máquina. 
      Con el modelo DAO parte del proceso se 
lleva a cabo en nuestra  máquina local por
lo que con este modelo, el rendimiento 
puede  no ser tan bueno. 
    - El modelo DAO emplea el motor del Jet. 
Sin embargo, el RDO no emplea el motor del 
JET, sino el motor ODBC del servidor. 
    - El modelo RDO es capaz de llevar a 
cabo queries síncronas o asíncronas. El DAO 
tiene limitaciones a la hora de ejecutar este  
tipo de queries. 
    - El modelo RDO puede trabajar con 
cursores complejos, los cuales  se 
encuentran limitados en el DAO. 
 

PRECAUCIÓN: CUALQUIER UTILIZACIÓN POR

SU PARTE DEL CÓDIGO INCLUIDO EN ESTE

ARTÍCULO SE HARÁ A SU CUENTA Y RIESGO.


 

 


Última revisión: 5-Julio-2000
© 2000 Microsoft Corporation.

Todos los derechos reservados.



 

PROGRAMA DE EJEMPLO

El siguiente ejemplo puede llevar a cabo el mismo tipo

de operaciones con DAO que con RDO.

 

Compararemos los objetos DBEngine, Workspace,

Database, y Recordset del modelo DAO con los

objetos rdoEngine, rdoEnvironment, rdoConnection,

y rdoResultset del modelo RDO.


   1. Creamos un nuevo proyecto en Visual Basic. 
Form1 se crea por   defecto. 

   2. Añadimos dos botones de comando al Form1. 

   3. Pegamos el siguiente código en la sección de 
Declaraciones  Generales del Form1. 

         Option Explicit 
         Private Sub Command1_Click() 
       
        ' El siguiente código se utiliza con DAO para 
        ' abrir una base  de datos ODBC, procesa una 
        ' query, y devuelve una serie de  records.
        'Este código establece una conexión "DSN-less" 
           
            Dim ws As Workspace
            Dim db As Database
            Dim rs As Recordset
            Dim sql As String
            sql = "Select * From titles"
            Set ws = DBEngine.Workspaces(0)
            Dim cnStr As String
            cnStr = "driver={SQL Server};server=mysvr;" 
            & _ "database=pubs;uid=myuid;pwd=mypwd" 
            Set db = ws.OpenDatabase(Name:="PUBS", 
            Exclusive:=False, _ReadOnly:=False, 
            Connect:=cnStr) 
            Set rs = db.OpenRecordset(sql, 
            dbOpenDynaset)
            rs.MoveLast
            MsgBox "DAO: " & Str(rs.RecordCount) & 
            " filas devueltas."
            rs.Close
            db.Close
            ws.Close 
         End Sub 
         Private Sub Command2_Click()
         'El siguiente código se utiliza con DAO para 
         'abrir una base de datos ODBC, procesa una 
         'query asíncrona, y devuelve una serie de 
         'records.
         'Este código establece una conexión 
         '"DSN-less" 
            Dim en As rdoEnvironment
            Dim cn As rdoConnection
            Dim rs As rdoResultset
            Dim sql As String
            sql = "Select * From titles"
            Set en = rdoEngine.rdoEnvironments(0) 
            With en 
               .CursorDriver = rdUseOdbc 
            End With 
            Dim cnStr As String 
            cnStr = "driver={SQL Server};server=mysvr;" 
            & _ "database=pubs;uid=myuid;pwd=mypwd" 
            Set cn = en.OpenConnection(DSName:="", _
                Prompt:=rdDriverNoPrompt, 
                 Connect:=cnStr) 
            Set rs = cn.OpenResultset(Name:=sql, 
           Type:=rdOpenKeyset, _
                Option:=rdAsyncEnable) 
            While rs.StillExecuting 
               DoEvents 
            Wend 
            rs.MoveLast
            MsgBox "RDO: " & Str(rs.RowCount) & 
             " filas devueltas."
            rs.Close
            cn.Close
            en.Close 
         End Sub 
   4. Como vemos, es necesario que el usuario 
      cambie en los métodos  OpenConnection y 
      OpenDatabase, a sus correspondientes DRIVER, 
      SERVER, DATABASE, UID, y PWD. 
      También es necesario modificar la sentencia SQL 
      en el evento  Command1_Click para que coincida 
      con nuestra fuente SQL. 
   5. Ejecute el programa o pulse F5. 
   6. Podemos pulsar en el botón Command1 para 
       ejecutar el modelo DAO,  o el Command2 para 
       ejecutar el modelo RDO. 
      Note que el modelo RDO lleva a cabo la query 

      asíncronamente.

 

ID Artículo: DAO01

Última revisión:
5-JULIO-2000

Ofrecido por: Emmanuel Sánchez Ramírez