Power Builder - Problema al imprimir

 
Vista:

Problema al imprimir

Publicado por Piero (51 intervenciones) el 14/06/2007 00:40:01
Señores Foristas:

estoy trabajando con un sistema en power builder 9 y tengo un problema al imprimir.
tengo 2 impresoras instaladas en mi Pc
1. para imprimir documentos de venta (impresora ticketera sp512)
2. para imprimir remitos termicos (impresora termica star tsp700 raster printer)

la logica de mi sistema es mandar a imprimir primero el documento de venta por la impresora ticketera sp512 y luego mandar a imprimir los remitos por la impresora termica star tsp700 raster printer.

ahora la primera vez sale todo Ok,
pero cuando mando a imprimir otra vez, todo se imprime por la impresora termica (la ultima impresora que imprimio) ya sea documento de venta o remito.

Es decir ya no manda cada orden a su repectiva impresora
como puedo hacer para que cada orden envie a cada impresora siempre su documento a imprimir correspondiente.

Agradecere sus prontas respuestas

Gracias de Antemano
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

RE:Problema al imprimir

Publicado por Leopoldo Taylhardat (710 intervenciones) el 14/06/2007 14:03:06
Saludos... esto lo he publicado en el foro varias veces...

La forma más facil es seleccionar la impresora destino antes de mandar a impimir...
PrintSetUp()

Yo cuando no quiero la aplicación quede a merced del usuario hago esto..

Buscar y asigar impresora.

/ Obtener la Impresora Default (Listados)
// Existe una tabla llamada 'IMPRESORA'que contiene dos (2) columnas fijas y una opcional si se maneja por estación.:

FUNCION_IMPRESORA = Para que se utiliza: (Primary Key) varchar(12)
ej... listados, laser, facturas, etc...
DIRECCION_IMPRESORA = La dirección fisica de la impresora: varchar(128)

// Nota: a la tabla de impresoras puedes crear una columna que contenga el nombre de la estación y buscar la impresora que corresponda a esa estación....

IMPRESORA.ESTACION= Nombre de la estación de trabajo si se desea: varchar(24)
… ver más adelante…

/*
Con esta función obtengo cual es la impresora asignada por defecto y actualizo el valor del DW
donde actualizo mi lista de impresoras en la tabla 'IMPRESORA'
Este proceso lo hago con todas las impresoras,
es decir asigno una como impresora por defecto y la meto en la tabla, luego asigno otra por defecto
y la meto en la tabla... por supuesto con nombres diferentes (FUNCION_IMPRESORA) y así sucesivamente...

yo hice una ventanita con un boton con esta funcion (Buscar Impresora) para hacer esto.
*/

string printer_default

//BUSCAR EL SISTEMA OPERATIVO Y OBTENER IMPRESORA POR DEFECTO..

CHOOSE CASE env.OSType

CASE Windows!
gs_os="Win_95_98"
// Asignar la Impresora Default
RegistryGet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers", "default", printer_default)
//MessageBox("Windows sPrinter Asignada", printer_default)
CASE WindowsNT!
gs_os="Win_Nt"
// Asignar la Impresora Default
RegistryGet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device",printer_default )
//MessageBox("Windows NT Printer Asignada", printer_default)
END CASE

dw_impresoras.SetItem(dw_tablas.GetRow(),"direccion_impresora",printer_default)

// Repito ciclo....hasta definir todas las impresoras...

// Este es el formato general para asiganr impresora seleccionada por defecto...
//BUSCAR EL SISTEMA OPERATIVO Y ESTABLECER IMPRESORA POR DEFECTO..

//Para NT (xp; 2000): Asignar la Impresora Default

RegistrySet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device",printer_default )

// Para todos los windows...

CHOOSE CASE env.OSType

CASE Windows!
gs_os="Win_95_98"
// Asignar la Impresora Default
RegistrySet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers", "default", printer_default)
//MessageBox("Windows sPrinter Asignada", printer_default)
CASE WindowsNT!
gs_os="Win_Nt"
// Asignar la Impresora Default
RegistrySet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device",printer_default )
//MessageBox("Windows NT Printer Asignada", printer_default)

END CASE

// Con el manejo de la tabla IMPRESORAS...
// Con esta función busco en la tabla
//y tengo una que es por defecto para toda la aplicación llamada 'DEFAULT' (FUNCION_IMPRESORA)
// Selecciono la que es por defecto para todos los procesos de la aplicación (valor de FUNCION_IMPRESORA='DEFAULT')
string printer_default
//
SELECT IMPRESORA.DIRECCION_IMPRESORA
INTO :printer_default
FROM IMPRESORA
WHERE IMPRESORA.FUNCION_IMPRESORA = 'DEFAULT' ;
//
// o la que necesite para el proceso (dependiendo de como la haya llamado...etc...
//
// WHERE IMPRESORA.FUNCION_IMPRESORA = 'LISTADOS' ;
// aquí puedes agregar otro WHERE si lo manejas por ESTACION..
// AND IMPRESORA.ESTACION=:is_NOMBRE_ESTACION;

// Asignar la Impresora Default que haya buscado...
// Para NT:
// RegistrySet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device",printer_default )
//
/Para todos lo windows...

CHOOSE CASE env.OSType

CASE Windows!
gs_os="Win_95_98"
// Asignar la Impresora Default
RegistrySet("HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers", "default", printer_default)
//MessageBox("Windows sPrinter Asignada", printer_default)
CASE WindowsNT!
gs_os="Win_Nt"
// Asignar la Impresora Default
RegistrySet("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows","Device",printer_default )
//MessageBox("Windows NT Printer Asignada", printer_default)

//
END CHOOSE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al imprimir

Publicado por Jorge Escobar (110 intervenciones) el 14/06/2007 20:25:06
como están asignados los reportes ?
cada reporte tiene un control datawindow diferente ?
si asi fuera solo tendrías que hacer es setear al datawindow con el nombre de la impresora.
ticket
dw_1.Object.Datawindow.Printer = 'nombre de la impresora'

remitos
dw_2.Object.Datawindow.Printer = 'nombre de la otra impresora'

sería recomendable que tengas una platilla de configuración para que configures las impresoras..
puede ser mediante claves de registro o en un archivo ini para que lo puedas manejar desde un formulario.
[impresoras]
ticket = ticketera sp512
remito = star tsp700 raster printer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al imprimir

Publicado por Piero (51 intervenciones) el 14/06/2007 23:42:53
Señores Foristas

Gracias por su apoyo me han orientado muy bien, ya pude resolver mi problemita
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

RE:Problema al imprimir

Publicado por Hugo (33 intervenciones) el 27/08/2008 06:51:39
Hola Piero, coincido con Jorge E. yo desarrolle algo parecido os nombre de la impresora se puede guardar en una tabla o en un *.ini.

ahora estoy experimentando la impresión con un ticketera, tengo un impresora Star SP500 modelo SP542 MC RGY, ya diseñé el formato en un datawindow pero al imprimir enpiesa todo bien pero una vez terminado la impresión de la primera pagina sigue sacando mas papel y se activa el mensaje de error de esta impresora cuando despues de imprimir deberia cortar y continuar imprimiendo el siguiente, y pasa lo mismo con el comando

Long ll_trabajo
ll_trabajo = PintOpen()
Print(ll_trabajo, 'datos ').
........

Veo que ud. ya solucionó por favor ayudame de que manera puedo solucionar, dame un ejemplo de como hacerlo es urgente.

desde ya Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al imprimir

Publicado por Piero (51 intervenciones) el 27/08/2008 17:00:26
Hola Hugo, mira te puedo recomendar que trabajes la impresion como yo lo hago
por medio de cargar un datawindow en un datastore

//***primero creo una funcion gf_print_job
//***luego le envio los parametros para que se cargue mi datawindow(datastore)

gf_print_job(ls_tipo_envio,ls_emision,ls_remito,ls_nro_salida)

//***en mi funcion recibo los parametros y cargo el datasotre
datastore lds_remito
lds_remito = create datastore

lds_remito.dataobject = 'd_impresion_remito_salida_termica'
lds_remito.SetTransObject(sqlca)

//****cargo los datos
If lds_remito.retrieve(as_tipo_envio, as_emision, as_remito, an_nro_salida) = 0 Then
messagebox('Error de Impresion','No se pudo recuperar el remito',stopsign!)
End If

lds_remito.print()
destroy lds_remito

//****Claro que antes de todo el proceso puedes ingresar un PrintSetup() para establecer la impresora por la que se imprimirá.
//****Ahora si con lo que te indico sigue igual, ES UN PROBLEMA DE FALTA DE CONFIGURACION DE TU IMPRESORA,SEGURO NO HAZ INSTALADO EL DRIVER CORRECTO,alguna vez tuve un problema similar.

Saludos desde Perú
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar