Qlik Community

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

Not applicable

Reload in others PCs -- failed ODBC

Tengo mi qvw con la conexion a base de datos:

     ODBC CONNECT32 TO [INTEGRA;DBQ=INTEGRA] (XUserId is GWHdZUZNULZOGZFMMH, XPassword is fXIZdUZNULZOGZFMHD);

Paso el documento a un cliente que tiene el mismo usuario y misma base de datos y al hacer la recarga directamente da error de conexión a la base de datos.

Si el cliente abre el documento con el Qlikview destock y realiza él la conexión se le crea esta linea en el script:

     ODBC CONNECT32 TO [INTEGRA ] (XUserIdis BLRWYUZNULZOGZFMbA, XPasswordis XMbARBRNBTdKWEZNULZOGZFMSBMCTZcR);

Y ya le conecta correctamente.

¿Por qué estás diferencias? Si el usuario y base de datos es la misma ¿no debería funcionar la conexión con el documento original que le he mandado yo?

Saludos y gracias.

9 Replies
peter_turner
Valued Contributor

Re: Reload in others PCs -- failed ODBC

Hello,

I think the problem is you need to make the ODBC connection on the client computer as it does not exist.

Or you use OLEDB connection then it should work on any computer.

Creo que el problema es que tienes que hacer la conexión ODBC en el equipo cliente como no existe.

O utiliza conexión OLEDB y debería funcionar en cualquier ordenador.

Thanks / Gracias

Not applicable

Re: Reload in others PCs -- failed ODBC

Hi Marta, Generally ODBC connection uses either SYSYTEM DSN or USER DSN.

I believe, the other Laptop uses USER DSN and thats connection should be applicable to that USER only.

Please use OLEDB or create USER DSN for ODBC Connection.

MVP
MVP

Re: Reload in others PCs -- failed ODBC

create on client computer the same odbc connection (DSN) with the same driver you use

or workaround

use an include file for the connection so the user can use his working connection and you your working connection;

there are a lot of post about it, example

Re: Include scripts

or post the 2 odbc screenshot

MVP
MVP

Re: Reload in others PCs -- failed ODBC

Hola Marta,

La conexión ODBC debe estar creada en cada equipo donde el QVW se vaya a recargar. Para ello, primero de todo, deberás instalar el driver correspondiente para poder extraer datos de la fuente de información.

Después deberás crear una conexión ODBC en el ordenador del cliente con el mismo nombre que la tuya para que pueda recargar.

La versión del driver debe ser la misma, si te fijas las líneas tuya y la de tu cliente son distintas, ya que tú has de especificar DBQ y el cliente no.

Un saludo,

Miguel

Not applicable

Re: Reload in others PCs -- failed ODBC

El ODBC está creado en el otro equipo, con el mismo nombre y mismo usuario y como DSN de Sistema. Voy a comprobar que la versión del driver sea la misma, ¿tiene que ser la misma?

Si la contraseña en mi equipo y en la del cliente es distinta no pasa nada, ¿verdad?

Muchas gracias a todos.

MVP
MVP

Re: Reload in others PCs -- failed ODBC

Hola Marta,

El driver tiene que ser compatible, aunque no sea el mismo, pero compatible entre los dos. Cuando sale una nueva versión de un producto no siempre sus drivers son compatibles con versiones anteriores.

Por otra parte sí, el password debe ser idéntico, en caso contrario al no funcionar la combinación usuario/contraseña, el sistema pregunta.

Una forma de ahorrarte tener que modificar usuario y password en cada equipo es incluirlo dentro de la definición del DSN de sistema, de esta forma, la sentencia de conexión será algo como:


ODBC CONNECT32 TO "INTEGRA"; // el user y pass los coge del DSN


Un saludo,

Miguel

Not applicable

Re: Reload in others PCs -- failed ODBC

En esto ya me pierdo un poco, ¿donde se incluye el usuario y pwd dentro del DSN de sistema? Esto sería lo ideal, porque los documentos se mandarán a 15 o 20 clientes distintos y cada uno tendrá su pwd distinto.

El documento que mandemos tendrá que funcionar tal cual en los 20 clientes, algunos tendrán bd ORACLE y otros SQL SERVER. La base de datos se llama en todas igual.

Gracias.

MVP
MVP

Re: Reload in others PCs -- failed ODBC

Hola Marta,

En la definición de la conexión, en el propio interfaz del driver, siempre tienes una opción de almacenar contraseña y usuario, de la misma forma que tienes opción a probar la conexión. No tengo disponibles ahora mismo interfaces para Oracle o SQL Server, pero sé que se puede hacer.

No obstante, otra opción es incluir ese XUserId y XPassword en variables, de forma que el nombre del DSN sea idéntico en ambas máquinas, y los usuarios se lean de ficheros externos. De hecho esto es bastante habitual cuando trabajas con varios entornos (dev, test, pre, pro) y buena práctica.

Creas un fichero de texto llamado "credentials.qvs" con el siguiente código (es un ejemplo):

SET vXUserId = 'XUserIdScrambledHere';

SET vXPassword = 'XPasswordScrambledHere';

Y en el fichero QVW, dentro del script añades:

$(include=credentials.qvs);

ODBC CONNECT32 TO [INTEGRA] (XUserId is $(vXUserId), XPassword is $(vXPassword));

No te fies de la sintaxis, que probablemente necesite alguna comilla más, fíjate en la idea. Lo importante es que el fichero "credentials.qvs" existirá localmente en cada equipo que vaya a realizar recargas y el propio usuario podría modificarlo si dispusiera de permisos sobre el fichero.

Un saludo,

Miguel

Not applicable

Re: Reload in others PCs -- failed ODBC

No lo consigo con el include. No consigo recoger los datos del usuario y pwd.

Y en la creación del ODBC tampoco veo forma de decirle que me guarde usuario y pwd.

Saludos.

Community Browser