Gamarod JavaScript - Rutinas JavaScript Efectos javascript Codigos javascript Rutinas JavaScript

Programacion




Todo sobre Ado - Desarrollo de aplicaciones de acceso a datos para Windows CE

Desarrollo de aplicaciones de acceso a datos para Windows CE con ADOCE






En este documento se ofrece una introducción a los objetos de datos ActiveX (ADO) de Microsoft y a los objetos de datos ActiveX para Microsoft Windows CE (ADOCE), así como una explicación sobre el uso de ADOCE y sobre los objetos Recordset y Field.

Introducción

Con los objetos de datos ActiveX (ActiveX Data Objects, ADO) de Microsoft, las aplicaciones clientes pueden obtener acceso y manipular datos de un servidor de base de datos a través de un proveedor de base de datos OLE. Los objetos de datos ActiveX para Microsoft Windows CE (ADOCE) proporcionan un subconjunto de ADO para Windows CE. Al habilitar el acceso a bases de datos almacenadas de forma local en un dispositivo, ADOCE agrega nueva funcionalidad de base de datos al sistema operativo Windows CE y proporciona sincronización de datos a una base de datos de red.

Puede utilizar ADOCE con la versión 1.2 de su PC de bolsillo (H/PC) y su PC de mano. En este artículo se proporciona una introducción a ADO y ADOCE, se describen los objetos Recordset y Field, y se explica la forma de utilizar ADOCE.

Introducción a ADO y ADOCE

ADO es la interfaz estratégica y de alto nivel de Microsoft para todos los tipos de datos. Una aplicación que utilice ADO puede obtener acceso y manipular datos de un servidor de base de datos a través de un proveedor de base de datos OLE. Las principales ventajas de ADO son su facilidad de uso, su gran velocidad, su escasa utilización de memoria y el poco espacio que ocupa en disco. ADO proporciona un acceso a los datos constante y de alto rendimiento para crear un cliente de base de datos para el usuario o un objeto empresarial del nivel medio con una aplicación, una herramienta, un lenguaje o incluso un explorador de Internet.

ADO es el componente central de la estrategia de Acceso a datos universal de Microsoft. Acceso a datos universal proporciona un acceso de alto rendimiento a diversos orígenes de información, tanto relacionales como no relacionales, y una interfaz de programación fácil de utilizar que es independiente de la herramienta y del lenguaje. Estas tecnologías permiten a las empresas integrar orígenes de datos distintos, crear soluciones de fácil mantenimiento y utilizar las herramientas, las aplicaciones y los servicios de plataforma que prefieran.

ADOCE proporciona un subconjunto de ADO para el sistema operativo Windows CE que incluye la implementación de los objetos Recordset y Field. Al habilitar el acceso a bases de datos almacenadas de forma local en un dispositivo, ADOCE agrega nueva funcionalidad de base de datos al sistema operativo Windows CE y proporciona sincronización de datos a una base de datos de red. ADOCE proporciona acceso al motor de base de datos de Windows CE desde cualquier entorno preparado para COM, como el Kit de herramientas de Windows CE para Microsoft Visual Basic® versión 6.0.

ADOCE proporciona las características siguientes:

  • Sincronización automática en los dos sentidos con el host de escritorio.

  • Nuevos tipos de datos: dobles y booleanos (en relación a la base de datos de Windows CE).

  • Compatibilidad con SQL. La avanzada compatibilidad con SQL incluida en ADOCE es un subconjunto de SQL ANSI (American National Standards Institute). Agrega nueva funcionalidad de motor de base de datos que proporciona nombres de campos, varias claves de ordenación, filtrado complejo, creación de tablas e índices, eliminación y edición, así como capacidades de combinación entre varias tablas.

  • Familiar acceso con el formato recordset.nombre de campo.

  • Compatibilidad con ADO de escritorio.
Objetos Recordset y Field

El control ADOCE tiene dos objetos: Recordset y Field. Un recordset es una tabla de base de datos virtual cuyos campos y filas corresponden a un subconjunto de los campos y las filas de una tabla de base de datos real en el dispositivo basado en Windows CE. Cuando se agrega, elimina o modifica información en una fila del recordset, puede transferir dichos cambios a las partes correspondientes de la tabla. 

Si se modifican los datos del recordset, éste almacena los cambios en memoria, lo que permite cancelarlos antes de actualizar la base de datos subyacente. ADOCE no admite actualizaciones por lotes. Sólo una fila cada vez puede tener datos modificados pero no enviados a la base de datos subyacente.

En la tabla siguiente se muestran los métodos que admite el objeto Recordset.

Método Descripción
AddNew Inserta una nueva fila en el recordset.
CancelUpdate Cancela los cambios almacenados en memoria.
Clone Duplica un recordset.
Close Cierra un recordset.
Delete Elimina una fila del recordset.
GetRows Devuelve los datos almacenados en el recordset.
Move Cambia el puntero a la fila activa del recordset.
MoveFirst Activa la primera fila.
MoveLast Activa la última fila.
MoveNext Mueve el puntero de fila activa a la siguiente fila.
MovePrevious Mueve el puntero de fila activa a la fila anterior.
Open Define y abre recordsets; ejecuta comandos SQL.
Supports Determina si el recordset admite determinadas características.
Update Envía los cambios almacenados en memoria y actualiza la tabla real.

En la tabla siguiente se muestran las propiedades que admite el objeto Recordset.

Propiedad Descripción
AbsolutePage Especifica a qué página se debe pasar para el nuevo registro activo.
AbsolutePosition Especifica la posición ordinal del registro activo de un objeto Recordset.
ActiveConnection Establece la conexión de base de datos activa. Siempre es una cadena de longitud cero (""). Para un equipo H/PC que ejecute el software Pro Edition, es el nombre del archivo cdb.
BOF Indica si la posición del registro activo está antes del primer registro de un objeto Recordset.
Bookmark Especifica un marcador para identificar de forma única un registro de un objeto Recordset.
CacheSize Especifica el número de registros de un objeto Recordset que se almacenan localmente en memoria caché.
CursorType Indica el tipo de cursor utilizado en un objeto Recordset.
EditMode Indica el estado de la edición del objeto activo.
EOF Indica que la posición del registro activo está después del último registro de un objeto Recordset.
LockType Indica los tipos de bloqueos colocados en los registros durante la edición.
PageCount Indica cuántas páginas de datos contiene el objeto Recordset.
PageSize Indica cuántos registros componen una página del recordset.
RecordCount Devuelve un valor de tipo Long que indica el número actual de registros en un objeto Recordset.
Source Indica el origen de los datos de un objeto Recordset: instrucción SQL o nombre de tabla.

Los objetos Field no se deben crear directamente, ya que sólo existen en el contexto de un recordset existente. Utilice la función Set para hacer referencia a un objeto Field determinado. El objeto Field no tiene métodos ni eventos. A excepción de la propiedad Value, todas las propiedades son de sólo lectura.

En la tabla siguiente se muestran las propiedades que admite el objeto Field.

Propiedad Descripción
ActualSize Indica la longitud real, en bytes, del valor de un campo.
Attributes Devuelve un valor que indica una o más características de un objeto Field.
DefinedSize Se utiliza para determinar la capacidad de datos de un objeto Field. Devuelve el tamaño definido, en caracteres, del campo Compare with ActualSize, el cual devuelve el tamaño en bytes.
Name Devuelve el nombre de un campo.
Type Indica el tipo de datos de un objeto Field.
UnderlyingValue Indica el valor actual de un objeto Field en la base de datos.
Value (predeterminado) Indica el valor actual de un objeto Field en el recordset.

La colección Fields contiene un objeto Field por cada columna del recordset. Puede hacer referencia a un campo determinado por nombre o por índice. La colección Fields admite la propiedad Count, la cual indica el número de campos de un recordset.

Uso de ADOCE

