IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Appel dll asd100Lib.dll sous SQL Server [WD20]


Sujet :

WinDev

  1. #1
    Invité
    Invité(e)
    Par défaut Appel dll asd100Lib.dll sous SQL Server
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Dernière modification par Invité ; 18/12/2015 à 10h24.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,

    est-ce que l'objet COM correspondant est enregistré ?


    The most common error when attempting to create a COM object is due to the class not being registered (meaning that the CLSID for the class doesn't have an entry under HKEY_CLASSES_ ROOT\CLSID in the Windows Registry). When an error occurs during object creation, a COMException (defined in System.Runtime.InteropServices) is thrown.

    Make sure you look in the registry of a PC on which your app works. Don't do a search, just look through the keys in HKCR\CLSID for the GUID, they are sorted alphabetically
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Invité
    Invité(e)
    Par défaut
    je vois qu'elle n'est pas installée, ce qui pourrait parfaitement expliqué le problème rencontré.
    J'ai fait un tour sur un autre forum, la dll se trouve déjà dans c:\Windows\System32, quand je lance Exécuter, que je tape
    regsvr32 Interop.ASD100Lib.dll

    J'ai le message suivant : le module "Interop.ASD100Lib.dll" a été chargé, mais le point d'entrée DLLRegisterServer est introuvable. Vérifiez que "Interop.ASD100Lib.dll" est un fichier DLL ou OCX valide, puis réessayez.
    Dernière modification par Domi2 ; 19/12/2015 à 16h07. Motif: Lien non pérenne

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    interop.asd100lib.dll n'est pas l'objet com mais une espèce d'interface (de wrapper) avec le véritable objet com. As-tu une dll asd100lib.dll (sans le interop) quelque part ou de quoi l'installer (par un kit par exemple) ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    interop.asd100lib.dll n'est pas l'objet com mais une espèce d'interface (de wrapper) avec le véritable objet com. As-tu une dll asd100lib.dll (sans le interop) quelque part ou de quoi l'installer (par un kit par exemple) ?
    J'ai lancé une recherche, cette nouvelle dll n'existe pas sur mon poste, en faisant une recherche sur le réseau, j'ai pu trouvé la dll ASD100.dll, il n'y a pas "lib" à la fin. J'ai voulu l'intégrer dans mon projet, mais j'ai eu ce message d'erreur:

    Erreur lors de l'importation de l'assemblage <ASD100.dll>.
    Vérifiez que le fichier importé est bien un assemblage .NET.
    Vérifiez que la version du framework .NET installé est au moins égale à la version du framework .NET utilisé pour compiler cet assemblage.
    Si l'assemblage référence d'autres assemblages, vérifiez qu'ils sont présents dans le même répertoire ou dans le GAC (répertoire <Windows>\assembly).
    Echec de l'ouverture des metadata de l'assemblage <C:\Mes Projets\GestionTarrifaire\Exe\ASD100.dll>.
    Erreur -2147024885

    Concernant ta deuxième question, je ne vois pas trop ce que tu demandes...

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    tu es sur un O.S 32 bits ou 64 bits ?
    si tu es sur un O.S 64 bits il faut trouver la version asd100.dll en 32 bits dans C:\Windows\SysWOW64
    essaie d'enregister le fichier asd100.dll
    sinon va voir ici
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Invité
    Invité(e)
    Par défaut
    Cette dll n'existe pas dans mon pc, ni même dans mon image virtuelle. mon image est en 64 bits, j'ai copié cette dans le répertoire approprié, en voulant l'enregistrer avec regsvr32, j'ai un message d'erreur disant que la dll n'est pas compatible avec ma version de windows.
    Merci de ton lien mais je n'utilise pas d'odbc dans mon dev, je suis en full sql server

  8. #8
    Invité
    Invité(e)
    Par défaut
    j'ai dans différentes images que avec différentes version de gescom installées, dans les versions 16.01 et 16.51, la dll asd100.dll n,existe pas, dans la version i7, 7.50. cette dll existe!!
    Reste à savoir si elle existe en 16.90, qui est la version de notre client, et comme en interne, nous n'avons rien pour l’installer, ça craint un ma.
    Dès que possible, je vais faire sur une version i7, je verrais le résultat, en espérant avoir compris la source de mon problème.

  9. #9
    Invité
    Invité(e)
    Par défaut
    j'ai fait de nouveaux tests, je suis arrivé à la conclusion suivante:
    dans une autre vm où j'ai Gescom i7 version 7.50 installée, Gescom pour sql server, j'ai aussi l'odbc de Sage qui est installée, je n'ai pas réussi à utiliser la fonction voulue en me connectant à sql server, cependant, en me connectant à l'odbc de Sage, j'ai enfin réussi à faire appel à ma fonction!

    Reste à voir si l'appel à la fonction reste possible en version non i7 avec l'odbc de Sage installée, mon intuition me dit que ça va marcher, je verrais cela à la fin de mes congés, c'est à dire une fois que papa noël sera passé

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je viens de faire de nouveaux tests, je me suis installée la même version de la gestion commerciale que celle de notre client, c'est à dire en 16.90 : en faisant une connexion OLEDB, impossible de faire appel à ma fonction (j'ai eu le message d'erreur que le dossier était non ouvert), en faisant une connexion DSN, yahoo !!
    C'est ce qui a été dit en fait dans ce lien que tu avais publié dans un de tes messages.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DLL vb2005 EXpress dans sql server 2005 EXpress
    Par alassanediakite dans le forum Développement
    Réponses: 0
    Dernier message: 29/07/2010, 21h44
  2. Equivalent de rownum sous SQL server
    Par Isildur dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/07/2009, 15h48
  3. Heure sous SQL SERVER
    Par kisscoolfresh dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/01/2004, 17h43
  4. Convertir un type de donnée sous SQL Server
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/08/2003, 15h15
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo