Ver Mensaje Individual
  #1  
Antiguo 23-08-2016
cristian22 cristian22 is offline
Miembro
NULL
 
Registrado: jun 2014
Posts: 18
Reputación: 0
cristian22 Va por buen camino
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;
Responder Con Cita