OVH Cloud OVH Cloud

Aprés les lignes ;-)

9 réponses
Avatar
BrunoL
Bonjour,

Je progresse, j'ai récupéré les data. Mais j'ai une question plus générale.
J'utilise win32com,
>>> oCat = win32com.client.Dispatch(r'ADOX.Catalog')
>>> oCat.ActiveConnection = adoConn
>>> oTab = oCat.Tables

M'indique la liste des tables existantes. En fait, TABLE, SYSTEM TABLE
et VIEW.

Existe t'il un moyen de savoir quels attributs existent pour mon oCat ?
Ex. : oReq = oCat.Pouet
qui me raménerait les Pouets n'existe pas !

C'est pas dir() et help().

Merci.

9 réponses

Avatar
Méta-MCI
Bonjour !


D'abord : la doc.


Ensuite, plus de détails.

Ce n'est pas forcément simple. Les serveurs COM (objets COM) peuvent être
statiques, dynamiques, ou les deux.

Pour tout ce qui est dynamique, il n'y a guère d'espoir, en dehors de la
doc.

Mais, avec les serveurs statiques, il y a souvent une bibliothèque de types,
récupérable.

Le plus simple, c'est d'utiliser l'utilitaire MakePy. Dans PythonWin, passer
pas le menu "Tools" + "Makepy". Cela génère un script Python, dont la
lecture du code-source sera très instructive.


Pour mémoire, je signale d'autres cas, qui peuvent se présenter :

Dans certains cas, il existe un fichier .TLB (Type LiBrary). Si ce fichier
n'a pas été interprété par Makepy, il est possible d'aller l'explorer. C'est
un peu compliqué, et j'approfondirai uniquement si besoin.

Certains serveurs COM utilisent IDL (c'est le cas de OOo). En théorie, il
est possible de convertir de l'IDL en TLB. Mais, je ne sais pas faire...

Il arrive que les serveurs COM aient une structure d'automatisation assez
différente, adressable par COM via un pont (bridge). C'est encore le cas
d'OOo (bridge sur Uno). Et alors, là, c'est très vite la galère, car on
multiplie les besoins de transtypage.


Je signale que les serveurs COM développés en Python, peuvent être
statiques, et/ou dynamiques, mais ne fournisseurs pas de bibliothèque de
types. Ils ne sont pas reconnus par MakePy.
(au passage, si l'on veut les utiliser un serveur COM Python avec C#, il
faut utiliser une façon de faire appelée Late Binding, mais c'est possible).


Je résume :
1- la doc
2- MakePy


@+

Michel Claveau
Avatar
BrunoL
Bonjour !


D'abord : la doc.


Ensuite, plus de détails.

Ce n'est pas forcément simple. Les serveurs COM (objets COM) peuvent être
statiques, dynamiques, ou les deux.

Pour tout ce qui est dynamique, il n'y a guère d'espoir, en dehors de la
doc.

Mais, avec les serveurs statiques, il y a souvent une bibliothèque de types,
récupérable.

Le plus simple, c'est d'utiliser l'utilitaire MakePy. Dans PythonWin, passer
pas le menu "Tools" + "Makepy". Cela génère un script Python, dont la
lecture du code-source sera très instructive.


Pour mémoire, je signale d'autres cas, qui peuvent se présenter :

Dans certains cas, il existe un fichier .TLB (Type LiBrary). Si ce fichier
n'a pas été interprété par Makepy, il est possible d'aller l'explorer. C'est
un peu compliqué, et j'approfondirai uniquement si besoin.

Certains serveurs COM utilisent IDL (c'est le cas de OOo). En théorie, il
est possible de convertir de l'IDL en TLB. Mais, je ne sais pas faire...

Il arrive que les serveurs COM aient une structure d'automatisation assez
différente, adressable par COM via un pont (bridge). C'est encore le cas
d'OOo (bridge sur Uno). Et alors, là, c'est très vite la galère, car on
multiplie les besoins de transtypage.


Je signale que les serveurs COM développés en Python, peuvent être
statiques, et/ou dynamiques, mais ne fournisseurs pas de bibliothèque de
types. Ils ne sont pas reconnus par MakePy.
(au passage, si l'on veut les utiliser un serveur COM Python avec C#, il
faut utiliser une façon de faire appelée Late Binding, mais c'est possible).


Je résume :
1- la doc
2- MakePy


@+

Michel Claveau



Super.


Merci MICHEL.

Avatar
Méta-MCI
Re


Au passage, je signale un truc, qui pourrait intéresser certains
programmeurs Python+Pywin32.

Dans la dernière version (2.07), il y a, dans les exemples, IEtoolbar.py
Ce petit script permet de créer une "barre d'outils" pour Internet Explorer,
en Python, et capable, aussi bien de farfouiller à l'intérieur d'I.E. et des
pages HTML chargées, que de lancer n'importe quel script Python. J'en ai
tiré/adapté une version perso, avec plusieurs changements/évolutions.
Et ça marche aussi avec l'explorateur de fichiers de Windows, avec le "Poste
de Travail", et avec les dossiers du bureau.

Cependant, certain ayant signalé quelques petits problèmes (que je n'ai pas
vu, ni une demi-douzaine de clients chez qui j'ai installé le truc), Mark
Hammond a promis une version 2.08 de PyWin32, qui règlerait ces problèmes,
pour cette semaine.


Voilà, c'était le troll fun du jour.


@-salutations
--
Michel Claveau
Avatar
BrunoL
Re


Au passage, je signale un truc, qui pourrait intéresser certains
programmeurs Python+Pywin32.

Dans la dernière version (2.07), il y a, dans les exemples, IEtoolbar.py
Ce petit script permet de créer une "barre d'outils" pour Internet Explorer,
en Python, et capable, aussi bien de farfouiller à l'intérieur d'I.E. et des
pages HTML chargées, que de lancer n'importe quel script Python. J'en ai
tiré/adapté une version perso, avec plusieurs changements/évolutions.
Et ça marche aussi avec l'explorateur de fichiers de Windows, avec le "Poste
de Travail", et avec les dossiers du bureau.
[]


en version de base que fait-il ?

Il m'a ajouté une barre vide. D'aprés le source il devrait afficher
quelques bouton, non ?


Que signifie l'avertissement :
# if you copy and modify this example, be sure to change the clsid
below

Avatar
Méta-MCI
'soir !

Pour moi, l'exemple de base affichait une barre, composée d'un titre, et de
3 boutons.

@-salutations

Michel Claveau
Avatar
BrunoL
'soir !

Pour moi, l'exemple de base affichait une barre, composée d'un titre, et de
3 boutons.

@-salutations

Michel Claveau



J'ai trouvé le pb. Mes barres outils étaient vérouillées. Le bouton Py32

apparaissait bien mais faute de place pas les autres, la fonction liste
déroulante est à implanter ;-)

A+

Avatar
Michel Claveau
Bonsoir !

la fonction liste déroulante est à implanter ;-)




En fait, je préfère un menu dans un petit pop-up. C'est une facilité
(pour moi), car je sais faire ; et c'est indépendant de l'hôte (I.E.)

Mais, l'important, c'est la possibilité d'avoir un contrôle en Python
dans I.E. ; l'imagination fera le reste...

--
@-salutations

Michel Claveau



Avatar
Bertrand B
Bonsoir !

la fonction liste déroulante est à implanter ;-)




En fait, je préfère un menu dans un petit pop-up. C'est une facilit é
(pour moi), car je sais faire ; et c'est indépendant de l'hôte (I.E .)

Mais, l'important, c'est la possibilité d'avoir un contrôle en Pyth on
dans I.E. ; l'imagination fera le reste...

Pour tcl il y a un plugin ... pour IE et les autres ... s'il exsitait la

même chose pour python ce serait "the foot"

http://www.demailly.com/tcl/plugin/




Avatar
Michel Claveau
Bonsoir !

Il y a(vait) un truc : axscript, qui permet(tait) de mettre du Python
dans les pages HTML, et de les faires jouer par Internet-Explorer,
cpoté client (configuré pour ça, avec l'Active-Scripting).

Mais, si je sais faire de l'Active-Scripting, l'axscript, lui, a
toujours été bridé par les multiples protections (paranoïa sécuritaire
oblige).

Et, il me semble avoir lu que l'axscript, côté client, n'est plus
supporté/maintenu.

Dommage.

--
@-salutations

Michel Claveau