Interop.ASD100Lib.rarBonjour.
Une fois, j'avais posté un message où je rencontrais un problème pour lire cette dll (cf ici), mon problème a pu être résolu, ce que je ne savais pas, c'est que comme j'étais dans un contexte ODBC, il ne fallait que je me serve de la dll asd100Lib.dll mais de cbodbc32.dll, j'avais ainsi implémenté cette fonction qui renvoie le résultat attendue :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| PROCEDURE GetQteSto(f_depot est une chaîne, f_date est une chaîne, f_arRef est une chaîne)
l_qteStock est un réel
l_res est un entier sans signe=0
hInst est un entier
hInst = ChargeDLL("CBODBC32.DLL")
l_dateref est une chaîne
SI hInst = 0 ALORS
Erreur("Erreur lors du chargement")
SINON
l_dateref=DateVersChaîne(f_date,"JJMMAA")
l_res=AppelDLL32("cbodbc32.DLL", "CIALStockQte", Val(f_depot), f_arRef, 0, 0, l_dateref, &l_qteStock)
FIN
DéchargeDLL(hInst)
RENVOYER l_qteStock |
Aujourd'hui, le contexte est différent, je suis désormais sous sql server, je ne peux pas me servir de la dll cbodbc32.dll (si je le fais, j'ai le message d'erreur que la dll cbodbc32IMPL.dll est manquante)
Là, j'ai implémenté cette fonction dans mon nouveau contexte :
1 2 3 4 5 6 7 8 9 10 11 12 13
| PROCEDURE GetQteSto(f_depot est une chaîne, f_date est une chaîne, f_arRef est une chaîne)
l_qteStock est un réel
l_res est un entier sans signe=0
hInst est un entier
hInst = ChargeDLL("Interop.ASD100Lib.dll")
l_dateref est une chaîne
SI hInst = 0 ALORS
Erreur("Erreur lors du chargement")
SINON
l_dateref=DateVersChaîne(f_date,"JJMMAA")
l_res=AppelDLL32("Interop.ASD100Lib.dll", "StockQte", Val(f_depot), f_arRef, 0, 0, l_dateref, &l_qteStock)
FIN
DéchargeDLL(hInst) |
La ligne
hInst = ChargeDLL("Interop.ASD100Lib.dll")
s’exécute très bien (là à l'instant, cette fonction m'a renvoyé la valeur 51380224)
mais j'ai un plantage au niveau du code suivant:
l_res=AppelDLL32("Interop.ASD100Lib.dll", "StockQte", Val(f_depot), f_arRef, 0, 0, l_dateref, &l_qteStock)
disant que la fonction StockQte n'a pas été trouvée.
Ce message d'erreur, je ne le comprend pas très bien:
1) en vb, j'intègre cette dll dans le projet, le code suivant s’exécute très bien:
1 2
| Dim l_test As New ASD100Lib.Cial
l_test.StockQte(...) 'liste de paramètres |
2) dans windev, quand j'intègre cette même dll, et que je regarde son contenu, je vois que je dois faire appel à la fonction get_StockQte mais cette dernière se trouve dans la classe CialClass (bizarrement, la classe Cial existe mais elle est définie comme abstraite, de plus, elle est vide).
Suite à des remarques que j'avais eu dans mon autre message, j'ai voulu tenter le bout de code suivant:
1 2 3 4 5
| PROCEDURE GetQteSto(f_depot est une chaîne, f_date est une chaîne, f_arRef est une chaîne)
l_dateref est une DateHeure=f_date
l_qteStock est un réel
l_test est un ASD100Lib.CialClass
l_test.get_StockQte(Val(f_depot),f_arRef, 0, 0, l_dateref) |
Mais j'ai un plantage au niveau du code suivant:
l_test est un ASD100Lib.CialClass
où j'obtiens le message d'erreur suivant:
Le framework .NET a renvoyé l'erreur suivante :
La récupération de la fabrique de classe COM pour le composant avec le CLSID {185C20DD-1ACE-4D6E-A9C0-F9F09515AE59} a échoué en raison de l'erreur suivante*: 80040154.
Je ne sais pas si ça peut être un élément de réponse ou pas, mon projet est en 32 bits.
Auriez-vous des idées de comment je devrais m'y prendre?
Merci
Edit: j'ai également essayé de me servir de l'assistant de la fonction AppelDLL32 pour essayer de voir les fonctions présentes dans cette dll, j'ai voulu ajouter ce fichier, j'obtiens le message d'erreur suivant : Impossible de charger la DLL spécifiée.
Edit2: je vous met la dll que j'utilise en PJ.
Partager