![]() |
ayuda con grids y bases de datos
Buenas, me pase por un foro el cual me ha ayudado mucho y da una idea de como hacer que varias gribs dependan de una en particular, el usuario que inicio el hilo dejo un ejemplo pero no dejo la contraseña depaso lo resolvio y no dijo como pero si dejo la idea, yo quisiera saber como hacer eso ya que me parece interesante.
CITO: Me pasaron una aplicación en delphi bueno no me pasaron me la mostraron y yo le saque varias instantaneas que es muy buena pero ya esta en desuso por el tiempo que tiene desde que se programo, la parte interesante de ella es la siguiente: Tiene tres grids la primera tiene data fija ( Todo con BD): Grid 1 mesa 1 - facturado - ocupado ...............no..........no mesa 2 - facturado - ocupado ...............no..........s1 mesa 3 - facturado - ocupado ...............no..........no Grid 2 cliente - cedula - rif grib 3 Productos -precio - total ============================================================= Estas grids por ejemplo si yo le diera clic a mesa 2 la grid2 mostraria el cliente que la ocupa la grid tres lo que compro o esta consumiendo. Yo lo que trate de hacer fue crear una tabla con los datos de la mesa mas un campo cedula y un campo factura en otra tabla factura mas un campo cedula y mesa entonces con un reloj cada 200ms hacia la cosulta de modo que mostrara los datos dependiendo de la mesa que seleccionara en ese momento. Para un cliente nuevo lo que hice fue crear un boton que parara el primer reloj pudiendo realizar el registro en la bd pero alli el detalle se encuentra en que la grid productos cada fila al uno darle clic desplega los productos que estan en el stock en la fila de al lado dependiendo del producto al uno darle clic se desplegan los precios y al uno darle flechita abajo se puede agregar otro producto automaticamente, la verdad me gusto mucho ese sistema casi lo llegue a copiar mas tiene muchos problemitas y ademas esos relojes creo que no es lo ideal. FIN CITA |
¿Cuál es la pregunta/duda/problema? :confused:
¿Tiene algo que ver con lazarus, freepascal o kylix? Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :) |
La pregunta
Cita:
El usuario de ese foro pregunto lo siguiente (lo que yo entendi) Tres dbgrib. Tres tablas en una db. El dice que la primera gribs tiene data fija como la cantidad de mesas, pero al seleccionar la mesa que si esta ocupada en la grib 2 y 3 aparecen los datos relacionados con la mesa (cliente que la ocupa y lo que compro) En resumen la dos de las grids dependen de la primera. Como se podria hacer eso? |
Cada grid deberá estar pegada de un datasource, que a su vez deberá estar pegado a un dataset, donde cada dataset tendrá uno o varios eventos que descencadenen acciones en los demás, es de cir en el DataSet1.AfterRefresh, pones para que actualice los demás datasets con el valor que requieras pasar desde el DataSet1 a los demás, espero me haya hecho entender.
Saludos. |
Cita:
Creo que si, voy a hacerlo y luego les comento |
Hola.
Creo que estas exponiendo una situación en la cuál se aplicaría perfectamente una relación maestro/detalle. Veo dos posibilidades de organizarla, vos verás cuál te conviene para la situación. Caso 1: Código:
TABLA1 | TABLA2 | TABLA3 Consulta para TABLA2: Establece la propiedad DataSource de los componente que uses para las consultas:
Caso 2: Código:
TABLA1 | TABLA2 | TABLA3 Consulta para TABLA2:
Establece la propiedad DataSource de los componente que uses para las consultas:
Saludos. |
Cita:
|
Cita:
Una pregunta, Si tengo varias Tablas en una BD y quiero mostrar los datos de cada una de ellas al mismo tiempo tengo que colocar como dices tú un datasource y un dataset para cada una verdad. |
Por favor, no repitas preguntas en distintos sitios, he borrado el otro hilo donde has hecho esta misma pregunta.
|
Cita:
Saludos. |
Cita:
|
lo hice
Les cuento que no supe hacer lo del refresh y creo que seria la mejor forma.
Si me salio como dijo el compañero ecfisa pero utilizando un reloj como dijo el compañero del otro foro. Lo que no me gusta y por lo que digo que es mejor el refresh es que la pantalla parpadea ya que el reloj esta haciendo la consulta cada 200ms, no se si eso afecta el rendimiento. |
Cita:
De ese modo, cuando un registro de TABLA1 esté seleccionado, automáticamente serán seleccionados todos los que estén en relación con él en TABLA2 y lo mismo para TABLA3. Hablando visualmente, cuando selecciones un registro en el DBGRid1 (mesas) automáticamente se mostrarán los registros dependientes en DBGrid2(clientes) y DBGRid3(productos) que corresponden a la mesa seleccionada. Es decir que no veo la necesidad de usar un Timer, excepto claro, que desearas hacer una especie de demo que cada determinado tiempo seleccione una mesa aleatoriamente. Saludos. :) |
Cita:
Código:
Cadena_SQL:='CREATE TABLE IF NOT EXISTS "main"."mesas" ("id" INTEGER PRIMARY KEY,"mesa" VARCHAR(30),"ocupado" VARCHAR(30));'; Sqlite3Dataset2 para cliente Sqlite3Dataset3 para factura Cada uno con su respectivo datasource. Ahora no entendi lo que dijiste acerca de relacionar los datasourse por lo que en el reloj hice Código:
Sqlite3Dataset2.close; Pero me gustaria entenderlo asi como tu lo dices ============================================================================== EDITO Y AGREGO El componente Sqlite3Dataset3 no trae la opcion de datasource a diferencia de utilzar componentes zeos |
Hola.
Cita:
Saludos. :) |
Cita:
coloque en el form un zconexion, tres query y tres source query1 datasource1 query2 datasource2 query3 datasource3 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 realizo la consulta en el form asi Siguiendo los mismos datos que deje mas arriba de como cree la base de datos Código:
ZQuery1.SQL.Text:='SELECT * FROM mesas'; Por lo tanto no inicia el programa EDITO Y AGREGO ======================================================= Me falto colocarle las comillas a id id_mesa="id" Me mustra la tabla mesas pero cuando seleciono otro registro por ejemplo mesa id=2 que esta ocupada y tiene cliente no hace nada o no se mustra nada en la grid EDITO Y AGREGO ======================================================= Tambien lo hice metiendo el codigo de seleccion en cada uno de los query y activando el query en el form igual muestra las mesas pero no muestra los datos en la grid 2 (la grid 2 tiene el datasourse2) |
Hola pedrolazarus.
En principio cambiaría: Por: El método ExcecSQL, ejecuta consultas que no devuelven un resultado como CREATE TABLE, INSERT, DELETE y UPDATE. Saludos. |
Me respondo a mi mismo XD, gracias ecfisa, fuiste de mucha ayuda, con los componentes de zeos salio a la primera como dijiste las relaciones sin utilizar reloj.
|
Listo
Cita:
Cita:
|
Cita:
|
La franja horaria es GMT +2. Ahora son las 18:29:58. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi