Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Retour d'erreur SQL / Firebird

Bebabeloola

XLDnaute Nouveau
Bonjour.

J'utilise une macro sous Excel qui créée une requête Firebird (similaire à SQL) pour rechercher des produits dans une base de données selon plusieurs critères. En gros, les critères de la requetes sont générés en fonction des champs saisis sur Excel. La requete est assez lourde et possède des jointures de tables et de nombreux critères.
J'utilise la connexion suivante:
Dim cnnADO As New ADODB.Connection
Dim rc As New ADODB.Recordset

cnnADO.ConnectionString = "ODBC;DSN........"
If Not (cnnADO.State) Then cnnADO.Open

rc.Open ("SELECT ............."), cnnADO, adOpenDynamic, adLockOptimistic


On m'a remonté une erreur ce matin qui faisait planter VBA lors du lancement de la requete. Le message d'erreur était le suivant:
Ce pilote ODBC ne prend pas en charge les propriétés demandées..
Plutôt prise de tête car selon les critères utilisés (client, dimensions), la requete plantait ou pas.

Pour trouver la cause du problème, j'ai directement créé sous Excel une connexion à la source de données et copié le texte de ma requete. Cette fois-ci, le message d'erreur était bien plus explicite:
[ODBC Firebird Driver][Firebird]conversion error from string "0219.1. "
Ca m'a permis d'identifier rapidement l'origine du problème : un point en trop à la fin du champ

Ma question est la suivante: comment récupérer ce message d'erreur sous VBA ?

Merci
 

dysorthographie

XLDnaute Accro
Bonjour,
Notes qu'un message d'erreur est préférable à un fonctionnement erratique !
N'utilises pas On Error si tu ne sais pas le géré.
Code:
On Error Resume next
'Execution de la Requête
If Err then msgbox err.description
on Error Goto  0
 

dysorthographie

XLDnaute Accro
Désolé mais il n'y a pas d'autres moyens de récupérer l'erreur !

Notes qu'Ado considère les points comme des séparateurs entre le différents termes de la base de données !
[MyServeur].[MyBase].[MyTable].[MyChamp]
Si tu as des champs avec des points il faut les substituer par de #
Champ.Date par Champ#Date
 
Dernière édition:

Bebabeloola

XLDnaute Nouveau
Je ne suis pas sûr de comprendre ta réponse, mais quoi qu'il en soit, ma requete fonctionne très bien dans l'immense majorité des cas. Je n'ai pas d'erreur de programmation mais une erreur de saisie utilisateur.
Pour les rares cas comme celui-ci où je rencontre une erreur difficilement prévisible, je souhaite obtenir le même message que lors d'une requete hors VBA.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…