Reqûete ADO

Bonjour,

Je viens de commencer à utiliser ADO en VBA et je rencontre un problème.

J'ai une requête qui s’exécute parfaitement lorsque je l'exécute sous Microsoft Query mais qui me renvoie l'erreur "Type de données incompatible dans l'expression du critère" lorsque je l'exécute en VBA.

Voici la reqûete :

UPDATE `S:\FILIERE_IRD\PUBLIC\MACROS\OSF Fraude\Suivi- Fraude-CS2IAP pour test copie.xls`.`Base$` `Base$` SET `Base$`.`NOM FICHIER SOURCE` = '' , `Base$`.`DATE DE SAISIE` = #16/03/2016# , `Base$`.`NUM DOSSIER SINISTRE /CONTRAT/ AFF ARIA` = 'B1550432296' , `Base$`.`NOM CLIENT` = 'NEAL JONATHAN TEST' , `Base$`.`CODE SERVICE` = '9500' , `Base$`.`CODE GESTIONNAIRE` = 'H97312' , `Base$`.`DATE DE SURVENANCE` = #04/08/2015# , `Base$`.`NUMERO DU CONTRAT` = '40721160' , `Base$`.`CODE INTERMEDIAIRE` = 'H97312' , `Base$`.`ORIGINE DETECTION` = '9' , `Base$`.`NATURE DU SINISTRE` = '1' , `Base$`.`ETAT` = 'C' , `Base$`.`CODE EXPERT` = '' , `Base$`.`RESULTAT FRAUDE` = '' , `Base$`.`NOM ENQUETEUR` = '' , `Base$`.`DATE SAISINE ENQUETEUR` = #16/03/2016# , `Base$`.`CONCLUSIONS ENQUETEUR` = '' , `Base$`.`DATE DU DEPÔT RAPPORT ENQUETEUR` = #16/03/2016# , `Base$`.`DELAI ENQUETE` = '' , `Base$`.`HONORAIRES FRAIS ENQUETEUR` = '' , `Base$`.`ECONOMIE BRUTE ESPEREE` = '1500' , `Base$`.`ECONOMIEBRUTE REALISEE` = '0' , `Base$`.`ECONOMIE NETTE REALISEE` = '' , `Base$`.`DATE MAJ` = #16/03/2016# , `Base$`.`COMMENTAIRES OBSERVATIONS` = '' , `Base$`.`FRAIS DIVERS` = '' , `Base$`.`NATURE DU PORTEFEUILLE` = 'PP' WHERE `Base$`.`NUM DOSSIER SINISTRE /CONTRAT/ AFF ARIA` = 'B1550432296'

Et voici le code permettant d'exécuter cette requête :

Sub connexion(Fichier As String, requete As String)

    Debug.Print (requete)

    Set cn = New ADODB.Connection

    Do While cn.State <> 0
    Loop

    '--- Connection ---

    With cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & fichierBDD & _
            ";Extended Properties=Excel 8.0;"
        .Open
    End With
    '-----------------

    'Définit la requête.
    '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.

    Set rst = New ADODB.Recordset
    Set rst = cn.Execute(requete)

End Sub

Je précise que ce code fonctionne très bien pour d'autres requêtes.

Merci de votre aide et désolé si un Post existe déjà pour ce sujet mais je ne l'ai pas trouvé.

Re-bonjour,

Un collègue vient de me donner la solution.

Il suffit d'ajouter chaque champs un par un dans le SET de la requête pour savoir lequel fait planter.

Dans mon cas c'est un champs de type Integer que j'intégrais en tant que String.

Bonne soirée à vous.

Rechercher des sujets similaires à "requete ado"