PDA

Ver la Versión Completa : Tener un Grid bajo control


hgiacobone
03-05-2005, 15:48:40
Hola amigos,

Estoy tratando de realizar un sistema que facture productos me encuentro en la siguiente encrucijada:
Tengo un Form (en realidad un TFrame) en el que debo incluir una grilla -aun no sé si conviene para este caso un TGrid o TDBGrid- en el que el usuario deberá ir adicionando productos para su posterior venta.
Las columna a visualizar son las clásicas: CodBarras, Detalle, Cantidad, PrecioUnitario y TotalLinea.
El usurio ingresa el código del producto (lectura del campo CodBarras mediante lector ópitico) y este se introduce en el primer campo. Busco en la DB ese item y recupero los detalles de los siguinetes campos. Cuando el usuario termina de cargar los productos y confirma la caraga, abro las tablas, realizo un bucle en la grilla y almaceno las ventas. Hasta aquí todo normal.

Ahora, lo que yo neceito controlar es el comportamiento de ese Grid, una vez leido el código del primer producto, "automaticamente" adicione una nueva línea y retorne a la columna CobBarras a la espera de un nuevo código.
¿Es posible realizar esto?

Otra es que no sé si conviene un simple Grid o un DBGrid sin asociación aparente, para luego al finalizar la carga solo lo asocio a un DataSet y hago un TADODataSetBatchUpadte.
(Para mas info, lógicamente estoy trabajando con ADO+Base MDB)

Gracias por lo que puedan aportar.

Lepe
03-05-2005, 17:20:27
Y ¿por qué no realizarlo todo en un mismo paso?

- pones la tabla en inserción
- rellenas el código
- mediante LookUp recuperas el resto de los datos
- Grabas, y vuelta a empezar.

hgiacobone
03-05-2005, 19:24:10
Claro, suena lógico.
El problema de los sisrtemas de facturación (al menos en Argentina) es que se utilizan unos dispositivos pustos por el fisco llamdo "Controlador Fiscal" que regsitra la operación de venta y es irreversible los datos que enviemos, por lo que tiene que llegar seguros. Lo mas indicado es, captura los productos a vender (en este caso en un Grid) y una vez que se confirmaron se abre la base, se guarda el conjunto de datos, se cierra la base (Transaccion) y rtecien se mandan los datos al controlados. Ahi termina la operacion de venta.
Lo que quiero es brindarle al usuario la posibilidad de ingresar, eliminar, modificar los datos de la venta antes de abrira la base.

Lepe
04-05-2005, 11:03:39
No soy el más indicado en aconsejarte en este tema, pero por el foro se habla mucho de TClientDataset y TDatasetProvider, activando la CacheUpdates, de esta forma se consigue todo lo que quieres. Es decir, puedes usar estos objetos como si estuvieses trabajando directamente con la base de datos , pero en realidad, todos los cambios se hacen en la cache de la BBDD, hasta que no llamas al método ApplyUpdates, no se confirman todos los cambios realizados. (inserciones, borrados, actualizaciones...)

Con esto evitas tener que crear ese TGrid o TDBGrid, y sigues trabajando con la lógica normal de BBDD.

En la web de borland (http://bdn.borland.com/article/0,1410,29056,00.html) tienes una información más detallada sobre estos componentes.

Espero te ayude.

Lepe
04-05-2005, 11:07:36
Perdón, ese enlace es para índices de los ClientDataset, como tambien puede ayudarte, ahora si te dejo el link de un proyecto sobre el ClientDataset (http://codecentral.borland.com/codecentral/ccWeb.exe/listing?id=20540)

saludos