[Lazarus-es] Ayuda con base de datos y mostrar en grib

Maxi maximiliano.duarte en gmail.com
Mar Oct 2 02:25:31 CEST 2012


El día 1 de octubre de 2012 16:20,
<pedrinlazarus en htmltest.comeze.com> escribió:
> Ya lo resolvi
>
>
>
>
>
> Spanish version of Lazarus List <lazarus-es en lists.lazarus.freepascal.org>
>
>
>
>
>
> El 1 de octubre de 2012 12:36, <pedrinlazarus en htmltest.comeze.com> escribió:
>
> Buenas tengo la siguiente duda
>
>
>
> Tengo una BD y en ella tengo tres tablas
>
> Cadena_SQL:='CREATE  TABLE  IF NOT EXISTS "main"."mesas" ("id" INTEGER
> PRIMARY KEY,"mesa" VARCHAR(30),"ocupado" VARCHAR(30));';
> Sqlite3Dataset1.SQL:=Cadena_SQL;
> Sqlite3Dataset1.ExecSQL;
>
> Cadena_SQL:='CREATE  TABLE  IF NOT EXISTS "main"."cliente" ("nombre"
> VARCHAR(30), "rif" VARCHAR(30),"id_mesa" INTEGER,"id_factura" INTEGER);';
> Sqlite3Dataset1.SQL:=Cadena_SQL;
> Sqlite3Dataset1.ExecSQL;
>
> Cadena_SQL:='CREATE  TABLE  IF NOT EXISTS "main"."factura" ("id" INTEGER
> PRIMARY KEY,"producto" VARCHAR(30),"precio" INTEGER,"rif_cliente"
> VARCHAR(30));';
> Sqlite3Dataset1.SQL:=Cadena_SQL;
> Sqlite3Dataset1.ExecSQL;
>
>
>
> Entonces el detalle esta en que tengo tres dbgrids, en la primera se muestra
> los datos de la tabla mesas, esta va a estar fija.
>
>
>
> En la segunda se va a mostrar el cliente dependiendo de la tabla mesa,
> Supongamos que la mesa 2 esta ocupada por lo tanto tiene un cliente,
> entonces al yo seleccionar la mesa dos en la dbgrid2 me deberia de aparecer
> los datos del cliente.
>
>
>
> Lo pude hacer utilizando un reloj haciendo la consulta de la mesa que
> seleccione guardando el id en una variable
>
> ========================================================
>
> Sqlite3Dataset2.close;
> Sqlite3Dataset2.SQL:='SELECT * FROM cliente where id_mesa="'+mesa+'";';
> Sqlite3Dataset2.ExecSQL;
> Sqlite3Dataset2.Open;
>
> Sqlite3Dataset3.close;
> Sqlite3Dataset3.SQL:='SELECT * FROM factura where id="'+nfactura+'";';
> Sqlite3Dataset3.ExecSQL;
> Sqlite3Dataset3.Open;
>
>
>
> donde mesa y nfactura son variables que toman un valor respectivo
>
> ========================================================
>
>
>
> Lo muestra pero es muy feo ya que la pantalla parpadea porq el reloj realiza
> la consulta cada 200ms.
>
>
>
> Me dijeron que haciendo esto
>
> query1 datasource1 para tabla1
> query2 datasource2 para tabla2
> query3 datasource3 para tabla3
>
> y haciendo esto en sus opciones
>
>
> al primer query le coloque solo conexion=zconexion
>
> al segundo query igual conexion=zconexion y en datasourse=datasource1
>
> al tercer query igual conexion=zconexion y en datasourse=datasource2
>
> Ya no se necesita el reloj pero solo muestra la tabla mesa y cuando
> selecciono la mesa que tiene un cliente no me aparecen los datos en la
> dbgrib2
>
>
>
> Ayuda por favor y gracias de antemano
>
>
>
>
>
>
> ______________________________
>>
>> _________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus.freepascal.org
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>

Bien pero un timer cada 200ms es muy exagerado con que lo haga cad 10
segundo ya es mucho, sino sobrecargas la red y el servidor.
Para que no parpadee, tenes que deshabilitar momentaneamente el
refresco del control.

Ontimer1(sender:tObject);
Begin
  try
    Timer1.Enable:=False; // parar el timer para no solapar llamadas
si el tiempo de consulta es mayor al  tiempo del timer
    dbgrid1.disablecontrols; //el control no muestra nada hasta que no
se refresca y vienen los datos nuevos
    dbgrid2.disablecontrols;
    query1.Close;
    query2.Close;
    query1.Open;
    query2.Open;
  finally
    dbgrid1.Enablecontrols; //rehabilito los controles
    dbgrid2.Enablecontrols;
     timer1.enable; inicio timer  nuevamente
end;
end;
-- 
El que pregunta aprende, y el que contesta aprende a responder.

No a la obsolecencia programada:
http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html

Linux User #495070
http://domonetic.com/blog




More information about the Lazarus-es mailing list