Acceder a un DataSet desde otra unidad
Con .NET no se puede acceder a un DataSet creado en un form desde otra unidad distinta a la que pertenece el componente (inlcuso si se modifica y se crea como público).
La solución que yo he visto a este problema es crear variables globales tipo system.data.dataset y llamar al método "create" en tiempo de ejecución para poder crear la estructura de la base de datos, sin embargo, esta solución no me convence mucho, pués los componentes visuales están para utilizarlos y evitar crear variables a mano. En Delphi Win32, existe un contenedor llamado DataModule que sirve para almacenar los componentes de bases de datos en él y poder llamarlos desde cualquier unidad, pero en Delphi .NET no existe este concepto y se echa mucho a faltar. Tampoco he visto ningún componente que realice una función similar. ¿Alguien tiene la solución a este problema? Creo que debe ser posible utilizar los componentes visuales desde cualquier unidad pero, al menos yo, todavía no he dado en el clavo. Mirando en el google he visto que este problema lo tiene mucha gente pero no he visto ninguna solución. Gracias. |
Que no se puede? Eso no debe ser cierto.
Que sea una debilidad de Delphi, es posible, pero no de .NET. Un dataset instanciado, como cualquier otro tipo de objeto, puede ser accedido de acuerdo a los modificadores de acceso con los que se le ha declarado. Ahora bien, tienes que tomar en cuenta que, de acuerdo a la metodologia que utilices, puedes o no ver el contenido del dataset. Digamos que existen distintas formas (casos explicados en C#, que es el lenguaje con el que mas me familiarizo): - Un DataSet marcado como static, puede ser accedido utilizando la nomenclatura NombreClase.NombreDataSet. Al mismo tiempo, no puede ser llenado desde una instancia de la clase que lo contiene, sino que en la misma clase debe ser tratado como un objeto que pertenece a una clase, y no a la instancia de la misma. Ej: Código:
public class TalClase Código:
public class ClaseFormulario { Usando este patron de diseño, se garantiza la disponibilidad de una misma instancia del objeto. Caso de uso: Código:
public class FormularioConsumer |
Gracias por la info
Muchas gracias por a información. Tengo que probar lo que dices. Yo lo hacía de otra manera que funciona con cualquier componente excepto con los de bases de datos:
Tenemos dos unidades. En la primera se define el dataset y en la segunda un datagrid que accede al dataset declarado en la primera unidad: Código:
Saludos. |
Yo diría que es un simple "uses" el que falta:
Aparte de lo ya explicado. Delphi permite ver las propiedades private, siempre y cuando 2 clases esten en la misma Unidad (archivo .pas). Si estan en diferentes archivos .pas, tendrás que ponerlo en la parte public o published según desees. saludos. |
Gracias
jeje, gracias por la info, pero eso son conocimientos básicos de delphi (pero es que en el .net todavía no estoy muy metido).
Un saludo. |
Solucionado
Muchas gracias a todos por la ayuda. Finalmente, he descubierto que delphi .net es un poco particular a la hora de llamar a algunas funciones. Me explico:
Si tienes una clase definida tal que así: Código:
Código:
Código:
Saludos. |
La franja horaria es GMT +2. Ahora son las 06:00:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi