Connxion ODBC Informix

Poser vos questions de programmation en AutoHotkey
benlard
Posts: 3
Joined: 05 Jan 2018, 10:12

Connxion ODBC Informix

05 Jan 2018, 10:16

Bonjour les gens,

Je voulais savoir si quelqu'un à déjà essayer de faire une connexion à une base de donnée Informix à l'aide des drivers ODBC.
Je vous explique en vitesse ma situation, au travail on essaie de mettre en place des automatisations avec AutoHotKey, qui irai interroger la DB de notre ERP (en Informix).

Pour info les postes client sont en Windows 7.
Nous avons installé sur nos postes les drivers ODBC clientsdk.3.70.FC1.64 télécharger sur le site d'IBM et créer les sources de données sur la machine(DSN).


Auriez-vous une idée de comment se connecter à la base (à l'aide des DSN), d'effectué une requête et d'en récupérer sa valeur dans AutoHotKey et de refermer la base?
Ou si vous avez une idée sans utilisé les sources de données (DSN) c'est encore mieux.

Cela pourrait aussi venir d'un outil "Externe" que l'on pourrait appeler à partir de la commande "RUN" de AutoHotKey avec des paramètres d'entrés...

J'ai essayer avec odbc.exe de Outwit (permet de faire une requête à l'aide d'un exécutable (odbc.exe)) mais je n'y suis pas arrivé: https://www2.dmst.aueb.gr/dds/sw/outwit/
Si quelqu'un à une idée, elle est la bienvenue.

Merci d'avance,
Salutations

Ben
User avatar
joedf
Posts: 6440
Joined: 29 Sep 2013, 17:08
Facebook: J0EDF
Google: +joedf
GitHub: joedf
Location: Canada, Quebec
Contact:

Re: Connxion ODBC Informix

05 Jan 2018, 13:58

benlard
Posts: 3
Joined: 05 Jan 2018, 10:12

Re: Connxion ODBC Informix

11 Jan 2018, 09:09

Salut Joedf,

Merci beaucoup pour ta réponse et désolé pour ma réponse tardive, je n'étais pas revenu sur ce sujet depuis le début de la semaine. En cherchant un peu et en m’aidant de tes liens, j'ai pu trouvé une solution (en utilisant les exécutables Odbc.exe et Cb.exe) qui me semble assez fonctionnel:

En gros ma solution consiste à:

1: Lancer depuis AutoHotKey une ligne de commande Windows (cmd)
2: Depuis cette ligne de commande, lancer la librairie Odbc.exe qui sert à se connecter à une Base de donnée (dans mon cas Informix) à l'aide des sources de données DSN et de lancer une requête SQL
3: Le résultat de la requête SQL, s'affiche dans la ligne de commande. Pour récupérer le résultat, on va utiliser la librairie Cb.exe qui sert à copier le contenu qui se trouve fenêtre de la ligne de commande Windows dans le clipboard
4: Dans AutoHotKey assigner dans une variable le contenu du clipboard


Pour ce faire, on va devoir utilisé les sources de données DSN de Windows. J'ai donc installé le IBM SDK Client 3.70(32bit, car l'éxécutable Odbc.exe semble être en 32bit, si j'installe les drivers ODBC en 64bit, un message d'erreur de compatibilité apparait lors de l'utilisation de ODBC.exe) sur mon poste Windows 7 Pro 64bit.

Pour installer les Driver ODBC en 32bit sur un pc 64bit, il faut faire ceci:

1: Télécharger les sources sur le site d'IBM 3.70 32bit
2: Aller dans les variables d'environnement, dans la variable PATH, ajouter --> ;C:\Windows\SysWOW64
3: Puis lancer l’exécutable et installer en version standard
4: Une fois installé, ouvrir le gestionnaire de sources de données ODBC (32bit) en le lançant par--> C:\Windows\SysWOW64\odbcad32.exe
5: Ajouter vous sources de données DSN (utilisateurs ou systèmes selon votre besoin) en utilisant dans mon cas le driver IBM INFORMIX ODBC DRIVER

6: Une fois vos sources de données configuré, vous pouvez télécharger les librairies Odbc.exe (https://www2.dmst.aueb.gr/dds/sw/outwit/) et Cb.exe (https://autohotkey.com/board/topic/312- ... -operation)
7: Placer les librairies sur votre réseau (si vous voulez partager ces librairies avec plusieurs utilisateurs) ou sur votre pc en local et copier le lien
8: Créer un nouveau script AutoHotKey et copier le code suivant (A noter que j'ai copier mes librairies sur le réseau, j'utilise donc la commande "pushd" pour y accéder. Si vous êtes en local, remplacer "pushd" par "cd"):

Clipboard =
RunWait, %comspec% /c pushd VotreCheminReseau && odbc.exe "VotreNomDeSourceDeDonneDSN" "VotreRequeteSQL'" | cb.exe
Resultat = %Clipboard%
MsgBox %Resultat%

Si tout ce passe bien en lançant se script, vous devriez pouvoir afficher le résultat de cette requête.
!!!Cette méthode fonctionne si l'on votre requête retourne qu'une colonne dans votre table!!! Si vous voulez retourner plusieurs colonnes, il faudra lancer plusieurs requêtes (il y a peut être possibilité d'améliorer...)

En esperant que cela pourra aider certains d'entre vous.
A+

Ben
User avatar
joedf
Posts: 6440
Joined: 29 Sep 2013, 17:08
Facebook: J0EDF
Google: +joedf
GitHub: joedf
Location: Canada, Quebec
Contact:

Re: Connxion ODBC Informix

11 Jan 2018, 20:45

Wow, une solution complexe! Merci de partager cela pour les futurs utilisateurs :+1:
benlard
Posts: 3
Joined: 05 Jan 2018, 10:12

Re: Connxion ODBC Informix

12 Jan 2018, 07:57

Effectivement un peu "complexe" pour effectuer une simple requête SQL mais je n'ai pas trouvé plus simple ;)
Pour information lors de la copie du Clipboard, apparemment un retour à la ligne est ajouté pour chaque résultat, ce que l'on désire pas forcément, pour les éliminer voici le code:

StringReplace, VariableTexteARemplacer, VariableOuLeResultatSeraAttribuer, `r`n,, All

++
Ben
User avatar
joedf
Posts: 6440
Joined: 29 Sep 2013, 17:08
Facebook: J0EDF
Google: +joedf
GitHub: joedf
Location: Canada, Quebec
Contact:

Re: Connxion ODBC Informix

12 Jan 2018, 19:36

HMM c vrai... je suggère fortement d’essayer qqch comme ça
https://github.com/AHK-just-me/Class_SQ ... /README.md

Return to “J'ai besoin d'aide”

Who is online

Users browsing this forum: DeeJayOne and 1 guest