Power Builder - Problemas de impresión

 
Vista:

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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder