Para esto vamos a utilizar 2 tablas que hay en navision:
- La tabla 78 Seleccion Impresora
- La tabla Printer que es una tabla virtual y no esta accesible en el object designer.
Con la combinacion de ambas tablas no es complicado ver la manera de asignar una impresora concreta antes de ejecutar un informe.
Name | DataType | Subtype |
recImpresora | Record | Printer |
recImpresoraSeleccion | Record | Selección impresora |
recImpresoraSeleccionPrevia | Record | Selección impresora |
recImpresora.SETFILTER(Name,'EL NOMBRE DE MI IMPRESORA');
IF NOT recImpresora.FIND('-') THEN
EXIT(FALSE);
//Buscamos una asignación previa, la guardamos para dejarlo todo como estaba y la borramos
IF recImpresoraSeleccion.GET(UPPERCASE(USERID), 50000) THEN BEGIN
recImpresoraSeleccionPrevia.RESET;
recImpresoraSeleccionPrevia.INIT;
recImpresoraSeleccionPrevia.TRANSFERFIELDS(recImpresoraSeleccion);
recImpresoraSeleccionPrevia.INSERT;
recImpresoraSeleccion.DELETE;
END;
//Insertamos nuestra asignacion de impresora al report 50000
recImpresoraSeleccion.INIT;
recImpresoraSeleccion."Nº informe" := 50000;
recImpresoraSeleccion."Id. usuario" := UPPERCASE(USERID);
recImpresoraSeleccion."Nombre impresora" := 'EL NOMBRE DE MI IMPRESORA';
recImpresoraSeleccion.INSERT;
//Imprimimos nuestro informe
ReportFacturaVenta.RUNMODAL;
//Borramos nuestra asignacion
IF recImpresoraSeleccion.GET(UPPERCASE(USERID), 50000) THEN BEGIN
recImpresoraSeleccion.DELETE;
//Restauramos la asignacion previa
IF DELCHR(recImpresoraSeleccionPrevia."Nombre impresora",'<>',' ') <> '' THEN BEGIN
recImpresoraSeleccion.INIT;
recImpresoraSeleccion."Nº informe" := 50000;
recImpresoraSeleccion."Id. usuario" := UPPERCASE(USERID);
recImpresoraSeleccion."Nombre impresora" := recImpresoraSeleccionPrevia."Nombre impresora";
recImpresoraSeleccion.INSERT;
END;
END;
No hay comentarios:
Publicar un comentario