Ver Mensaje Individual
  #2  
Antiguo 24-04-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Eso es algo que anteriormente se ha hablado aquí, lo puedes encontrar si buscas "capas lógicas" o "2.5 capas" (que es como osé llamarle).

Es decir, que sí puedes usar componentes proveedores (TDataSetProvider) y conjuntos de datos clientes (TClientDataSet), aunque tu aplicación no necesariamente esté dividida en tres capas y sin dejar de utilizar ADO.

Asignarle un TADOXXX a un TDataSetProvider no tienen ninguna dificultad: los componentes proveedores pueden conectarse con cualquiera de los componentes de acceso a datos que existen.

Si mantienes tus conjuntos de datos clientes fuera del módulo de datos donde se encuentran los proveedores (lo cual me parece bien pensando en esta división lógica de capas), no podrás asociar en tiempo de diseño un TClientDataSet nativo con un TDataSetProvider, pues el primero no tienen propiedad pública "Provider", sino "ProviderName", la cual está pensada para establecer en ella el nombre de un componente proveedor que se encuentre en:

a) un módulo de datos remoto (en el servidor de aplicaciones).
b) el mismo módulo de datos o formulario donde se encuentre el conjunto de datos cliente.

Es decir, que la propiedad ProviderName no sirve para asignar un proveedor que se encuentre en la misma aplicación, pero en un módulo de datos distinto (al menos hasta Delphi 7 es así). No obstante, en tiempo de ejecución, podrías realizar un asignación como esta en el OnCreate del formulario:

Código Delphi [-]
CDS1.SetProvider (dmModuloProveedores.DSP1);

Una recomendación sería, en tiempo de diseño, agregar el conjunto de datos cliente en el módulo de datos de proveedores, asignarle valor a la propiedad ProviderName, agregar los campos persistentes (si fuese el caso) y los parámetros ("Fetch Params") al conjunto de datos. Y, una vez probado que abra y cierre sin problemas, moverlo al módulo de datos o formulario donde realmente quieres tenerlo. Pero eso sí, tendrás que asignarle el proveedor mediante una sentencia de código como la anterior.

Espero haberte orientado.

Al González.
Responder Con Cita