Vous êtes sur la page 1sur 11

Elementos tcnicos Definicin Arquitectura tecnolgica El modelo de objetos ADO Histrico de versiones Ejemplos de cdigo Trabajando con el modelo

de objetos Prototipos Cadenas de conexin Herramientas de depuracin Informacin adicional de MDAC Instalacin de MDAC Cmo determinar qu versin de MDAC est instalada? Dnde encontrar informacin adicional? Referencias de los artculos citados Elementos tcnicos Definicin ADO en ActiveX Data Objets es un modelo de objetos de acceso a datos que se apoya sobre OLEDB. Permite dirigir los datos que vienen de bases de datos relacionales (SQL Server, Oracle), o de otras fuentes de datos no relacionales como ficheros de texto, fuentes de datos que no son de Microsoft, etc. Es un medio para acceder uniformemente a todos los tipos de datos. En cierta manera podemos decir que ODBC permite acceder a bases de datos relacionales, mientras que OLEDB permite el acceso a todos los tipos de datos, sean relacionales o no. Este modelo de objetos se ha introducido como modelo de acceso de datos para IIS. Sus principales caractersticas son las siguientes: Mnimo trfico en la red Thread Safe (soportando accesos concurrentes o multithread) Nmero mnimo de capas entre las aplicaciones y los datos. Facilidad de utilizacin: modelo de objetos automatizado Tiene en cuenta los conocimientos adquiridos por los desarrolladores sobre la otras tecnologas como DAO o RDO

Este documento esta relacionado con la versin 2.1 de ADO. Arquitectura tecnolgica Definicin: OLEDB OLEDB es una tecnologa que tiene como objetivo resolver ciertas restricciones de ODBC. Esta tecnologa autoriza el acceso a todo tipo de datos, permitiendo administrar el aspecto de tener distribuidas las fuentes de datos, y tiene en cuenta las restricciones de la web. Esta tecnologa tiene como objetivo reemplazar a la tecnologa ODBC. ADO es el modelo de objetos que permite simplificar el acceso a esta tecnologa. Definicin : Proveedor OLEDB u OLEDB Provider :

Un proveedor OLEDB implementa las interfaces OLEDB. Permite a un usuario OLEDB alcanzar todo tipo de fuentes de datos de una manera uniforme a travs de este juego de interfaces documentado. En cierto sentido, un proveedor OLEDB es similar a un driver ODBC que proporciona un mecanismo uniforme de acceso a los datos relacionales. Los proveedores OLEDB no slo proporcionan un mecanismo uniforme de acceso a los datos relacionales, si no que tambin a datos no relacionales. Adems, los proveedores OLEDB se construyen sobre la base del modelo COM (Component Objet Model) mientras que los drivers ODBC estn basados en una especificacin de APIs de C. Concretamente, los proveedores OLEDB, u OLEDB Providers son El El El El proveedor proveedor proveedor proveedor OLEDB OLEDB OLEDB OLEDB para para para para ODBC tambin llamado KAGERA o MSDASQL SQL Server, llamado SQLOLEDB Oracle llamado MSDAORA Jet, llamado Jolt

El modelo de objetos ADO El esquema siguiente muestra los objetos y las relaciones existentes entre los objetos y el modelo. Figura 2: Objetos y Colecciones del modelo de objetos ADO Los objetos Connection, Recordset y Command son los objetos ms significativos de este modelo. Clsicamente, una aplicacin las utiliza como:
Objeto o Coleccin Objeto Connection Objeto Command Objeto Recordset Coleccin Parameters Coleccin Errors Utilizacin Permite establecer las conexiones entre el cliente y el origen de datos Permite realizar los comandos, como las consultas SQL o las actualizaciones de una base de datos. Permite ver y manipular los resultados de una consutla Es utilizada cuando la consulta del objeto Command necesita los parmetros.

La coleccin Errors y el objeto Error se acceden a travs del objeto Connection, a no ser que se produzca error de proveedor . El objeto Error es diferente del objeto Err de VB, en la medida en que no contiene lo errores generados y definidos por el proveedor, por lo tanto, permite obtener informacin precisa sobre causa del error.

Coleccin Fields

La coleccin Fields y el objeto Field se utilizan a travs del objeto Recordset, una vez que ste contiene l datos.

