En Visual Foxpro, se registran datos pero no se imprimen. ¿Habrá algún código erróneo?
Resulta que un procedimiento toma datos de una tabla las vuelca en variables, luego en otra tabla y luego las imprime. Pasa que en las horas pico se produce lo siguiente: se registran los datos (se los ve en grilla) pero no los imprime. Cuando no hay tanto movimiento la cosa anda bien. Qeu puede estar sucediendo? Le coloque begin trans y sigue igual
este es el codigo:
if not used('okey')
use .\dbfs\okey in 0 shared
endif
sele okey
if okey.estoy then
if not used('pagos')
use .\dbfs\pagos in 0 shared
CURSORSETPROP('buffering', 3, 'pagos')
endif
sele pagos
if not used('colaimpre')
use .\dbfs\colaimpre in 0 shared
endif
sele colaimpre
count to vCuenta
if vCuenta != 0 then
*begin trans
go top
vEmple = colaimpre.empleado
vFecha1 = DATE() &&ctod(colaimpre.fecha)
vHora1 = allt(str(hour(datetime()))) + ":" + allt(str(minute(datetime()))) + ":" + allt(str(sec(datetime())))
*vHora1 = colaimpre.hora
vfichas = colaimpre.token
vserie_Maq = colaimpre.maquina
vPremia = colaimpre.valor
vCola = colaimpre.fincola
if not used('ficheros')
use .\dbfs\ficheros in 0 shared
endif
sele ficheros
set order to tag cod_fiche
seek(alltrim(vEmple))
vNombre = ficheros.apellido
use
if not used('maquinas')
use .\dbfs\maquinas in 0 shared
endif
sele maquinas
locate for serie_maqu = vserie_Maq
if found() then
vmodelo = maquinas.descripcio
endif
sele colaimpre
dele
go top
*ultimo nro de ticket disponible
sele dispone
go top
registro = dispone.nro
replace nro with registro + 1
tableupdate()
vticket = registro
sele pagos
append blank
replace cod_pago with registro
replace cod_turno with genero
replace serie_maqu with vserie_Maq
replace serie_cupo with registro
replace fecha with vFecha1
replace hora with vHora1
replace fichas_pag with vfichas
replace premio with vPremia
replace pagador with vNombre
replace cod_paga with val(vEmple)
begin trans
lSuccess = TABLEUPDATE(.T.,.F.)
IF lSuccess = .F.
ROLLBACK
messagebox ("no se pudo completar la transaccion, reintente", 0, "Mensaje")
else
*****
if not used('impreso')
use .\dbfs\impreso in 0 shared
endif
sele impreso
append blank
replace serie_cupo with registro
replace impreso with .t.
cPrinter = set("printer",2)
set printer to name(cPrinter)
STORE PRINTSTATUS( ) TO glReady
IF NOT glReady
messagebox ("Asegúrese de que la impresora está conectada y encendida", 0, "Mensaje")
ELSE
REPORT FORM .\reportes\ticket.frx ;
NOCONSOLE NOWAIT TO PRINTER
REPORT FORM .\reportes\ticket1.frx ;
NOCONSOLE NOWAIT TO PRINTER
endif
sele pagos
endif
end trans
endif
if vrecuento then
sele recuento
endif
endif
esto esta en un timer, hecho en VFP 6
este es el codigo:
if not used('okey')
use .\dbfs\okey in 0 shared
endif
sele okey
if okey.estoy then
if not used('pagos')
use .\dbfs\pagos in 0 shared
CURSORSETPROP('buffering', 3, 'pagos')
endif
sele pagos
if not used('colaimpre')
use .\dbfs\colaimpre in 0 shared
endif
sele colaimpre
count to vCuenta
if vCuenta != 0 then
*begin trans
go top
vEmple = colaimpre.empleado
vFecha1 = DATE() &&ctod(colaimpre.fecha)
vHora1 = allt(str(hour(datetime()))) + ":" + allt(str(minute(datetime()))) + ":" + allt(str(sec(datetime())))
*vHora1 = colaimpre.hora
vfichas = colaimpre.token
vserie_Maq = colaimpre.maquina
vPremia = colaimpre.valor
vCola = colaimpre.fincola
if not used('ficheros')
use .\dbfs\ficheros in 0 shared
endif
sele ficheros
set order to tag cod_fiche
seek(alltrim(vEmple))
vNombre = ficheros.apellido
use
if not used('maquinas')
use .\dbfs\maquinas in 0 shared
endif
sele maquinas
locate for serie_maqu = vserie_Maq
if found() then
vmodelo = maquinas.descripcio
endif
sele colaimpre
dele
go top
*ultimo nro de ticket disponible
sele dispone
go top
registro = dispone.nro
replace nro with registro + 1
tableupdate()
vticket = registro
sele pagos
append blank
replace cod_pago with registro
replace cod_turno with genero
replace serie_maqu with vserie_Maq
replace serie_cupo with registro
replace fecha with vFecha1
replace hora with vHora1
replace fichas_pag with vfichas
replace premio with vPremia
replace pagador with vNombre
replace cod_paga with val(vEmple)
begin trans
lSuccess = TABLEUPDATE(.T.,.F.)
IF lSuccess = .F.
ROLLBACK
messagebox ("no se pudo completar la transaccion, reintente", 0, "Mensaje")
else
*****
if not used('impreso')
use .\dbfs\impreso in 0 shared
endif
sele impreso
append blank
replace serie_cupo with registro
replace impreso with .t.
cPrinter = set("printer",2)
set printer to name(cPrinter)
STORE PRINTSTATUS( ) TO glReady
IF NOT glReady
messagebox ("Asegúrese de que la impresora está conectada y encendida", 0, "Mensaje")
ELSE
REPORT FORM .\reportes\ticket.frx ;
NOCONSOLE NOWAIT TO PRINTER
REPORT FORM .\reportes\ticket1.frx ;
NOCONSOLE NOWAIT TO PRINTER
endif
sele pagos
endif
end trans
endif
if vrecuento then
sele recuento
endif
endif
esto esta en un timer, hecho en VFP 6
1 Respuesta
Respuesta de Cesar RalFito
1