FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Campos calculados, facturas y detalles de facturas.
Hola a todos. Esta es la primera vez que expongo aquí una cuestión y espero explicarme bien.
A ver, estoy trabajando en delphi 6 con dos tablas entre otras, hechas en formato paradox (7 creo) con el database desktop. Una de las tablas es Detalles_Factura y otra Facturas. Las hice por separado para luego entre otras cosas, poder juntar todos los datos en un quickreport. Lo que sucede es que en Detalles_Factura tengo que calcular el total del detalle que viene de cantidad*precio_unitario y no sé si crear el campo en la tabla física o ponerlo luego en la ttable del delphi como campo calculado, porque probé a hacer esto y realizar el cálculo en oncalcfields y no me lo actualiza, mejor dicho no me pone ningún dato. Por otro lado, una vez que se actualice el total del detalle de factura, en facturas se tiene que actualizar el subtotal de la factura, es decir, la suma de todos los totales de detalles de factura cuyo código de factura coincida. Tampoco sé si hacer este campo calculado o cómo. Ayudadme por favor, le di miles de vueltas a esto y nunca me sale. Otra cosilla, os suena de algo que hagáis por ejemplo: Tabla.edit; Tabla.insert([‘valor1’,’valor2’]); Tabla.post; Y k diga que la tabla no está en modo insertar, según me habían explicado para insertar los datos correctamente, habría k hacer esto,no? Bueno, gracias por adelantado a los que me podáis ayudar. Hasta pronto.
__________________
Letty http://usuarios.lycos.es/buffangel |
#2
|
|||||
|
|||||
Por partes....
Cita:
Cita:
Cita:
Cita:
Cita:
Si no lo quieres hacer en una sola linea, decirte que el método Edit es para modificar el registro en el que te encuentras actualmente y, Append o insert es para añadir. El primero añade al final de la tabla y el segundo en la posición donde te encuentres en ese momento (tambien te aconsejo mirarte la ayuda de estos métodos que tambien traen un ejemplo) |
#3
|
|||
|
|||
Muchas gracias por tu respuesta cadetill!.
El campo calculado total de detalles_facturas lo hago así: me pongo en la ttable new field, total, float,calculated y en oncalcfields de detalles_facturas --> Tb_DetallesTotal.Value:= Tb_DetallesCantidad.Value*Tb_DetallesPrecio_Unit.Value; Cons_SubTotal.Close; Cons_SubTotal.ParamByName('Factura').AsString:= DtMod_Adail.Tb_FacturasCod_Fac.Value; Cons_SubTotal.Open; Tb_FacturasSubTotal.Value:= Cons_SubTotalSubTotal.Value; Pero bueno, aunk ponga solo la primera instruccion no va. En cuanto a la última cuestión, me confundí, lo que pongo siempre es InsertRecord([‘1’,’dos’]); Me comí el record. El rollo es: si pongo insertrecord... no hace falta poner el edit ni el post¿? O por qué poniendo esto me sale el error ese? Bueno, muchas gracias por tu ayuda y hasta pronto.
__________________
Letty http://usuarios.lycos.es/buffangel |
#4
|
|||
|
|||
Hola de nuevo
Cita:
Otra cosa, si estás en el OnCalcFields de Tb_Detalles, por qué actualizas el campo SubTotal de TbFacturas? Eso debería de ir en el OnCalcFields de TbFacturas (si el campo es calculado, claro) Cita:
|
#5
|
|||
|
|||
Muchas gracias de nuevo.
Tanto cantidad como precio unitario tenían valores distintos de 0. Lo te el subtotal en la tabla de detalles, lo puse así para k al actualizar detalles me calculara ese campo de facturas, si no lo pongo en el oncalcfields de facturas no va luego? Hasta pronto.
__________________
Letty http://usuarios.lycos.es/buffangel |
#6
|
|||
|
|||
Pues es muy extraño que si los 2 valores son distintos de 0, no te de el resultado de la operación. Mira a poner un punto de tuptura (BreakPoint) en este evento y comprueba, primero de que salte y segundo los valores que toman los campos que intervienen
El tema de la otra tabla que actualizas..... si es un campo calculado, no se, no lo he probado nunca, pero diría que no debería de funcionarte. Si es un campo físico.... te fata un Edit - Post del registro, sino te tendría que dar un error |
#7
|
|||
|
|||
Ya toy akí otra vez!, a ver si pongo insertrecord([valores]) no me los mete en la base, sólo cuando le da la gana, si después de esto pongo applyupdates pues creo k mete más pero a veces tampoco me los mete.... esto no es normal!
Ya sé lo que pasaba con el total de detalles, yo tengo el campo calculado y realmente me lo calcula pero luego cuando lo muestro lo hago con una consulta en sql k pilla los datos directamente de la tabla, y claro, ahora puse el total como campo en tabla, pero en la tabla física ese campo tiene valor nulo. Por eso antes me ponía los nulos, como hago para k me modifique el valor en la tabla, porque eso lo voy a tener k hacer también después en facturas para el subtotal.... al insertar en la tabla los valores, k se debe poner en el campo calculado? Espero no dar mucho más la lata , pk si no.. vamos a acabar mal, y yo de analfabeta aun por encima! . Chao.
__________________
Letty http://usuarios.lycos.es/buffangel |
#8
|
|||
|
|||
Bueno bueno, ante todo sosiego y calma
Cita:
Código:
Tabla.Append; Tabla.FieldByName('Nombre_Campo1').AsXXX := ElQueSea; Tabla.FieldByName('Nombre_Campo2').AsXXX := ElQueSea; ........ Tabla.Post; Cita:
Bien, si quieres coger el campo de la tabla, te aconsejo que primero de todo lo informes. Para ello sólo has de lanzar un pequeño SQL desde donde quieras (por ejemplo el SQL-Explorer) Código:
update Tabla_Detalle set Total = Quantidad * Precio |
|
|
|