PDA

Ver la Versión Completa : ayuda para poder generar al impresion de un tickes


microbiano
10-10-2010, 17:18:27
bueno les cuento que pasa pues resulta que ya termine el modulo de ventas pero ahora no se como poder generar la impresion del tickes , aclaro no es la factura, es decir aquel papelito que cuando compras en cualquier tienda te dan un comprobante de que compraste la cantidad y precio de cada articulo.

el componente que use como detalle de tickes es un TstringGrid, uso conexion ADO y base de datos sqlserver 2000, alguien me puede ayudar con esto?

de antemano muchas gracias al tiempo que le dan a mis preguntas

Caral
10-10-2010, 18:48:15
Hola
Pues no se cual es el problema, yo hago los recibos por dinero en esa forma usando QReport.
Simplemente se cuadran los datos y el tamaño del ticket al qreport.
Saludos

microbiano
10-10-2010, 20:49:43
me puedes dar un ejemplo simple, para ver como lo haces ;-)

Caral
10-10-2010, 22:17:37
Hola
No creo que se tenga que hacer gran cosa.
Aqui hay un reporte configurado para recibo, a ver si te sirve.
Saludos

microbiano
10-10-2010, 23:20:29
perdon caral descargue tu archivo pero la verdad no se como usarlo :-(

Caral
11-10-2010, 01:38:12
Hola
No es para usarlo, es un reporte de ejemplo hecho en qreport.
En base a este te puedes dar una idea de como hacer uno similar.
Este es uno de los que uso para hacer tickets de caja.
Saludos

microbiano
11-10-2010, 19:33:26
ya pude abrir tu archivo jejeje hasta ahora en la oficina pero la verdad no tengo idea que te parece impresion con el canvas?, o alguna idea de como pasar lso datos del StrinGrid al quickReport?

Caral
11-10-2010, 19:54:13
Hola
Me imagino que el stringrid lo cargas con los datos de la bd usando ado.
Pues es lo mismo en el qreport, se cargan los datos con ado.
No se que mas decirte.
Saludos

microbiano
11-10-2010, 21:18:40
si lo se pero por ejemplo en el TStringGrid tengo datos calculado por ejemplo el total por articulo, entonces eso es lo que no se como enviarlo al quick report en unos minutos te paso un codigo que quise intentar y no me sale :-(

Caral
11-10-2010, 21:26:30
Hola
Vale, lo espero a ver si entiendo.
Saludos

microbiano
11-10-2010, 21:30:34
les comento como esta resulta que puse un Reporte con lo siguiente

1 banda de tipo : rbColumnHeader
1 banda de tipo: rbDetail
1 banda de tipo: rbTitle

el reporte esta enlazado a un adoquery, de tipo dinamico

bueno pues en la banda de tipo detalle puse un componente QRDTExt de nombre txtcantidad.

ahora bien en un boton para imprimir pongo el siguiente codigo.
procedure TFfactura.btn3Click(Sender: TObject);
begin

if wfactura_a_imprimir<>0 then
begin
Application.CreateForm(TFticket, Fticket);
Fticket.show;
with Fticket.Qry_ticket do
begin
sql.Clear;
SQL.Add('select * from facturaItem');
sql.Add('where nofac=:pfactura');
Parameters.ParamByName('pfactura').Value:=wfactura_a_imprimir;
try
Open;
if not Fticket.Qry_ticket.IsEmpty then
begin
while not Fticket.Qry_ticket.Eof do
begin
Fticket.txtcantidad.Caption:=FieldByname('cantidad').AsVariant;
Fticket.Refresh;
Next;
end;
Fticket.Preview;
Fticket.Free;
end;
except
on E:EOleException do
begin
MessageDlg(Format('Error: %s Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
end;
end;
end;
end;
end;



se supone tendria que actualizar los datos del reporte pero me muestra el reporte en blanco

Caral
11-10-2010, 21:50:33
Hola
A ver asi:

procedure TFfactura.btn3Click(Sender: TObject);
begin
if wfactura_a_imprimir<>0 then
begin
Application.CreateForm(TFticket, Fticket);
// Fticket.show;
Fticket.Dataset:= Qry_ticket;
with Fticket.Qry_ticket do
begin
sql.Clear;
SQL.Add('select * from facturaItem');
sql.Add('where nofac=factura');
Parameters.ParamByName('pfactura').Value:=wfactura_a_imprimir;
try
Open;
if not Fticket.Qry_ticket.IsEmpty then
begin
while not Fticket.Qry_ticket.Eof do
begin
Fticket.txtcantidad.Caption:=FieldByname('cantidad').AsVariant;
Fticket.Refresh;
Next;
end;
Fticket.Preview;
Fticket.Free;
end;
except
on E:EOleException do
begin
MessageDlg(Format('Error: %s Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
end;
end;
end;
end;
end;

Saludos

microbiano
11-10-2010, 22:01:34
ummm sin funcionar, seguire intentando haber cual es el problema

Caral
11-10-2010, 22:11:26
Hola

procedure TFfactura.btn3Click(Sender: TObject);
begin
if wfactura_a_imprimir<>0 then
begin
Application.CreateForm(TFticket, Fticket);
Fticket.Dataset:= Qry_ticket;
with Fticket.Qry_ticket do
begin
sql.Clear;
SQL.Text:= 'select * from facturaItem where nofac = :Tfactura';
Parameters.ParamByName('Tfactura').Value:=wfactura_a_imprimir;
Open;
try
if not Fticket.Qry_ticket.IsEmpty then
begin
Fticket.txtcantidad.Caption:= FieldByname('cantidad').Value;
Fticket.Preview;
finally
Fticket.Free;
end;
except
on E:EOleException do
begin
MessageDlg(Format('Error: %s Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
end;
end;
end;

Saludos

microbiano
11-10-2010, 22:18:21
sin funcionar jeje ya intente ponerle al campo el dataset de la siguiente manera

fticket.txtcantidad.dataset:=ffactura.qry_ticket;
fticket.txtcantidad.dafafield:=fieldByname('cantidad'). asvariant

y sigue sin funcionar ummm me pregunto que de plano voy a utilizar canvas jejeje espero que no jejeje

Caral
11-10-2010, 22:20:45
Hola
Una pregunta tonta:
Tienes enlazados los QRDBText con el Qry_tiquet ?.
Lo digo por que si no muestra nada pero no da error es que los encuentra pero no los muestra.
Saludos

microbiano
11-10-2010, 23:44:06
bueno mi estimado amigo CARAL. gracias por la ayuda hasta ahora prestada de verdad y gracias por comparit la aplicacion de facturacion me sivio de mucho te comento que si tengo enlazados los QRDBTExt al query sin embargo no lo hacia sabes que tuve que hacer volverlos a enlazar por medio de codigo como aqui te muestro y tambien tuve que cambiar la manera de asignar el campo.

procedure TFfactura.btn3Click(Sender: TObject);
begin

if wfactura_a_imprimir<>0 then
begin
Application.CreateForm(TFticket, Fticket);
//Fticket.Dataset:= Fticket.Qry_ticket;
with Fticket.Qry_ticket do
begin
sql.Clear;
SQL.Text:= 'select * from facturaItem where nofac = :Tfactura';
Parameters.ParamByName('Tfactura').Value:=wfactura_a_imprimir;
Open;
try
if not Fticket.Qry_ticket.IsEmpty then
begin
Fticket.DataSet:=Fticket.Qry_ticket;
Fticket.txtcantidad.DataSet:=Fticket.Qry_ticket;
Fticket.txtcantidad.DataField:=('cantidad');
Fticket.txtdescripcion.DataSet:=Fticket.Qry_ticket;
Fticket.txtdescripcion.DataField:=('preciounitario');
Fticket.Preview;
Fticket.Free;
end;
except
on E:EOleException do
begin
MessageDlg(Format('Error: %s Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
end;
end;
end;
end;
end;

aun asi muchas gracias mi estimado amigo, te molestare en cuanto se me vuelva a atravesar el chamaco jejeje