PDA

Ver la Versión Completa : Ayuda con Reporte


cristian22
23-08-2016, 20:01:51
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
tabla detalle_de_venta
idventa
cantidad
precio
idproducto

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
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
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

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
Buenas

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"".