Con ADOCE, puede mover bases de datos al dispositivo basado en Windows CE y desde él. Asimismo, puede crear y obtener acceso a bases de datos del dispositivo y de un emulador en un equipo de escritorio. En las secciones siguientes se describe la forma de utilizar ADOCE y se muestran ejemplos. Tenga en cuenta que el archivo ControlConsts.bas se instala en \Archivos de programa\Microsoft Visual Studio\VB98\VBCE\Samples. Este archivo contiene las definiciones de las enumeraciones de ADOCE y de otros controles.

Software necesario

Para utilizar el control ADOCE, es necesario el software siguiente:

  • Servicios para Microsoft Windows CE versión 2.1 o posterior

  • Microsoft Windows NT® Workstation versión 4.0, o bien Windows 95 o 98

  • Plataforma SDK de Microsoft Windows CE para el dispositivo que utilice

  • Microsoft Visual Basic, Edición profesional versión 6.0, sistema de desarrollo o Microsoft Visual Basic, Edición empresarial versión 6.0

  • Kit de herramientas de Microsoft Windows CE para Visual Basic versión 6.0

Nota   El control ADOCE se incluye en el Kit de herramientas de Windows CE para Visual Basic.

Movimiento de bases de datos entre el escritorio y el dispositivo

Puede mover tablas de base de datos entre un equipo de escritorio y un dispositivo basado en Windows CE. Las bases de datos almacenadas en el equipo de escritorio tienen el formato de Microsoft Access®. Las bases de datos almacenadas en el dispositivo se guardan con formato estándar de tablas basadas en Windows CE, con información adicional en las tablas de sistema ADOCE.

Para copiar una base de datos del equipo de escritorio en el dispositivo

  1. Conecte el dispositivo al equipo de escritorio y abra la ventana Dispositivos móviles.

  2. En la ventana Dispositivos móviles, seleccione Importar tablas de base de datos en el menú Herramientas. Aparece el cuadro de diálogo Abrir.

  3. Seleccione el archivo .mdb de Access que contiene las tablas que desea importar. Aparece el cuadro de diálogo Importar de base de datos a dispositivo móvil con una lista de las tablas y los campos de la base de datos.

  4. Active las casillas de verificación de las tablas y los campos que desea importar y desactive las casillas de los que no desea importar.

  5. Active la casilla Sólo lectura para las tablas que desee convertir en sólo lectura.

  6. Si desea reemplazar tablas del dispositivo cuyo nombre coincide con el de otras tablas del archivo .mdb, active la casilla de verificación Sobrescribir tablas existentes y/o datos.

  7. Seleccione Aceptar para comenzar la conversión.

Para copiar una base de datos del dispositivo en el equipo de escritorio

  1. Conecte el dispositivo al equipo de escritorio y abra la ventana Dispositivos móviles.

  2. En la ventana Dispositivos móviles, seleccione Exportar tablas de base de datos en el menú Herramientas. Aparece el cuadro de diálogo Exportar de dispositivo móvil a base de datos, el cual muestra las tablas ADOCE del dispositivo conectado.

  3. Haga clic en el botón Examinar para seleccionar un archivo .mdb de Access. También puede escribir la ruta de acceso y el nombre de archivo en el cuadro Ubicación. Si el archivo no existe, ADOCE lo creará.

  4. Active las casillas de verificación de las tablas que desea exportar y desactive las casillas de las que no desea exportar. ADOCE coloca todas las tablas seleccionadas en el mismo archivo .mdb.

  5. Si desea reemplazar tablas del archivo .mdb cuyo nombre coincide con el de las tablas ADOCE seleccionadas, active la casilla de verificación Sobrescribir tablas existentes y/o datos.

  6. Seleccione Aceptar para comenzar la conversión.

Para obtener control mediante programación de la conversión de los archivos .mdb a tablas ADOCE y de tablas ADOCE a archivos .mdb, puede utilizar las funciones DesktopToDevice y DeviceToDesktop, respectivamente. El funcionamiento de estas funciones es similar al de los cuadros de diálogo Importar de base de datos a dispositivo móvil y Exportar de dispositivo móvil a base de datos, a excepción de que no aparecen los cuadros de diálogo con opciones para el usuario. Sí aparecen todas las barras de progreso con el estado de la transferencia. Si se devuelve un error, el archivo de registro no se muestra automáticamente. En su lugar, la función devuelve un valor de error, HRESULT, y la aplicación que efectúa la llamada puede realizar las acciones oportunas.

Con la función DesktopToDevice, puede especificar los campos que se van a convertir. No obstante, con la función DeviceToDesktop, todos los campos de la tabla se convierten de forma predeterminada.

El código de ejemplo siguiente muestra una sencilla aplicación de Visual Basic que copia un subconjunto de la base de datos Northwind incluida con Visual Basic en el dispositivo, sin sincronización, aunque se sobrescriben las tablas de Northwind existentes. La tabla Empleados se envía como una tabla de sólo lectura, mientras que la tabla Productos se puede actualizar.

Declare Function DesktopToDevice Lib 
"c:\archivos de programa\windows ce services\adofiltr.dll" _
(ByVal desktoplocn As String, _
     ByVal tablelist As String, _
     ByVal sync As Boolean, _
     ByVal overwrite As Integer, _
ByVal devicelocn As String) As Long

result = DesktopToDevice ("c:\mydbs\nwind.mdb", _
"!Employees..Products.ID.Name.Quantity..", False, True, "")
If result <> 0 Then MsgBox "An error occurred transferring the data"
Creación de tablas

Antes de obtener acceso a los datos con el control ADOCE, debe disponer de una tabla en la que almacenarlos. El código de ejemplo siguiente muestra la forma de crear una nueva tabla ADOCE en el directorio Databases de un equipo H/PC que ejecuta el software Pro Edition.

Dim rs
Set rs = CreateObject("adoce.recordset")
rs.Open "create table mytable (firstfield text, secondfield integer)"
Set rs = Nothing

Puesto que las instrucciones SQL que cambian la estructura de una tabla dejan el recordset cerrado, no podrá escribir ni leer los datos hasta que se vuelva a abrir el recordset.

Ordenación de tablas

Puede ordenar una base de datos con la instrucción Order By con o sin índices. No obstante, ordenar una base de datos sin un índice suele resultar más lento que hacerlo con un índice. El código de ejemplo siguiente muestra la forma de ordenar una base de datos sin un índice. Requiere un cuadro de lista (ListBox) llamado List1.

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "select * from mytable order by firstfield desc", "", 
adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
    List1.Additem rs.Fields("firstfield").Value
    rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing

El código de ejemplo siguiente muestra la forma de crear un índice utilizado para acelerar la ordenación en una base de datos. Requiere un cuadro de lista (ListBox) llamado List1.

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "create index i1 on mytable (firstfield desc)"
rs.open "select * from mytable order by firstfield desc", "", 
adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
    List1.Additem rs.Fields("firstfield").Value
    rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing
Almacenamiento y recuperación de información

Para agregar, quitar o modificar la información de una base de datos, debe cambiar los tipos CursorType y LockType predeterminados al abrir el recordset. El código de ejemplo siguiente muestra la forma de almacenar la información en una base de datos:

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "", adOpenKeyset, adLockOptimistic
rs. Addnew
rs.fields("firstfield") = "ActiveX Data Objects"
rs.fields("secondfield") = 1.8
rs.Update
rs.Close
Set rs = Nothing

Si se utiliza el método AddNew con parámetros, no es necesario utilizar el método Update, puesto que los cambios se realizan en la base de datos de forma automática. El código de ejemplo siguiente muestra la forma de utilizar AddNew:

rs.Addnew "firstfield", "Windows CE" 

Para cambiar un registro, en lugar de agregar uno, realice los cambios necesarios en los campos y, a continuación, utilice el método Update. Si utiliza Update con parámetros, los cambios se realizan en la base de datos automáticamente. El código de ejemplo siguiente muestra la forma de utilizar el método Update:

rs.Update "firstfield", "ADOCE" 

Después de almacenar los datos en la base de datos con AddNew y Update, puede utilizar la propiedad Value para obtener información almacenada en un campo. El código de ejemplo siguiente muestra la forma de recuperar información de una base de datos ADOCE. Requiere un cuadro de lista (ListBox) llamado List1.

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "", adOpenKeyset, adLockOptimistic  
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
    List1.Additem rs.Fields("firstfield").Value
    rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing
Distribución de aplicaciones ADOCE

Los componentes de una aplicación ADOCE se deben instalar tanto en el equipo de escritorio como en el dispositivo. Una forma de distribuir aplicaciones ADOCE consiste en realizar cambios en el programa de instalación de ejemplo incluido con el Kit de herramientas de Microsoft Windows CE para Visual Basic 6.0. Todas las aplicaciones Setup de ADOCE deben verificar que están instalados los Servicios para Windows CE 2.1 o posterior y agregar referencias a los archivos .cab de ADOCE a los archivos .ini del Administrador de aplicaciones (AppMgr).

Uso de un equipo H/PC que ejecuta el software Pro Edition

En esta sección se describen procedimientos adicionales que se pueden realizar en un equipo H/PC que ejecute Microsoft Windows CE, PC de bolsillo Edición profesional, versión 3.0.

Creación de bases de datos

El código de ejemplo siguiente muestra la forma de crear una base de datos externa en un equipo H/PC que ejecuta el software Pro Edition:

Dim rs
Set rs = CreateObject("adoce.recordset")
rs.Open "create database '\mydatabase.cdb'"
Set rs = Nothing
Recuperación de información de un archivo .cdb

Si creó una base de datos en un equipo H/PC que ejecuta el software Pro Edition, puede especificar la ruta de acceso a la base de datos en el parámetro de conexión para obtener acceso a los datos. Todas las operaciones que se pueden realizar con una cadena de conexión vacía ("") se pueden realizar también en un archivo .cdb con sólo cambiar la cadena de conexión. El código de ejemplo siguiente muestra la forma de recuperar información de un archivo .cdb:

Dim rs
Set rs = CreateObject("ADOCE.RecordSet")
rs.open "mytable", "\mydatabase.cdb", adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
  Do While Not rs.EOF
    List1.AddItem rs.Fields("firstfield").Value
    rs.MoveNext
   Loop
End If
rs.Close
set rs = Nothing
Resumen

ADOCE es un modelo de acceso a datos en el nivel de la aplicación que se puede utilizar con los kits de herramientas de Windows CE para Visual Basic. Al habilitar el acceso a las bases de datos almacenadas de forma local en un dispositivo, ADOCE agrega nueva funcionalidad de base de datos a Windows CE y proporciona duplicación y sincronización de datos a una base de datos de red. 

La velocidad y facilidad de uso de ADOCE, junto con su escasa utilización de memoria y el poco espacio que ocupa en disco, hacen que sea ideal para utilizarlo con el compacto, potente y rápido sistema operativo Windows CE.




Informe (Ado) de


 
Valora este artículo   Malo Excelente  

Han valorado este artículo de Ado. 110 usuario(s).
Valoración media: Desarrollo

Este artículo ha sido leído ( 42344 veces ).
Fecha: 4/17/2003


Agregar comentario | (0) comentarios
trucos Ado Recomendar este artículo Ado
Foros sobre Ado
Ado
Imprimir Ado
artículo Ado Agregar a Favoritos este artículo Ado


Ado
Artículos Relacionados

• Cómo Copiar/Clonar Recordsets de ADO en seis líneas

• Las novedades de ADO.NET

• Remote Data Access y ADO

• Acceder a Bases de Datos Microsoft Access

• Acceso a bases de datos Access con ODBC

• Desarrollo de aplicaciones de acceso a datos para Windows CE con ADOCE

• Acceder a Bases de Datos SQL Server.

• Guía básica para acceder a datos mendiante ADO y ASP.