Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
21 juin 2011 à 13:51
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
24 juin 2011 à 07:52
Bonjour à tous,
Encore une question sur les DLL mais sans rapport avec celle d'hier.
Une de mes DLL persos est dédiée aux rapports avec SQL et je l'utilise sans problème depuis plusieurs années.
Une de mes fonctions interagit avec le clic sur une colonne de mes DataGrid de mes applications qui la référencent.
Pour ce faire, dans les arguments de ma fonction j'accepte un paramètre de type Columns (les colonnes des datagrid (que j'ai du référencé dans mes composants de la DLL).
Jusqu'à hier je n'avais aucun problème.
Hier j'ai voulu ajouter des fonctions nécessitant l'utilisation de la DLL Microsoft SQLDMO et là patatras, je me retrouve avec un 2ème type Columns dans l'intellisense mais aucun ne convient et j'obtiens "Type non Valide" à l'appel de ma fonction de tri des colonnes.
1ère question, existe-t'il une DLL (et non un OCX) pouvant remplacer MSDATGRD.OCX et essayer de jouer sur la priorité des DLL référencées.
2ème question si la 1ère ne marche pas, quelqu'un aurait-il une solution autre que sortir ma fonction utilisant DMO pour la mettre ailleurs (et créer une DLL avec une seule fonction...) !!!
Pour plus de précision, je n'ai qu'une seule fonction utilisant DMO et qui me sert à retrouver le nom de mon serveur SQL autrefois codé en dur dans ma fonction de connexion (c'est un serveur personnel que je suis seul à utiliser).
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 21 juin 2011 à 19:05
Bonjour,
Le cas se produit quand on liste DAO et ADO dans un même projet en VB6, dans ce cas, on s'en sort de cette manière :
* As ADOBD.Recordset
ou
* as DAO.RecordSet
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 22 juin 2011 à 08:24
Salut NHenry et merci de ta réponse,
Malheureusement cela ne marche pas, peut-être parce qu'il s'agit d'un OCX.
Ci-dessous la déclaration normale de ma fonction:
Public Function SQL_Sort(ByRef Columns As Columns, ByVal ColIndex As Integer, _
ByRef tSort As BH_tSortedColumns, ByRef Recordset As Recordset)
Si je rajoute SQLDMO dans les références, le 1er argument est alors considéré comme un objet Column de SQLDMO et l'appel renvoie donc une erreur de type. Si j'essaie de la qualifier (DataGrid.Columns), j'obtiens là aussi une erreur de type, quant à passer tout le Datagrid en paramètre, j'ai une interdiction de passer les modules d'objet privées dans de modules d'objets publics comme arguments).
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 24 juin 2011 à 07:52
Bonjour,
Enfin, VB.NET serait une meilleure alternative
j'en doute pas mais j'ai plusieurs milliers de lignes de code à réécrire APRES avoir appris un minimum sur .NET qui m'a l'air beaucoup plus "verbeux" que VB6.
En attendant, j'ai résolu la question à l'aide d'une nouvelle DLL qui ne contient que la fonction utilisant DMO et qui n'est appelé que par la DLL de mes fonctions SQL.