Tabla 1: Descripcin de los objetos y colecciones La coleccin Properties proporciona la informacin sobre las caractersticas de los diferentes objetos Connection, Command, Recordset y Field. Cada objeto de Property es accesible a travs de la coleccin Properties de cada uno de estos objetos. Aunque ADO es un modelo del tipo jerrquico, los objetos de ADO, excepto Error, Field y Property pueden crearse de forma autnoma, es decir, sin hacer referencia al objeto relacionado. Esto es diferente de los objetos DAO y RDO, que requieren en la mayora

de los casos la creacin del objeto Parent (por ejemplo, un objeto DAO.Connection necesita un objeto DAO.Workspace para poder crearse). ADO es un modelo de objetos que permite una gran flexibilidad al programador. Por consiguiente, hay distintas posibilidades para lograr la misma tarea. Por ejemplo, para ejecutar una consulta, es posible usar el mtodo Execute del objeto Command o bien el del objeto Connection. En resumen, este es un diagrama que muestra las relaciones entre los diferentes objetos que constituyen ADO: Histrico de versiones ADO se proporciona con MDAC que est disponible en la direccin: http://microsoft.com/data Las versiones existentes son las siguientes: MDAC MDAC MDAC MDAC MDAC MDAC MDAC MDAC MDAC MDAC MDAC 1.5a 1.5b 1.5c 1.5d 2.0 2.0.3002.20 2.0 SP1 2.0.3002.23 2.0 SP2 2.0.3002.28 2.1 2.1 SP1 2.1.1.3711.11 2.1 SP2 2.1.2.4202.3 2.5 actualmente en versin beta.

En MSDN, existe un artculo sobre las diferentes versiones, hasta la 2.0. Este artculo se titula: "Redistributing Microsoft Data Access Components" Este documento est disponible en la direccin: http://www.msdn.microsoft.com/library/techart/msdn_redistmdac.htm Para ms informacin acerca de este tema, consulte el captulo titulado "Cmo determinar qu versin de MDAC est instalada?" ms adelante en este documento. Las funcionalidades principales aportadas por ADO 2.x respecto de ADO 1.5 son las siguientes: Los eventos generados en los objetos Connection y Recordset, son los que permiten soportar los modos asncronos. (Conexin asncrona, ejecucin de comandos en modo asncrono y la recuperacin de datos en modo asncrono) Aunque es posible utilizar los recordsets de forma desconectada con ADO 1.5, no es posible guardarlos bajo la forma de archivo reutilizado en el momento de otro lanzamiento de la aplicacin, por ejemplo. ADO 2.0 implementa una propiedad Persist-Format y un mtodo Save en el objeto Recordset, lo que

permite proteger en el disco un Recordset creado con la opcin adLockBatchOptimistic. Esto se utiliza frecuentemente con RDS, en las aplicaciones web. Las funcionalidades de ordenar y buscar implementadas en el objeto Recodset. Posibilidad para crear algn recordset independiente: Con ADO 2.0, es posible crear un objeto Recordset, manipularlo y usarlo, independientemente de toda fuente de datos. El programador puede agregar campos a este recordset y agregar o modificar los datos

Ejemplo de cdigo Trabajando con el modelo de objetos Para utilizar ADO usansdo early binding en un programa VB o VBA, deber consultar la referencia: Microsoft ActiveX Data Object x.x Library eligiendo en el men Projecto, Referencias en la interfaz de VB o en el editor VBA. Prototipos En MSDN, existe un artculo que se titula: "What Are the Objects in the ADO Object model" y que est disponible en la web en la direccin: http://msdn.microsoft.com/library/techart/msdn_workshp1.htm Vamos a ver a continuacin dos ejemplos para: Abrir y cerrar una conexin con una base de datos SQL Server usando el proveedor por defecto que es el proveedor de OLEDB para ODBC
Sub ConnectionExample1() Dim cn As ADODB.Connection Set cn = New ADODB.Connection ' Abrir la conexin, especificando el nombre del origen de datos, ' id de usuario, y contrasea. cn.Open "DSNPubs", "sa", "" ' Si la conexin est abierta, lo muestra. If cn.State = adStateOpen Then Debug.Print "Conexin abierta." End If ' Cerrar la conexin. cn.Close End Sub

