Conexión de PB y Sql Server

¿Cómo están?

Cree un ejecutable de mi aplicación realizada en PB 10.5 en mi pc (donde esta el sistema) me funciona bien el .exe (incluí los archivos pbd).

Lo que hice fue probarla en otra pc que tengo, y el odbc lo puedo configurar bien (me trae la base, autentica el usuario, etc) pero al ejecutar el exe, me sale el siguiente error:

DBMS odbc is not supported in your installation.

¿Cómo se puede resolver este tema?

1
Respuesta
1

Cuando ejecutas una aplicación de PB en otro equipo tienes que distribuir junto a tus ficheros (exe + pbd/dll) las runtimes de powerbuilder. Es decir, debes acompañar tu instalación de ficheros propios de PB.

Según tu versión de PB son unos u otros. Intuyo que te falta por acompañar la librería pbodbc.dll o alguna parecida.

Te lo digo de memoria porque no estoy delante de un PC para comprobarlo.

En tu carpeta de instalación de PB están todas estas dll. Debes tenerlo instalado en C:/Archivos de programa/Sybase/shared/powerbuilder. 

Ahí debes localizar las dll que debes distribuir junto a tu aplicación a otro PC.

A partir de pb11 (creo) hay una herramienta que te hace un paquete con justo las dll que debes distribuir. Si no, siempre puedes copiarlas a mano. Son del tipo pbdw105.dll, pbvm105.dll, etc...

Hola!

Gracias por la respuesta. Pude resolverlo incluyendo las dll de Power Builder. Te hago una consulta: como podría armar un archivo .ini para que guarde la cadena de conexión a la base (y también cual seria el código que tengo que utilizar en PB).

Saludos.

Puedes montar un fichero .ini con el formato estructural de la mayoría de estos ficheros. Son ficheros planos de texto (.txt) pero con extensión .ini. Por ejemplo, del tipo:

[GRUPO1]
VariableA = 1
VariableB = cosa
VariableC = perro
VariableD = 98764
VariableE = 12/10/2016
VariableF = maria

Fíjate que he empaquetado las variables dentro de GRUPO1. Puedes crear más grupos si lo deseas.

Desde PowerBuilder puedes leer este fichero con la funcion ProfileString
ProfileString ( filename, section, key, default ) (busca en la ayuda de PB para más información). El código sería del tipo:

String  ls_VarA, ls_VarB, ls_VarC, ls_VarD, ls_VarE, ls_VarF
ls_VarA = ProfileString( "C:\mifichero.ini", "GRUPO1", "VariableA", "0" )
ls_VarB = ProfileString( "C:\mifichero.ini", "GRUPO1", "VariableB", "" )
ls_VarC = ProfileString( "C:\mifichero.ini", "GRUPO1", "VariableC", "" )
ls_VarD = ProfileString( "C:\mifichero.ini", "GRUPO1", "VariableD", "0" )
ls_VarE = ProfileString( "C:\mifichero.ini", "GRUPO1", "VariableE", "01/01/1900" )
ls_VarF = ProfileString( "C:\mifichero.ini", "GRUPO1", "VariableF", "nada" )

Como verás, todos los resultados son del tipo String. Si quieres convertirlos a Long o Date o Decimal, sólo tienes que convertir los strings.

Para escribir en un INI por código, es de la misma forma pero con SetProfileString ( filename, section, key, value ). Algo así:

String    ls_NuevoValorVarA
ls_NuevoValorVarA = "999"
SetProfileString ( "C:\mifichero.ini", "GRUPO1", "VariableA", ls_NuevoValorVarA )

Como recomendación, puedes hacer que cada "GRUPO" sea una conexión diferente. Por ejemplo una a la BD real, y otra a la de BD de pruebas. Y guardas las cadenas de conexión para configurar el SQLCA a la entrada con las configuraciones que desees ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas