Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-11-2003
Letty Letty is offline
Miembro
 
Registrado: nov 2003
Ubicación: Galicia
Posts: 36
Poder: 0
Letty Va por buen camino
Unhappy 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
Responder Con Cita
  #2  
Antiguo 06-11-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Por partes....
Cita:
Letty comentó:
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.
Estupendo

Cita:
Letty comentó:
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,....
Eso va a gustos, es cuestión de diseño. êrsonalmente, no suelo tener el campo Total en la BD, sino que es calculado

Cita:
Letty comentó:
....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.
mmmmmm, me extraña que no te funcione, porque es de lo más sencillo. Cómo lo haces? Cómo estás definiendo el campo calculado?

Cita:
Letty comentó:
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.
Otra decisión de diseño y, personalmente, éste sí lo tengo en las tabla sísicamente

Cita:
Letty comentó:
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, si lo quieres añadir TODO en la misma linea, debes de utiliar el método Table1.InsertRecord();. Mírate la ayuda que hay un buen ejemplo
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)
Responder Con Cita
  #3  
Antiguo 06-11-2003
Letty Letty is offline
Miembro
 
Registrado: nov 2003
Ubicación: Galicia
Posts: 36
Poder: 0
Letty Va por buen camino
Smile

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
Responder Con Cita
  #4  
Antiguo 06-11-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Hola de nuevo

Cita:
Letty comentó:
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;
y con este código el campo Total de Tb_Detalles dices que no tiene ningún valor??? Si es así, estás seguro que los campos Precio_Unit o Cantidad no valen 0 alguno de los 2?? Podrías comprobarlo
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:
Letty comentó:
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¿?
Bueno, no hace falta poner Insert y Post. Fíjate que digo Insert y no Edit. Como te comentaba en el mensaje anterior, Edit es para modificar un registro, y lo que tu quieres es añadir => Insert o Append.
Responder Con Cita
  #5  
Antiguo 07-11-2003
Letty Letty is offline
Miembro
 
Registrado: nov 2003
Ubicación: Galicia
Posts: 36
Poder: 0
Letty Va por buen camino
Thumbs up

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
Responder Con Cita
  #6  
Antiguo 07-11-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 07-11-2003
Letty Letty is offline
Miembro
 
Registrado: nov 2003
Ubicación: Galicia
Posts: 36
Poder: 0
Letty Va por buen camino
Angry

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
Responder Con Cita
  #8  
Antiguo 07-11-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Bueno bueno, ante todo sosiego y calma

Cita:
Letty comentó:
...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!
Pues no, no es normal, te los debería de añadir siempre. Bueno, si no te funciona eso, prueba a hacerlo a la manera tradicional. Es decir...

Código:
Tabla.Append;
Tabla.FieldByName('Nombre_Campo1').AsXXX := ElQueSea;
Tabla.FieldByName('Nombre_Campo2').AsXXX := ElQueSea;
........
Tabla.Post;
Donde XXX es el tipo de datos del campo, es decir String, Integer, Float,......

Cita:
Letty comentó:
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?
Bueno, almenos hemos encontrado el problema
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
Y ya lo tendrás informado
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:59:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi