[Lazarus-es] apertura de tablas

JoshyFun joshyfun en gmail.com
Mar Jun 16 14:08:49 CEST 2009


Hello Paola,

Monday, June 15, 2009, 11:28:23 PM, you wrote:

PB> Se me ha presentado otra situación, y me gustaría
PB> ver cómo lo resuelven Uds, ya que son mucho más 
PB> experimentados que yo en este lenguaje..
PB> Estoy usando los componentes Zeos.
PB> En un datamodule coloqué el zconnection.
PB> En cada form pongo los componentes ttables o tquerys que necesito.
[...]
PB> donde:
PB> function frmBuscaCliente.GetIDCliente(): Integer;
PB> begin
PB>         Result:=Dataset.FieldByName('CLIENTID').asInteger;
PB> end;
PB> en este caso, no podía abrir la tabla en la
PB> busqueda y cerrarla al salir, porque salta error 
PB> al obtener el IDCliente porque obvio que cuando 
PB> llegó allí, la tabla ya se cerró..
PB> Pero a su vez, el form de busqueda puede abrirse
PB> independientemente de si fue llamado desde otro 
PB> lado, por ej, si se necesita buscar un dato cualquiera

Empezando por que yo con bases de datos para trabajos empresariales a
penas he trabajado (uso bases de datos para almacenamientos
estructurados programáticos), diría que hay que huir de los TTable si
se usa una base de datos relacional; y digo huir para los casos
generales ya que hay situaciones en las que un TTable es lo más
práctico, pero la verdad no veo muchas que no sean el alta o la baja
masiva de registros sin intervención del usuario.

En el ejemplo de la búsqueda de clientes, búsqueda de artículos y
cosas similares yo crearía un modulo de datos con la conexión a la
base de datos (o directamente en cada form) y un TZQuery que realize
las búsqueda, bien por partes de campos, o listando en un dbgrid o
algo así.

De este modo el formulario funciona de modo autónomo, y un servidor de
bases de datos no va a tener problema por que cada cliente mantenga
ocasionalmente 4,5...n conexiones simultaneas, y sólo has de mantener
ciertas precauciones de integridad de datos cuando trabajes con
múltiples copias del programa a la vez, ya que el código de cliente
que has obtenido en la búsqueda puede no existir ya cuando vayas a
usarlo (si alguien lo ha eliminado).

-- 
Best regards,
 JoshyFun





More information about the Lazarus-es mailing list