Problemas de impresión
Publicado por Cristhian Maco (1 intervención) el 21/10/2016 16:48:06
Buen día, utilizo PowerBuilder 9 y el inconveniente que tengo es el siguiente. Trabajo con una impresora de tipo refrendadora, esta refrendadora crea dos iconos de impresion en la cual le asigno el nombre de voucher y refrendo por lo que como se entiende envío dos impresiones, cuando llega a la impresión número 40 o 45 ya no envía la impresion y por mas que cierro el programa y lo vuelvo a abrir ya no imprimie. Ahora este programa se utiliza de dos formas una es de forma directa, es decir de forma local y la otra es desde un virtualizador citrix, este problema se presenta cuando se ejecuta desde citrix mas no de forma directa, espero me puedan ayudar con este inconveniente, aquí les dejo el codigo que utilizo.
(1) Esto va en el botón GENERAR:
(2) Funcion SF_GENERA_REGISTRO
(3) STORE SP_INSERTA REGISTRO
(4) WINDOWS FUNCTIONS
(5) Aqui capturo la Impresora
Espero me puedan ayudar.
Gracias.
(1) Esto va en el botón GENERAR:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
If messagebox ("AVISO","¿DESEA GENERAR EL NUMERO?",Exclamation!, OkCancel!,2) = 1 Then
STRING COD
DateTime ldt_fecha_sistema
ldt_fecha_sistema = datetime(f_fechasys())
sle_fecha.text = string(ldt_fecha_sistema)
COD = SQLCA.sf_genera_registro(gs_region, gs_oficina, gs_anoproc)
sle_numero.text = COD
SQLCA.SP_insertar_registro( gs_area, gs_anoproc, COD, gs_region, gs_oficina, gs_useradmin)
cb_imprime.enabled = True
st_ung.visible = True
st_nag.Visible = False
STRING L_IMREFRENDO,L_TICKET
L_IMREFRENDO=f_impresion(lb_1,+GS_NAMEPC+"REFRENDO")
L_TICKET=f_impresion(lb_1,+GS_NAMEPC+"VOUCHER")
////////////////////////////////////////////////////////
//REFRENDA EN HOJA DE USUARIO
dw_refrendo.settransobject(sqlca)
dw_refrendo.retrieve(gs_region, gs_oficina,gs_anoproc)
//REFRENDA EN VOUCHER
dw_barras.settransobject(sqlca)
dw_barras.retrieve(gs_region, gs_oficina,gs_anoproc)
//Imprime REFRENDO
PrintsetPrinter (L_IMREFRENDO)
string nro_regi_ref
nro_regi_ref = dw_refrendo.getitemstring(dw_refrendo.getrow(),'nro_regi')
long R, T
R = printopen("REFRENDO" +' '+ nro_regi_ref )
If R <> -1 Then
printclose(R)
Else
messagebox("Aviso","Error al iniciar la impresión")
End If
dw_refrendo.print(true)
printclose(R)
//Imprime VOUCHER
PrintsetPrinter (L_TICKET)
string nro_regi_tic
nro_regi_tic = dw_barras.getitemstring(dw_barras.getrow(),'nro_regi')
T = printopen("VOUCHER" +' '+ nro_regi_tic)
If T <> -1 Then
printclose(T)
Else
messagebox("Aviso","Error al iniciar la impresión")
End If
dw_barras.print(true)
printclose(T)
//////////////////////////////////////////////////////////////////
IF SQLCA.SQLCOde = 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF
Else
sle_numero.text = ""
sle_fecha.text = ""
Messagebox("Mensaje","No ha generado registro")
(2) Funcion SF_GENERA_REGISTRO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE OR REPLACE FUNCTION TRADOC.SF_GENERA_REGISTRO(pic_COD_REGI IN TRADOC.CO_AREA.COD_ZONA_WLEG%type,
pic_COD_OFIC IN TRADOC.CO_AREA.COD_OFIC_WLEG%type,
piv_ANOREGI In TRADOC.TA_MAES_DOCU.ANO_REGI%TYPE)
RETURN VARCHAR2
IS
NRO_REGI TRADOC.TA_MAES_DOCU.NRO_REGI%TYPE;
BEGIN
SELECT NVL(SUBSTR(CONCAT('00000',(MAX(TA.NRO_REGI)+1)),-6),'000001')
INTO NRO_REGI
FROM TRADOC.TA_MAES_DOCU TA, TRADOC.CO_AREA A
WHERE TA.ANO_REGI = piv_ANOREGI
and TA.TIP_ORIG = 'E'
and TA.ARE_ORIG = A.COD_AREA
and A.COD_ZONA_WLEG = pic_COD_REGI
and A.COD_OFIC_WLEG = pic_COD_OFIC;
Return NRO_REGI;
END SF_GENERA_REGISTRO;
(3) STORE SP_INSERTA REGISTRO
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
CREATE OR REPLACE PROCEDURE TRADOC.SP_INSERTAR_REGISTRO
(
pc_ARE_ORIG IN TRADOC.TA_MAES_DOCU.ARE_ORIG%type,
pc_ANO_REGI IN TRADOC.TA_MAES_DOCU.ANO_REGI%type,
pc_NRO_REGI IN TRADOC.TA_MAES_DOCU.NRO_REGI%type,
picCO_REGI IN TRADOC.TA_MAES_DOCU.CO_REGI%type,
picCO_OFIC_RGST IN TRADOC.TA_MAES_DOCU.CO_OFIC_RGST%type,
psUSU_SIST IN TRADOC.TA_MAES_DOCU.USU_SIST%type
)
IS
BEGIN
INSERT INTO TRADOC.TA_MAES_DOCU
(ARE_ORIG, ANO_REGI, NRO_REGI,TIP_ORIG,FEC_DOCU,TIP_DOCU,FEC_REGI,EST_DOCU,USU_SIST,FEC_HREG,CO_REGI,CO_OFIC_RGST)
VALUES
(pc_ARE_ORIG,
pc_ANO_REGI,
pc_NRO_REGI,
'E',
SYSDATE,
'01',
SYSDATE,
'01',
psUSU_SIST,
SYSDATE,
picCO_REGI,
picCO_OFIC_RGST
);
END SP_INSERTAR_REGISTRO;
(4) WINDOWS FUNCTIONS
1
2
3
4
5
6
7
8
9
10
11
12
13
integer li_Total ,i
string bus,impresora
li_Total = ar_lista.TotalItems()
If li_Total=0 then
Else
For i=1 to li_Total
bus= string(ar_lista.finditem(ar_tipoimpresion, i))
next
End If
ar_lista.selectitem(integer(bus))
impresora = ar_lista.selecteditem( )
return impresora
(5) Aqui capturo la Impresora
1
2
3
4
5
6
7
8
9
10
11
string printers[]
int rtn, i, nbPrinters
rtn = RegistryKeys &
("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers", &
printers)
nbPrinters = UpperBound(printers)
FOR i = 1 TO nbPrinters
tab_1.tabpage_1.lb_1.addItem(printers[i])
NEXT
Espero me puedan ayudar.
Gracias.
Valora esta pregunta


0