Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Ayuda con Reporte (https://www.clubdelphi.com/foros/showthread.php?t=90734)

cristian22 23-08-2016 20:01:51

Ayuda con Reporte
 
Hola diseñe un formulario de venta utilizando query de zeos y mysql -5 en delphi 2010. en dicho formulario utilizo un stringgrid para visualizar los datos de dicha venta. lo que quiero es ahora al dar en el boton aceptar me genere un reporte utilizo rave report. El prolema que tengo es el siguiente en el stringgrid tengo el idproducto,nombre,precio,cantidad,subtotal de los cuales al guardar en la base de datos en la tabla detalle solo guardo el precio cantidad id producto, el subtotal lo trabajo como un campo carculado desde el query. Al general el reporte me visualiza los siguientes datos idproducto,cantidad,subtotal,precio lo que quiero es que me visualice tambien el nombre del producto. Como podria realizar dicha operacion sin agregar un nuevo campo a mi tabla detalle. Intente crear un campo carculado que sea string pero el prolema sigue igual. Dejo el codigo que trabaje
Código SQL [-]
tabla detalle_de_venta
idventa
cantidad
precio
idproducto

Código Delphi [-]
procedure TfVentas.bAceptarClick(Sender: TObject);
var
i:integer;
begin

 try
  fmodulo.conexion.StartTransaction;
    with fmodulo,self do
     fmodulo.qVentas.Active:=true;
     fmodulo.qCaja.Active:=true;
     fmodulo.qVentas.Insert;
     fmodulo.qVentas['idcliente']  := idcliente;
     fmodulo.qFecha.Open;
     fmodulo.qVentas['fechavent']  := fmodulo.qFecha['fecha'];
     fmodulo.qVentas['idcaja']:=fmodulo.qCaja['idcaja'];
     fmodulo.qVentas['horavent']:= fmodulo.qFecha['hora'];
     fmodulo.qVentas['totalventa']:= eTotal.text;
     fmodulo.qFecha.Close;
     fmodulo.qVentas.Post;
     with fmodulo,self,sgDetalle do
     begin
       fmodulo.qdetalle.Active:=true;
       fmodulo.qProductos.Active:=true;
       for i := 1 to rowcount - 2 do
         begin
           fmodulo.qdetalle.Insert;
           fmodulo.qdetalle['idventa']:= fmodulo.qVentas['idventa'];
           fmodulo.qdetalle['idproducto']:= strtoint(sgDetalle.Cells[0,i]);
           fmodulo.qdetalle.FieldByName('nombre').AsString:= sgDetalle.Cells[1,i]; //aqui probe usando un campo carculado pero no logro solucionar el inconveniente  
           fmodulo.qdetalle['precio_venta']:=  strtofloat(sgDetalle.Cells[2,i]);
           fmodulo.qdetalle['cantidad_venta']:= strtofloat(sgDetalle.Cells[3,i]);
           fmodulo.qdetalle.Post;
           fmodulo.rvFactura.Execute;
     end;
     end;
finally
  fmodulo.conexion.Commit;
  self.Close;
  end;

El campo carculado. En el evento onCalcFields del query tengo la siguiente linea
Código Delphi [-]
procedure TfModulo.qdetalleCalcFields(DataSet: TDataSet);
begin
   DataSet['subtotal']:=DataSet['precio_venta']*DataSet['cantidad_venta'];
   DataSet['nombre']:=fmodulo.qProductos['nombrepr'];

end;

bitbow 23-08-2016 22:05:35

Crea una vista, usa una variable de Rave report o algun evento.

cristian22 24-08-2016 01:45:25

Hola
 
Cita:

Empezado por bitbow (Mensaje 508075)
Crea una vista, usa una variable de Rave report o algun evento.

eso intente creando variables, tanto en el form como luego en el query pero aun asi no logro que me muestre el nombre del producto en el reporte

rocksoft 25-08-2016 07:51:00

Buenas

Código Delphi [-]
tabla detalle_de_venta
idventa
cantidad
precio
idproducto

Si tu tabla detalle_de_venta la tienes en un query, por que no haces un join de la tabla de procutos y ya tendrias el nombre.

cristian22 25-08-2016 15:59:20

Gracias Por responder
 
Cita:

Empezado por rocksoft (Mensaje 508124)
Buenas

Código Delphi [-]
tabla detalle_de_venta
idventa
cantidad
precio
idproducto

Si tu tabla detalle_de_venta la tienes en un query, por que no haces un join de la tabla de procutos y ya tendrias el nombre.

Hola esto ya lo habia intentado antes como una solucion realize dicha consulta y traje el "nombre de los productos" de la tabla productos al query detalle. Como consulta y visualizar todas las ventas que realize sirve perfecto. El prolema es que cuando estoy realizando una venta actual y realizo el post para mostrar luego el reporte en forma de factura me tira error de ""Cannot update a complex query with more then one table"".


La franja horaria es GMT +2. Ahora son las 00:43:59.

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