Red de conocimiento informático - Aprendizaje de programación - Implementación de informes dinámicos de PB

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 grande

selectblob 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)

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= + )

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

esta modificación (ls_dwoname+ Resizeable= + )

esta modificación (ls_dwoname+ moveable= + )

caso COLUMNA PUTE

is_dwobject = ls_dwoname

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