Ir al contenido principal

El poder del Objeto Transaction (Mapear Funciones y/ó Procedimientos)

Hola, una de las ventajas de powerbuilder es el soporte nativo con las principales bases de datos, sin embargo muchos desconocen el poder que tiene el objeto transaction en este ejemplo veremos como aprovechar sus bondades para aplicarlas en nuestros desarrollos:

DECLARE P_COPIAR_ORDEN_PEDIDO PROCEDURE FOR TSS.P_COPIAR_ORDEN_PEDIDO 

         P_ID => :idb_id,
        P_COPY_CANT_R => :ii_copiar_cant_recibidas
)  ;


execute P_COPIAR_ORDEN_PEDIDO;
If SQLCA.SQLCode = -1 Then
    Error.of_Mensaje()
    Rollback;
    Return
End If

FETCH P_COPIAR_ORDEN_PEDIDO INTO :ldb_return;
if SQLCA.SqlCode <> 0 then
    Error.of_Mensaje()       
    Rollback;
    CLOSE P_COPIAR_ORDEN_PEDIDO;
    RETURN
end if

CLOSE P_COPIAR_ORDEN_PEDIDO;
COMMIT;


IF ldb_return .....

Esta sentencia es la mas comun utilizada sin embargo esto supone ciertas restricciones, dependencia con el motor y afecta el rendimiento al manipular codigo combinado entre el motor de base de datos y la aplicacion.

una solución elegante seria utilizar

los Remote Store Procedure, lo cual generaría un codigo como este

li_return = SQLCA. P_COPIAR_ORDEN_PEDIDO(:idb_id, ii_copiar_cant_recibidas)

Como vera la sintaxis es mas simple y eficiente.

Para utilizar esta tecnica deberan hacer lo siguiente:

  • Crear una Clase Transaction y mapear el objeto SQLCA con ella, para hacerlo solo deben ir a las Additional Properties del Objeto Application, seleccionar la pestaña Variable Types y en el campo SQLCA escribir el nombre de la clase que crearon.
  • Abrir la Clase transaction e ir a la vista Local External Function y en esa vista click derecho seleccionar la opcion PasteSpecial/SQL/Remote Stored Procedure(s) y seleccionar las funciones o procedimientos de la base de datos que quieren mapear con la transaccion, incluso pueden seleccionar metodos de los paquetes, para realizar deben ir a la conexion y editar ir a la pestaña System y marcar la casilla List Package Subprogram.
y listo ya podran utilizar esas funciones y/ó procedimientos desde su transacción envitan todo ese codigo.




Comentarios

  1. Hola que tal, dime los remote store procedure los has podido usar en Windows de 64 bits, yo he tenido problemas con con Windows de 64 bits (W7 o W8) para evitar modificar el código y hacerlo mas extenso solo le cambie el Windows a 32 bits. Dime tu has podido hacer correr esos remote store procedure en 64 bits. Saludos

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Activar el trace en una Base de Datos de PB

Muchas veces necesitamos revisar lo que procesa la base de datos, pero en muchas ocasiones no podemos realizar debug en ella por diversas limitaciones. En ocasiones asi powerbuilder no presenta una herramienta muy util la cual permite capturar el trace de la base de datos para activarla solo basta  configurar en el dbms de nuestra conexión anteponer la palabra Trace: Ej DBConfig=simappe.sqlite Driver=SQLite3 ODBC Driver DBMS= TRACE ODBC Esto aplica para todas las bases que soporten esa funcionlaidad.

Retrive Datawindow Composite vs Nested

Hola, muchas veces en nuestros desarrollos creamos plantillas para automatizar y agilizar procesos por ejemplo en los reportes; tomare como ejemplo mi experiencia en el caso. Hace poco nos pidieron la generación de muchos reportes con funcionalidades de personalización en tiempo real, es decir brindarle la posibilidad de poder modificar titulos, logos, mensajes y que fuera posible en ciertos casos ocultar algunas zonas especificas (Encabezados y Pie de Páginas o mejor conocidos como Header y Footer). Inmediatamente nos dimos cuenta que debiamos usar plantillas, sin embargo surgieron dudas sobre que tipo de datawindow contenedor utilizar en la plantilla a implementar. ¿Composite ó Nested? . Anexo explicación resumida: Datawindow Composite: Este tipo de datawindow son contenedores de datawidows no tienen datos internos que se compartan, la forma de usarlos es un poco básica es decir agregas datawindows y el retrieve se realiza en el orden en el cuál fueron agregados. Ejemplo: Su...