Power Builder - Pasar transacción por referncia a función de pbd

 
Vista:
sin imagen de perfil

Pasar transacción por referncia a función de pbd

Publicado por Cecilia (4 intervenciones) el 30/05/2017 14:25:34
Hola a todos.
Tengo una función en una pbd externa para conectar a la base de datos. Quiero desde mi aplicación poder llamar a esa función y que me devuelva la transacción ya conectada. Todo esto viene porque no quiero que se vean los parámetros de la conexión en la transacción de mi aplicación. Cada vez que llamo a la función me da el error 35 Error calling external object function. Pregunto: ¿es que no existe forma de pasar un objeto por referencia a una funcion en una pbd externa? y me refiero a un objeto no a un tipo de dato simple(string, long...).
Si esto no es posible, alguien podría decirme si existe alguna forma de que no sean consultables los valores de una variable en modo depuración.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pasar transacción por referncia a función de pbd

Publicado por Leopoldo Taylhardat (710 intervenciones) el 30/05/2017 22:37:00
Saludos...

Tienes que crear un dll en lenguaje C (tambien desde powerbuilder puedes hacerlo..

y agregar el dll com función externa...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pasar transacción por referncia a función de pbd

Publicado por Cecilia (4 intervenciones) el 01/06/2017 08:11:27
Gracias por contestar, pero es que ese es mi gran problema, no consigo que powerbuilder "conecte con la dll". Te cuento, me cree una dll en C# y llame a la función desde powerbuilder con la sintaxis function integer of_dame_tr(ref transaction atr_sqlca) library "funciones_seg.dll" pero no hay manera. Por ello en vez de una dll cree una pbd, que al fin y al cabo no es mas que una dll en lenguaje powerbuilder,.Con la sintaxis de function external tampoco funciona por lo que al final la llame como si fuese una conexión con un objeto OLE y así si funciona. Funciona pero siempre que lo que pase a la función sean variables simples(string, long...) porque si paso un objeto ya da error. No se que es lo que estoy haciendo mal, pero esta claro que algo porque no puedo creer que no puedan pasar objetos por referencia a una pbd o dll.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pasar transacción por referncia a función de pbd

Publicado por Cecilia (4 intervenciones) el 01/06/2017 11:12:18
Ya por fin he podido ejecutar una función desde una dll de C#. Pero ahora..¿como igualo las transacciones en Powerbuilder y C#?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar transacción por referncia a función de pbd

Publicado por Leopoldo Taylhardat (710 intervenciones) el 02/06/2017 21:22:30
Saludos...

Sinceramente no entiendo esto...
.¿como igualo las transacciones en Powerbuilder y C#?

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Pasar transacción por referncia a función de pbd

Publicado por Cecilia (4 intervenciones) el 05/06/2017 08:02:16
Gracias por contestar.

A ver, yo no quiero obtener una transacción en powerbuilder y pasarla como puntero a C# para hacer operaciones, yo lo que quiero es alrevés, conectar una trasacción en C# y luego asignarsela a un objeto n_tr de powerbuilder. No quiero pasar los parámetros de conexión, quiero asignar la transacción directamente.

Aunque por lo que estoy viendo creo que no se puede.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar transacción por referncia a función de pbd

Publicado por Jorge (29 intervenciones) el 15/06/2017 05:36:01
A C# no lo puedes enviar una transacción por referencia; por tanto, crea una PBD pero dentro de esta crea una clase (Custom class) por ejemplo llámala n_connection y en esta clase implementa un método of_connect( ref Transaction tr) y envía la transacción por referencia.

Toda la implementación de conexión estará encapsulada en el método of_connect (...) y, dado que solo distribuirá la PBD, no se tendrá acceso a dicho algoritmo. Este método debe devolver 1 = conexión exitosa; -1 = connexión fallida.

Luego instancias la clase

1
2
3
4
5
6
7
8
9
10
11
12
13
Integer  li_rc
n_connection  lnv_connection
lnv_connection = CREATE n_connection
 
Transaction ltr_trans
 
ltr_trans = CREATE Transaction
 
li_rc = lnv_connection.of_connect( ltr_trans)
 
IF li_rc = 1 THEN
='editor_indent'>MessageBox("Aviso","Conexión exitosa")
END IF

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar