Implementación de informes dinámicos de PB
Principio de implementación
PowerBuilder tiene un formato de archivo especial para guardar informes con el sufijo PSR (denominado archivo PSR en este artículo). La ventana de datos puede leer directamente el archivo PSR. generar el informe y el programa Al generar archivos PSR, puede guardar el formato del informe dinámico
Primero, establezca las propiedades de tamaño variable y movible de la columna de texto en el objeto de la ventana de datos (objeto de datos) para realizar el control de arrastre. de la posición del objeto a través de la ventana de datos. La función Modificar implementa cambios en los valores del objeto (incluidas la adición y eliminación)
En segundo lugar, el formato del informe debe guardarse. El nombre del objeto de la ventana de datos. La aplicación siempre es única. Cada objeto de la ventana de datos se convierte en un archivo PSR para su almacenamiento. En la tabla de la base de datos, cuando se abre la ventana, el programa primero verifica si existe el formato del informe. en un archivo temporal, luego configure el objeto de datos de la ventana de datos (ventana de datos) en el archivo de informe y extraiga los datos. No es necesario extraer datos directamente
Proceso de implementación
.
Crea una tabla de base de datos para guardar el archivo de formato del informe
Crea una ventana w_temp define la variable de instancia de la siguiente manera
string is_dwtype is_dwobject
//Guarde el tipo y el nombre del objeto en el informe
Agregue el siguiente código de verificación al evento Abrir de la ventana Si existe el formato del informe. Si existe, lea el formato del informe definido en el. ventana de datos
blob emp_pic
long ll_handle
string ls_dwobject ls_reportfile ls_path
ls_dwobject = dw_print dataobject
/ /Determine si el formato de informe de la ventana de datos existe
select count (*) into:ll_count from dyn_report donde dwobject =:ls_dwobject
if ll_count> then
<; p> //Lee el archivo de formato de informe en una variable de texto grandeselectblob memo into:emp_pic from dyn_report donde dwobject =:ls_dwobject
//Crea un archivo PSR temporal y guárdalo en el disco duro
ls_reportfile = \temp psr
ll_handle = FileOpen (is_reportfile StreamMode! write! LockWrite! ¡Reemplazar!)
FileWrite(ll_handle emp_pic) p>
FileClose(ll_handle)
dw_print dataobject = ls_reportfile
dw_print settransobject(sqlca)
else
Dw_print settransobject ( sqlca)
Finalizar si
Dw_print retrieve()
Guardar el formato del informe. Esto se puede hacer a través del evento en el que se hizo clic en el botón Cb_savereport Implementación
cadena ls_filename
long ll_count
p>
blob Emp_id_pic
ls_filename = temp psr
//Guarda el formato del informe en un archivo temporal en el disco duro
dw_print saveas (ls_filename PSReport! false)
sqlca automit = true
seleccione contar (*) en :ll_count de dyn_report donde dwobject =:is_dwobject
if ll_count = entonces
insertar en dyn_report(dwobject rptitle)
valores( is_dwobject :ls_filename :ls_path)
end if
//Leer datos del archivo temporal en el disco duro y guárdelo en la tabla de la base de datos
emp_id_pic = of_readbmpfile(ls_filename)
//Esta función lee el contenido del archivo binario en un objeto de texto grande
UPDATEBLOB dyn_report SET memo = : Emp_id_pic donde dwobject = :is_dwobject;
//Actualizar base de datos
sqlca automit = false
El La implementación de informes dinámicos captura la ventana de datos a través del evento en el que se hace clic en la ventana de datos dw_print y almacena el nombre del objeto en la variable de instancia is_dwobject para prepararse para el siguiente paso de modificación del informe
String ls_type ls_dwoname
//Obtener el tipo y nombre del objeto
ls_type = trim (superior (dos tipos))
ls_dwoname = trim (dos nombres)
is_dwtype = ls_type
elija caso ls_type
case TEXT CommandButton GROUPBOX
is_dwobject = ls_dwoname
//Establecer para que se pueda arrastrar y cambiar de tamaño
esta modificación (ls_dwoname+ Resizeable= + ) p>
Esta modificación (ls_dwoname+ moveable= +)
case LINE
//Los objetos de línea no pueden se puede ajustar configurando las propiedades Resizeable y moveable y se debe ajustar a través de otros medios
is_dwobject = ls_dwoname
case RECTANGLE ELLIPSE GRAPH BITMAP
is_dwobject = ls_dwoname p>
esta modificación (ls_dwoname+ Resizeable= + )
esta modificación (ls_dwoname+ moveable= + )
caso COLUMNA PUTE
is_dwobject = ls_dwoname p>
esta modificación (ls_dwoname+ Resizeable= + )
esta modificación
(ls_dwoname+ moveable= + )
end select
Finalmente, las operaciones básicas de informes dinámicos se pueden realizar a través de la función modificar (). Hay muchos artículos en esta categoría y hay muchos. de ejemplos en PB Se puede usar directamente y no se repetirá aquí
Agregar close (parent) al evento clicked() del botón cb_exit
Agregar open (w_temp). al evento abierto de la aplicación y luego guárdelo y ¡este es el final de ejecutar todo el trabajo!
¿Este programa pasó la depuración según PB Oracle?
¿Recomendación del editor?
Videotutorial de capacitación sobre desarrollo de ASP NET lishixinzhi/Article/program/PB/201311/24637