Pregunta

Algunos antecedentes: Quiero desarrollar una aplicación de escritorio, con una base de datos SQL como almacenamiento. No es sólo un usuario a la vez conectado a la base de datos.
Para hacer más fácil mantenimiento, me gustaría separar GUI desde busniss lógica. Por lo tanto, pensé que el uso de un módulo de datos (donde se implementa el BL), para cada cuadro de diálogo.

Mi pregunta: ¿Dónde está el lugar adecuado para insertar un componente TClientDataset? Directamente en el diálogo o en el módulo de datos?

¿Fue útil?

Solución

Personalmente, pongo TDataset-descendientes siempre en un módulo de datos. En caso de que, en algún momento, decidir a rediseñar sus formas, todavía tiene sus bases de datos a su disposición. El intercambio de información entre las formas es entonces más fácil así. En general, mantener su interfaz gráfica de usuario y datos separada!

Otros consejos

Si el TClientDataSet no va a ser utilizado por más de una pantalla al mismo tiempo, es seguro para colocarlos en un módulo de datos para mayor comodidad. Sin embargo, cuando se tienen dos o más pantallas que accedan al mismo TClientDataSet tendrá un problema ya que el conjunto de datos sólo tiene un cursor y se mueve a otro registro en una sola pantalla también se moverá a otro registro en las otras pantallas. En ese caso: poner el TClientDataset en las pantallas que utilizan los datos. La conexión todavía se puede poner en el módulo de datos, ya que es compartido por todos los conjuntos de datos.

Me volvería a poner los conjuntos de datos en DataModules . De esta manera, se puede tener múltiples puntos de vista en diferentes formas que apuntan en el mismo conjunto de datos , como una vista de detalles y una lista en una cuadrícula, y siempre estará en sincronización automática .
También formaliza la separación entre los datos con las reglas de negocio e interfaz de usuario con características de presentación, por lo que es más fácil cambiar las reglas de negocio o rediseño de la interfaz de usuario de forma independiente .
Y si es necesario tener varias instancias de los formularios de acceso a datos diferentes, siempre se puede crear una instancia de múltiples DataModules y conectar cada Formulario a su único relevante.

Los conjuntos de datos en el módulo de datos - pero DataSources en la forma o marco -. Siempre ha funcionado bien para mí

La forma DataSnap:

  • tener Módulos de Datos BL con la capa de acceso de datos y componentes TDatasetProvider, más el código de negocio
  • Módulos de Datos tener simplemente con los TClientDatasets.

De esta manera, si se cambia la aplicación a un n-tier usando DataSnap (u otra tecnología de n niveles donde se puede volver a utilizar las clientdatasets), sólo hay que mover los Módulos de Datos BL al nivel apropiado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top