Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2013-09

tzquery: error al hacer post

2 messages · 2 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola todos..
recurro a Uds dp de estar 3 horas d�ndole vueltas a lo mismo sin poder resolver nada!!!
Es algo muy raro, ya que tengo 2 forms que hacen pr�cticamente lo mismo, pero en uno falla y en otro no.
(lazarus 1.0.8, zeos 7.0.3 y firebird 2.1.5 64b

En un stringgrid voy guardando art�culos:
nombre, cantidad, codigo, precio

cuando acepto el pedido, grabo los datos en una tabla PEDIDOS con el campo impreso='N'
Por �ltimo mando imprimir, y en la rutina de impresi�n, a medida q se van imprimiendo los renglones marco el pedido como impreso='S' esta es m�s o menos la rutina; saqu� cosas q no interesan para achicar.

   .....
   qry.Close;
   qry.SQL.Text:= 'select * from pedidos where impreso = ' +
QuotedStr('N') + ' and codmesa = '+
frmMesas.dsMesas.DataSet.FieldByName('codigo').AsString + ' and lugar =
' + QuotedStr(cLugar);
   qry.Open;
   if not qry.IsEmpty then
     begin
       SeleccionarImpresora(cImpresora);
       Printer.RawMode := True;
       Printer.BeginDoc;
      qry.First;
       While not qry.EOF do
         begin
           sDesc:= UTF8ToCP850(qry.FieldByName('descripcion').AsString);
           ImprimirCadenaRaw(qry.FieldByName('cantidad').AsString+' '+
sDesc);
ImprimirCadenaRaw(UTF8ToCP850(qry.FieldByName('obs').AsString));
           qry.Edit;
           qry.FieldByName('impreso').AsString:= 'S'; // se marca
pedidos->impreso = 'S'
           qry.Post;
           qry.Next;
         end;
       Printer.EndDoc;
       Printer.RawMode := false;
     end;
   qry.Close;

como ven nada del otro mundo; funciona siempre.

PERO pasa algo bien raro:
si ingreso 2o m�s articulos iguales con cantidad 1 esa cantidad de veces, al hacer el primer POST cancela; llega a imprimir un pedazo del ticket pero no sale hasta q no cierro el programa, por tanto, no sale el 2do rengl�n.

de cq otra forma no pasa nada:o sea si ingreso 2 articulos diferentes con cantidad 1, si ingreso 1 articulo con cantidad 1 y luego el mismo con cantidad 2, si ingreso 1 rengl�n con el mismo articulo con cantidad 2 o m�s veces , etc...

Tengo otro proceso parecido que usa la misma rutina de impresi�n, pero ah� no ocurre nada porque previamente me tomo el trabajo de juntar todos los art�culos iguales en un record, por tanto, nunca va a pasar de que hayan 2 renglones con el mismo articulo y cantidad 1. En este caso, me encaprich� y no quiero cambiar a la otra forma.. no puede ser que esto falle.

ya he probado de todo..
poner un .cancel antes del edit, poner luego del post el .commitupdate (pero es lo mismo xq ocurre en el post), de preguntar si el qry esta en modo dsedit (y est�, por eso pasa al post)....

ya no se que hacer! help!!!!

mil gracias por cualquier cosa q se les pueda ocurrir.. debe ser una sutileza tan grande que ya no la veo.
byeeeeeeeeeeeeeeee

Reply by email

Claudio Romero
to Paola Bruccoleri

Hola,

te da un error, o solo se saltea la impresi�n?

El d�a 7 de septiembre de 2013 21:36, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�:

Show quoted text 88 lines
Hola todos.. recurro a Uds dp de estar 3 horas d�ndole vueltas a lo mismo sin poder resolver nada!!! Es algo muy raro, ya que tengo 2 forms que hacen pr�cticamente lo mismo, pero en uno falla y en otro no. (lazarus 1.0.8, zeos 7.0.3 y firebird 2.1.5 64b En un stringgrid voy guardando art�culos: nombre, cantidad, codigo, precio cuando acepto el pedido, grabo los datos en una tabla PEDIDOS con el campo impreso='N' Por �ltimo mando imprimir, y en la rutina de impresi�n, a medida q se van imprimiendo los renglones marco el pedido como impreso='S' esta es m�s o menos la rutina; saqu� cosas q no interesan para achicar. ..... qry.Close; qry.SQL.Text:= 'select * from pedidos where impreso = ' + QuotedStr('N') + ' and codmesa = '+ frmMesas.dsMesas.DataSet.FieldByName('codigo').AsString + ' and lugar = ' + QuotedStr(cLugar); qry.Open; if not qry.IsEmpty then begin SeleccionarImpresora(cImpresora); Printer.RawMode := True; Printer.BeginDoc; qry.First; While not qry.EOF do begin sDesc:= UTF8ToCP850(qry.FieldByName('descripcion').AsString); ImprimirCadenaRaw(qry.FieldByName('cantidad').AsString+' '+ sDesc); ImprimirCadenaRaw(UTF8ToCP850(qry.FieldByName('obs').AsString)); qry.Edit; qry.FieldByName('impreso').AsString:= 'S'; // se marca pedidos->impreso = 'S' qry.Post; qry.Next; end; Printer.EndDoc; Printer.RawMode := false; end; qry.Close; como ven nada del otro mundo; funciona siempre. PERO pasa algo bien raro: si ingreso 2o m�s articulos iguales con cantidad 1 esa cantidad de veces, al hacer el primer POST cancela; llega a imprimir un pedazo del ticket pero no sale hasta q no cierro el programa, por tanto, no sale el 2do rengl�n. de cq otra forma no pasa nada:o sea si ingreso 2 articulos diferentes con cantidad 1, si ingreso 1 articulo con cantidad 1 y luego el mismo con cantidad 2, si ingreso 1 rengl�n con el mismo articulo con cantidad 2 o m�s veces , etc... Tengo otro proceso parecido que usa la misma rutina de impresi�n, pero ah� no ocurre nada porque previamente me tomo el trabajo de juntar todos los art�culos iguales en un record, por tanto, nunca va a pasar de que hayan 2 renglones con el mismo articulo y cantidad 1. En este caso, me encaprich� y no quiero cambiar a la otra forma.. no puede ser que esto falle. ya he probado de todo.. poner un .cancel antes del edit, poner luego del post el .commitupdate (pero es lo mismo xq ocurre en el post), de preguntar si el qry esta en modo dsedit (y est�, por eso pasa al post).... ya no se que hacer! help!!!! mil gracias por cualquier cosa q se les pueda ocurrir.. debe ser una sutileza tan grande que ya no la veo. byeeeeeeeeeeeeeeee _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email