Auditoria e impresión

Tengo un formulario continuo de 33 lineas por página (facturas).
La factura la crea con DW Compose com cabecera y detalle pero la misma imprime a 66 linea por página como puedo cambiar la impresión a 33 linea.
Existe algun metodo en PB para generar una auditoria en las tablas de manera que se puedea determinar que cambios pudieron realisarce en algun determinado registro.
Ejemplo.
Tabla de cliente se creo un cliente nuevo, 2 días más tarde se cambio la dirección del cliente y los teléfono.
¿Cómo puedo determinar la información que estaba anteriormente en estos campos a través de una auditoria?

6 Respuestas

Respuesta
1
Tratare de responder a tus inquietudes:
1o. PB maneja formularios de impresion standard, aun no tiene contemplado (hasta donde yo sé) formularios de impresion variables, de la manera como yo he resuelto estos problemas es por medio del software de la impresora o dispositivo de impresion por donde sale dicha factura o formulario, en dicho software, en sus propiedades debe existir una opcion para seleccionar el tamaño de la impresion, y debes buscar el CUSTOM o FORMATO VARIABLE, es aqui en donde le especificas el tamaño en ancho y largo de la hoja a utilizar, y en PB la opcion de DEFAULT segun el dispositivo de impresion, por ejemplo para imprimir una hoja de tamaño media carta las coordenadas son Width = 2540 y Height = 1372 esto son m.m. la manera mas sencilla es primero especificar el tamaño normal de la hoja, o sea si es tamaño a utilizar es LETTER (carta) lo que debes hacer es primero fijarlo como el utilizado, luego elijes la opcion de tamaño de papel CUSTOM y al presentar la caja de dialogo, en esta aparecera en milimetros o en pulgadas, el tamaño de dicha forma, lo unico que tendras que hacer es proporcionarla, si necesitas media carta simplemente partes por la mitar la cantidad que se presenta en HEIGHT o largo.
2o. Los metodos que utiliza PB para auditoria son un poco mas informativos a nivel tecnico y no administrativo, por ejemplo puedes saber cuando se ejecuto un SELECT o un INSERT o un UPDATE y cual fue el resultado y la cantidad de informacion, todo esto lo escribe en un archivo tipo texto en donde va añadiendo a este cada actividad del programa, es recidente en la estacion del cliente y no en el servidor y es un archivo o fichero tipo LOG, pero esto depende de la conexion de trabajo, simplemente en el manager de manejo de bases de datos ODBC en la conexion activar la casilla de TRACE pero esto como te dije va a generar un archivo tipo TRACE, hay otros medios PB aun tiene funciones que generan un TRACE mas completo y depende del programador el elegir un tipo de trace, por lo extenso de explicar, te invito a que lo veas en la ayuda propia de power builder simplemente solititas informacion sobre trace o tracefile.
Otra opcion y la mas dificil pero no la menos eficiente es la generacion de una tabla y el manejo propio de una auditoria a medida que tu deberias escribir o programar, seguro que es la mas lenta de todas las opciones pero al final esta es la mas eficiente.
Bien espero que todo esto te sea de utilidad.
Respuesta
1
El tamaño de la hoja de impresión es tomado por PB de forma automática de acuerdo a la impresora configurada, es decir, que la cantidad de líneas que se imprimen a través de un DW es directamente proporcional al tamaño de la hoja configurado en la impresora. Te recomiendo que le configures a la impresora una hoja al tamaño de tus necesidades y deja que PB haga el resto automáticamente.
En cuanto a la auditoría, este es un proceso más de la BD que de PB, pero si se hace desde la BD, la puede volver lenta. Para hacerlo desde PB, te recomiendo utilizar el evento SQLPreview del DW en el cual puedes crear un registro en una tabla o en un archivo (como un LOG) con los movimientos realizados sobre la tabla vinvulada al DW.
Respuesta
1
Al imprimir un DW en PB, el salto de ágina lo maneja automáticamente según el tamaño de papel seleccionado y el formato del DW (header-Detail-Footer). Una solución para tu problema sería agrandar el tamaño del header y el footer y adaptarlo al tamaño del formulario continuo, de esta manera lograrás que el detalle entre en el área del formulario continuo destinada a este fin.
Con respecto a la pregunta de auditoría no existe nada en PB que reslice lo que estás necesitando. Una solución a requerimiento sería en el motor de base de datos agregarle trigger a las tablas que deseas auditar y en el código del trigger grabar en una tabla de auditoría, debés tener en cuenta que esto trae ventajas y desventajas, ventajas: no debes modificar las aplicaciones que graban o modifican estas tablas y si se modifican estas tablas por fuera de las aplicaciones también se registra en la auditoría. Desventaja: Mayores demoras en la actualización de las tablas.
Respuesta
1
Respecto a la Primera pregunta, la de 33 lineas por página, lo que tienes que hacer es cambiar el tamaño de página de la impresora, para una factura en matricial estándar, me parece que es en vez de A4 de tipo carta.
Respecto a la segunda pregunta, en Pb no hay forma, no obstante lo que puedes hacer es crearte históricos y asignar triggers directamente en la Base de Datos en cada tabla que quieres llevar este control. No se que con BD estas trabajando pero hoy en día todos los moteres de BD admiten triggers. Deberías un triger for update.
Respuesta
1
Bueno para lo de la impresión puedes probar cambiando el tamaño del papel en las propiedades del dw composite. Para que use pamel media carta. Así mismo verifique que los satawindows que lo componen estén bien dimensionados .
Por otro lado la auditoria puede realizarla programando los datawindows. Te sugiero que cree una tabla de sucesos y va insertando ahí la tabla, el usuario, que suceso, etc. Luego en los datawindows cuando inserte filas o modifique entonces las inserta a la tabla. Para saber si han modificado filas o si han borrado puede usar:
IF dw_1.ModifiedCount() > 0 THEN
//insertar a la tabla
Para saber si han borrado use
Deletedcount()
Para ver cuales le borraron puede ver en el buffer deleted! Y los registros modificados con dw_1. GetNextModified
Bueno le recomiendo que planee muy bien esto porque es un modulo bastante largo y se debe adecuar mucho sobretodo en la herencia para que todos los datawindows funciones con esto. Bueno cualquier otra cosa con gusto.
----------------------
Visita
www.powerbuilder.org
El Portal de los programadores de Power Builder
Respuesta
1
Por el tema de auditoria, yo hice un trigger en la base de datos.
El trigger se ejecuta al momento del update.
Guarda en una segunda tabla la fecha y el tipo de cambio.
Si te interesa te mando un ejemplo.
Por la impresión, yo lo que hago es abrir directamente un trabajo de impresión y le mando los códigos de escape línea a línea.
Para tu caso, te recomiendo que configures la impresora y le cambies la longitud de página.
Si lo deseas también puedo mandarte un ejemplo de como imprimir línea a línea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas