![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Gracias.......
Muchas gracias.
En verdad agradesco tu tiempo, pero tengo otra duda al respecto, se supone que el usuario tiene la libertad de desplazarse por el Grid para anotar la cantidad que se vende por producto, vamos, en el Grid se presentara un campo Cantidad (que lo captura el usuario en el momento de la venta), Producto, Existencia y Costo, y al momento que el usuario captura la cantidad de producto que se vende (en el Grid) debe de aparecer el costo de la compra de ese producto, es decir, la cantidad de producto por su costo en otro campo del Grid y así sucesivamente con todos los productos hasta que se totalice la compra, obteniendose en otro campo (Sub Total o Total) y en otro control (por ejemplo un DBEdit) el total de la compra de cada cliente, esto para llevar un control de compras por cliente y realizar la impresión del recibo o factura correspondiente. Mi problema es que ignoro como hacer esto, es decir, no se como manejar un campo independiente para capturar la cantidad que se vende, y por consiguiente como asignar a otro campo el resultado de la venta de cada producto todo en el mismo grid (de hecho parte de mi duda, es sobre como hacer referencia a los valores dentro de cada campo del DBGrid por cada registro, pense en la propiedad Value pero creo que....... no va por ahi, asi es de que le agradeceria mucho su ayuda u orientación. Gracias mil. Phacko Última edición por Phacko fecha: 01-11-2004 a las 07:14:28. Razón: incompleto |
|
#2
|
||||
|
||||
|
Entoncés la cosa es mucho más simple, tienes que programa el evento OnChange de los campos afectados en el cálculo.
Por ejemplo si lo que cambían son las unidades y queremos que automáticamente nos calcule el total, puesto que el precio ya lo tenemos al elegir el producto, en el evento onChange del Campo unidades:
Y si hubiera algún campo más implicado en este cálculo hacer lo propio, si fueran muchos los campos, sería mejor crear un procedimiento y llamarlo desde el evento OnChange de los campos implicados. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#3
|
|||
|
|||
|
Gracias.......
Gracias Marcos, quiza ya este saturado de tanto darle vueltas, pero no he conseguido hacer lo que pretendo, he pensado en usar un campo en la misma tabla de catalogo de productos para capturar las cantidades que se venden para hacer las anotaciones en cada venta y al termino de ésta limpiar dicho campo y se afecte únicamente el campo “existencia“ que de hecho se debe modificar después que se ha hecho la venta. Pero el problema que aun tengo es que no he podido asignar valores directamente a los campos, he revisado y no he encontrado donde tengo el error, realice lo que me indicaste y nada (a no ser que haga referencia a los campos en forma equivocada: nombre del componente Ttable seguido del nombre del campo sin separarlo con punto, lo intente separándolos y tampoco incluso ose usar el nombre de la tabla y los mismo, a sope), prove con:
TAble1.FieldByName('CostoCompra').AsInteger:=Table1.FieldByName('Cantidad').AsInteger*Table1.FieldBy Name('Precio').AsInteger; Y tampoco. El Grid deberia mostrar algo así: Cantidad Producto Existencia Precio CostoCompra Piñas 10 10.00 Col 15 6.00 Melon 8 11.00 donde se debe, como ya lo he dicho, capturar la cantidad y el CostoCompra deberia presentarse. Me siento avergonzado por tanta Guerra que doy, pero ya tengo algunos días así, tome el texto “el lado oscuro de Delphi 4” y no he atinado a resolverlo, por ello me porto muy macho y aguanto mi vergüenza para volver a preguntar. De ante mano agradesco su tiempo y sobre todo su ayuda. Gracias. A, cuando saque el programa, aun tengo esperanza, vamos mitas en las ganancias .Última edición por Phacko fecha: 02-11-2004 a las 01:45:06. Razón: Incompleto |
|
#4
|
||||
|
||||
|
Chequea este código que envio... precisamente, creo, es lo que necesitas... aqui intervienen varias tablas... espero te sirva. Saludos
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
|
|
#5
|
|||
|
|||
|
Continuo en lo mismo
Muchas gracias por su ayuda, pero aun sigo con el mismo problema, probe lo que me sugirieron y nada. No he entendido como es que debo hacer referencia a los valores en cada campo, ya trate de la siguiente manera:
NombreComponenteTTableNombredelCampo.Value:=NombreComponenteTTableNombredelCampo.Value*...... por ejemplo: TablaPInicio.Value:=TablaPCantidad.Value*TablaPPrecio.Value; manda mensaje diciendo que TablaPInicio no esta declarado. Y de esta otra forma: TablaP['inicio'].Value:=TablaP['Cantidad'].Value*TablaP['Cantidad'].Value; Tambien de esta forma: TablaP['inicio'].AsFloat:=TablaP['Cantidad'].AsFloat*TablaP['Precio'].AsFloat y en ambos casos manda el siguiente error "Variant does not reference an automation object" En otra parte del programa donde se capturan los datos de clientes, empleo lo siguiente: Tabla.FieldByName('Nombre').AsString:=ENombre.Text; y me trabaja muy bien, trate con esto y nada. Elimine todo del form y comence nuevamente pero sigue lo mismo, estoy que me jalo los pelos, bueno ya me los arranque, que puede ser????. Gracias por su ayuda, si tuvieran alguna idea de lo que pasa, se los agradesco como no tienen idea, que me lo hagan saber. |
|
#6
|
||||
|
||||
|
Como bien dices hay 400 formas de acceder a un campo. La que se está usando en este hilo debe seguir una pequeña norma.
das doble clic en la tabla, boton derecho y añadir campos (tener todos los campos ahí es lo que se conoce como "Campos persistentes"). Despues de esto, Si la tabla está en un datamodule llamado DTM y la tabla se llama Table1 y el campo CostoCompra haremos referencia como: DTM.TAble1CostoCompra.AsXXX Añadir que si usas Value estarás trabjando con tipos Variants, si pones AsXXXX usarás el tipo concreto que quieras, para este caso, creo conveniente usar AsCurrency o AsFloat Saludos Un detalle más, si modificas el nombre de un campo en la base de datos, o bien creas uno nuevo, deberás volver a añadir los campos persistentes para que Delphi se actualice. Última edición por Lepe fecha: 04-11-2004 a las 11:34:18. |
|
#7
|
|||
|
|||
|
De ninguna forma.....
Gracias por su ayuda, pero continuo con el mismo problema.
Estoy haciendo lo que me han indicado en un nuevo proyecto, para evitar vicios que tenga en el proyecto anterior. Tengo una tabla "Operaciones.db" y un componente TTable "Table1" en la form y un "DBGrid1", los campos de la tabla son: Nombre, Salario, Dias, Neto. Capturo nombre, salario y dias y nada que se actualiza el campo "Neto" con la operacion de Salario*Dias, lo hago de la siguiente forma: Table1Neto.AsInteger:=Table1Salario.AsInteger*Table1Dias.AsInteger; con lo que me da el siguiente error: [Error] Unit1.pas(46): Undeclared identifier: 'Table1Neto' Que estoy haciendo mal???? Gracias. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|