Ayuda con rave report y delphi
Publicado por Belen (33 intervenciones) el 23/08/2016 20:05:37
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 SQL [-]
tabla detalle_de_venta
idventa
cantidad
precio
idproducto
El campo carculado. En el evento onCalcFields del query tengo la siguiente linea
Tabla SQL [-]
tabla detalle_de_venta
idventa
cantidad
precio
idproducto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
1
2
3
4
5
6
procedure TfModulo.qdetalleCalcFields(DataSet: TDataSet);
begin
DataSet['subtotal']:=DataSet['precio_venta']*DataSet['cantidad_venta'];
DataSet['nombre']:=fmodulo.qProductos['nombrepr'];
end;
Valora esta pregunta


0