Abrir y cerrar una conexin con una base de datos SQL Server usando el proveedor OLEDB para SQL Server que es el proveedor recomendado
Private Sub ConnectionExemple2() Dim cn As New ADODB.Connection cn.Provider = "SQLOLEDB"

cn.Open "Data Source=MySQLServerName;Initial Catalog=pubs;", "sa", "" ' Si la conexin est abierta, lo muestra. If cn.State = adStateOpen Then Debug.Print "Conexin abierta." End If ' Cerrar la conexin. cn.Close Set cn = Nothing End Sub

Abrir y cerrar un Recordset


Sub RecordsetExample() Dim rs As New ADODB.Recordset ' Abrir el recordset, especificando la sentencia SQL ' y la cadena de conexin. rs.Open "Select * from titles", "DSN=pubs;UID=sa" ' Bucle a travs del recordset e impresin del primer campo. Do While Not rs.EOF Debug.Print rs(0) rs.MoveNext Loop ' Cerrar el recordset. rs.Close End Sub

Usar el mtodo Execute del objeto Command para ejecutar una consulta de tipo texto
Sub CommandExample() Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset ' Establecer el comando conexin usando una cadena de conexin. cmd.ActiveConnection = "DSN=pubs;UID=sa" ' Establecer el comando texto, y especificar que es ' una sentencia SQL. cmd.CommandText = "Select * from titles" cmd.CommandType = adCmdText ' Crear un recordset. Set rs = cmd.Execute() ' Bucle a travs del recordset e impresin del primer campo. Do While Not rs.EOF Debug.Print rs(0) rs.MoveNext Loop ' Cerrar el recordset. rs.Close End Sub

Usar el mtodo Execute del objeto Command para ejecutar un procedimiento de almacenado
Sub ParameterExample() Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset Dim prm As ADODB.Parameter

' Establecer el comando conexin usando una cadena de conexin. cmd.ActiveConnection = "DSN=pubs;uid=sa" ' Establecer el comando texto, y especificar que es ' una sentencia SQL. cmd.CommandText = "byroyalty" cmd.CommandType = adCmdStoredProc ' Establecer un nuevo parmetro para el procedimiento guardado. Set prm = cmd.CreateParameter("Royalty", adInteger, adParamInput, , 50) cmd.Parameters.Append prm ' Crear un recordset. Set rs = cmd.Execute ' Bucle a travs del recordset e impresin del primer campo. Do While Not rs.EOF Debug.Print rs(0) rs.MoveNext Loop ' Cerrar el recordset. rs.Close End Sub

Almacenar los resultados de una consulta Access en un fichero Excel


Private Sub Command1_Click() Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\bd1.mdb" cn.Execute "Select * into [Excel 8.0]; Database=c:\Test1.xls;Hdr=Yes].[Sheet3] From Clients" cn.Close Set cn = Nothing End Sub ' Explorar la coleccin Errors. Sub ErrorExample() Dim cn As ADODB.Connection Set cn = New ADODB.Connection On Error GoTo AdoError ' Abrir la conexin usando un DSN que no existe. cn.Open "MissingDSN", "sa", "" Exit Sub AdoError: Dim Errs As ADODB.Errors Dim errLoop As Error Dim strError As String ' Bucle hasta el objeto Error en la ' coleccin Errors y muestra las propiedades. Set Errs = cn.Errors For Each errLoop In Errs Debug.Print errLoop.SQLState Debug.Print errLoop.NativeError Debug.Print errLoop.Description Next End Sub

Enumerar los campos (nombre, tipo y valor) de un recordset

Sub FieldExample() Dim rs As ADODB.Recordset Dim fld As ADODB.Field Set rs = New ADODB.Recordset ' Abrir el recordset, especificando la sentencia SQL ' y la cadena de conexin. rs.Open "Select * from authors", "DSN=pubs;UID=sa" Debug.Print "Fields in Authors Table:" & vbCr ' Bucle hasta el objeto Field en la ' Coleccin Fields de la tabla y muestra las propiedades. For Each fld In rs.Fields Debug.Print "Name: " & fld.Name & vbCr & _ "Type: " & fld.Type & vbCr & _ "Value: " & fld.Value Next fld ' Cierre del recordset. rs.Close End Sub

Mostrar los valores de ciertas propiedades de una conexin (el curso de la coleccin de Properties)
Sub PropertyExample() Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset ' Abrir la conexin, especificando el nombre del origen de datos, ' id del usuario, u contrasea. cn.Open "pubs", "sa" ' Establecer el comando conexin usando una cadena de conexin. Set cmd.ActiveConnection = cn ' Establecer el comando texto, especificando que es una sentencia SQL. cmd.CommandText = "Select * from titles" cmd.CommandType = adCmdText ' Crear el recordset. Set rs = cmd.Execute() ' Muestra la propiedad ConnectionTimeout de la conexin. Debug.Print cn.Properties("Connect Timeout") ' Muestra la propiedad CommandTimeout del comando. Debug.Print cmd.Properties("Command Time out") ' Muestra la propiedad Updatability del recordset. Debug.Print rs.Properties("Updatability") ' Cierra el recordset. rs.Close End Sub

Obtener la lista de tablas de una base de datos: para conseguir informacin sobre la estructura de la base de datos se podr usar el mtodo de OpenSchema del objeto Connection (Artculo Q186246 , http://support.microsoft.com/default.aspx? scid=kb;en-us;Q186246
Public Sub OpenSchemaX() Dim cnn1 As ADODB.Connection Dim rstSchema As ADODB.Recordset

Dim strCnn As String Set cnn1 = New ADODB.Connection strCnn = "Provider=sqloledb;" & _ "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; " cnn1.Open strCnn Set rstSchema = cnn1.OpenSchema(adSchemaTables) Do Until rstSchema.EOF Debug.Print "Table name: " & _ rstSchema!TABLE_NAME & vbCr & _ "Table type: " & rstSchema!TABLE_TYPE & vbCr rstSchema.MoveNext

Loop rstSchema.Close cnn1.Close End Sub

Las cadenas de conexin En MSDN, en el artculo Q193332 titulado: "FILE:MDACCON.EXE Using Connection Strings w/ ODBC/OLEDB/ADO/RDS" se encuentran en todas las cadenas de conexin de proveedores diferentes, o drivers ODBC con o sin DSN. Este artculo est disponible en la web: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q193332. Despus de haber visto este artculo es suficiente con copiar y pegar la cadena de conexin que necesita para su aplicacin. Trucos: Si necesita escribir una cadena de conexin, existe una manera de generarla con el asistente de creacin de una conexin de datos. Se puede usar esta herramienta de creacin de conexiones de datos en VB: Utilize el men Ver y seleccione Ventana de la vista Datos Cree un Entorno de datos haciendo clic en el botn derecho en la ventana de datos. En la ventana Entorno de datos, hacer clic en el botn derecho sobre Connection1 para ver las caractersticas de la conexin (el proveedor, DSN, las propiedades especficas). Probar la conexin antes de hacer clic en el botn de Aceptar Entrar en la ventana de propiedades y seleccionar el objeto Connection1: La propiedad DataSource contiene la cadena de conexin necesaria.

Tambin puede usar esta herramienta de creacin de datos en el escritorio: Haga Clic en el escritorio, seleccionar Nuevo Microsoft Data Link Haga Clic con el botn derecho sobre el objeto creado en Propiedades. Vea las caractersticas de la conexin, y prubelas antes de validarlas. Abria Notepad, y desplcese para cambiar de sitio el objeto Microsoft Data Link creado en el escritorio en Notepad. Notepad contiene la cadena de conexin requerida.

Herramientas de depuracin A menudo, para problemas de depuracin de ADO, la clsica depuracin de VB no es suficiente. Algunas herramientas proporcionadas permiten disponer de las trazas de lo que sucede entre el PC cliente y el servidor. Trazas ODBC: Si se usa el proveedor OLEDB para ODBC , puede ser til disponer de las trazas de ODBC. Para ello, vaya a Configuracin, en el Panel de control "Fuentes de datos de datos ODBC", y en la etiqueta "Seguimiento" haga clic en el botn "Iniciar". Se puede especificar la ruta y el nombre del archivo de registro dnde se almacenarn las trazas. El fichero generado es un fichero de texto. Trazas OLEDB: Cuando se usa ODBC, es posible poner en el lugar un sistema de trazas de ODBC, no existe una herramienta equivalente para rastrear claramente las acciones realizadas por ADO u OLEDB. Abriendo y cerrando la conexin con un servidor SQL Server: Existen herramientas que cumplen con el estndar de SQL Server que permite visualizar qu es lo que pasa en el servidor. SQLTrace est includa en SQL Server 6.5, o el generador de perfiles entregado con SQL Server 7. Estas herramientas pueden usarse para visualizar las aperturas y cierres de conexiones generadas por un programa cliente; por ejemplo, uno se conecta al servidor, y crea un filtro para analizar que pasa entre el cliente y el servidor. Anlisis de tramas entre el cliente y el servidor: Para visualizar paquetes de datos en el trnsito entre el cliente y el servidor, se puede instalar y usar una herramienta llamada Network Monitor. Una versin limitada se proporciona en Windows NT. Es suficiente con instalarla desde Configuracin, en el panel de control, en donde el programa se representa con un icono llamado "Red" y en la etiqueta Servicios haga clic en el botn "Agregar" para agregar lo siguientes Servicios: Agente y herramientas de monitor de red (Network Monitor Tools and Agent) Una versin ms completa se entrega con el producto SMS (Microsoft Systems Management Server). Informacin adicional de MDAC Instalacin de MDAC Descargar MDAC desde la direccin: http://microsoft.com/data Cmo determinar qu versin de MDAC esta instalada?

De varias formas: Un documento acerca de las versiones anteriores (hasta la versin 2.0) est disponible en la direccin: http://www.msdn.microsoft.com/library/techart/msdn_redistmdac.htm Podr consultar las Release Manifests, o el artculo Q243069, disponible en la direccin: http://support.microsoft.com/default.aspx?scid=kb;en-us;q243069, para saber cual es la versin instalada escogiendo algunas DLL y verificado su versin. Esta tabla le podr ayudar a encontrar las Release Manifests segn la versin de MDAC:
URLS http://support.microsoft.com/default.aspx?scid=http://microsoft.com/data/MDAC21info/MDAC21sp2manifest.htm http://support.microsoft.com/support/kb/articles/Q238/2/39.ASP http://support.microsoft.com/default.aspx?scid=http://microsoft.com/data/MDAC21info/MDAC21GAmanifest.htm

NOMBRE MDAC 2.1 SP2 2.1.2.4202.3 MDAC 2.1 SP1 2.1.1.3711.11 MDAC 2.1

http://support.microsoft.com/default.aspx?scid=http://microsoft.com/data/mdac21info/21035132manifest.htm http://support.microsoft.com/support/kb/articles/Q232/0/53.ASP http://support.microsoft.com/default.aspx?scid=http://microsoft.com/data/download/20sp2readme.htm http://support.microsoft.com/default.aspx?scid=kb;en-us;Q222129

MDAC 2.0 SP2 2.0.3002.28 MDAC 2.0 SP1 2.0.3002.23 MDAC 2.0 ou 2.0.3002.20

http://support.microsoft.com/default.aspx?scid=http://microsoft.com/data/download/20sp2readme.htm

Tabla 2 : MDAC y Release Manifests Tambin puede descargar una utilidad llamada "Component Checker" en http://microsoft.com/data

Dnde puede encontrar de informacin adicional? Archivos leame.txt: Recuerde leer siempre los Readmes proporcionados con los productos. Trabajos: Puede consultar por ejemplo ADO 2.0 Programmer's Reference WROX ADO 2.1 Programmer's Reference WROX Hitchhiker's Guide VB and SQL Server Microsoft Press Professional Visual Basic Databases WROX Referencias a artculos tcnicos citados "The ADO Object Model" (Artculos tcnico) Para navegar en el modelo de objetos :

Microsoft ADO Programmer's Reference (MSDN\Platform SDK\Data Access Services\Microsoft Data Access 2.1 SDK\Microsoft ActiveX Data Objects\ Microsoft ADO Programmer's Reference\ADO API Reference Versiones de MDAC y de los archivos: "Redistributing Microsoft Data Access Components" http://www.msdn.microsoft.com/library/techart/msdn_redistmdac.htm Ejemplos de cdigo: "What Are the Objects in the ADO Object model" http://msdn.microsoft.com/library/techart/msdn_workshp1.htm Cadenas de conexin: Q193332 : http://support.microsoft.com/default.aspx?scid=kb;en-us;Q193332 Uso del mtodo OpenSchema en VB: Q186246 : http://support.microsoft.com/default.aspx?scid=kb;en-us;Q186246

Vous aimerez peut-être aussi