sábado, 22 de marzo de 2014

Pasos Reportes

Database profile > Conection
Profile name: "cualsea"
Provider: SQLOLEDB
Datasource: nombre de la instancia de BD
Extended properties: database="nombre BD"

> Security
check; Persist Security Info
Integrated: SSPI

> Preview
Test conextion

------------------------------------------------------------------------------------------------------------

Crear una capa de logica
Se hace una ventana w_rep (el objeto para instanciar otras ventanas)
Se crea un datawindow (dw_1) para los reportes con filtros se agrega un botón de Zoom e Imprimir, los botones de zoom e imprimir son solo para reportes con parámetros.
En  el constructor dw_1 esta la información de la conexión a BD

*************************Constructor dw_1*********************************

//Conecto if f_conectar(SQLCA) then //establecer el objeto transaccional
this.setTransObject(SQLCA) //recuperar los datos this.retrieve( ) //Asigno el dato del usuario conectado a la etiqueta t_usuario this.modify("t_usuario.text=' " + "Usuario: " + gs_usuario + " ' " ) //Habilita la vista previa, especifico para reporte con parametros. this.Modify ( "DataWindow.Print.Preview = True") //Desconecto f_desconectar(SQLCA) end if

*************************************************************************


el boton de zoom en w_rep es un drop down list box control, en la ventana properties del dropdownlist pestaña items se agrega los valores que va en el dropdown, en la pestaña general desabilita sorted y habilitar VScrollbar

en el evento selectionchanged del dropdownlist del zoom se agrega:
dw_1.Modify("Datawindow.Print.Preview.Zoom = "+ddlb_1.text)

en el event clicked del boton de Imprimir
dw_1.print( )

en w_rep en  el evento resize
dw_1.width = this.width - 200 dw_1.height = this.height - 400

En los reportes con parametros
Sobreescritura del ancestro Sobreescribir el codigo del constructor de la clase desde el hijo. En el codigo constructor, click derecho y deshabilititar extend ancestor script para que no utilice la configuracion del padre. Nuevo codigo constructor //Asigno el dato del usuario conectado a la etiqueta t_usuario this.modify("t_usuario.text=' " + "Usuario: " + gs_usuario + " ' " ) //Habilita la vista previa this.Modify ( "DataWindow.Print.Preview = True")



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

click derecho sobre w_rep > inherit from > guarda la ventana en la capa presentación w_rep_"nombre"
crea un nuevo datawindow > tabular > SQL Select > selecciona las tablas y las columnas deseadas y clickea Return

En el desing de la ventana
click en tab orden y poner todos los tabs en 0 y sale clickeando de nuevo
click en Rows > update properties > uncheck allow updates

Encabezado incluye: Universidad, Departamento, Nombre del reporte, se cambian los nombres a las columnas y sus colores, Un label para el usuario y la fecha (computed field una para la hora y otro para la fecha [en el codigo del campo computado para la fecha se escribe today()] ) 
en el properties para la fecha en la pestaña format > define si es fecha u hora

En el detail: Centrar las columnas

en el summary: agrega un campo computado para las páginas  [en el codigo del campo computado para la fecha se escribe 'Página ' + page() + ' de ' + pagecount()

se guarda la ventana en la capa presentación con el nombre: d_rep_"nombre"

Ya habiendo creado el window y el data window correspondientes al reporte se asocia a la ventana el datawindow, en la ventana properties > general > dataobject se agrega el nombre  datawindow creado

y en la ventana se agrega el nombre de la ventana