Bonjour à tous...

J'ai besoin de charger des données binaires dans une table, depuis une procédure VBA dans EXCEL. Je pense que ni EXCEL ni MYSQL n'ont d'importance, il s'agit de la manipulation des objets commandes de ADO.

Les données à charger: des enregistrements binaires de 1500 octets maximum, que je récupère dans une variable déclarée en string (provient d'une API), et correspondant à un VARBINARY (type de donnée SQL)

Je ne peux pas inclure la valeur de la chaine dans une commande pur_texte, et je passe donc par un objet commande et un paramètre qui correspond à la chaine à inclure dans la requête

Voici grosso modo le type de code que j'utilise...
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
17
18
19
20
 
' DBC est ma connexion... elle est ouverte
' tampon est la chaine contenant les octets (définie en string)
' pd,IB et cd sont des variables contenant des valeurs à insérer
 
'création de la commande et affectation des propriétés
Set Cmd = New adodb.Command
Cmd.CommandTimeout = 120
Cmd.ActiveConnection = DBCH
Cmd.CommandType = adCmdText
 
' définition de la requête
Cmd.CommandText = "INSERT INTO Classeurs(PDoss,IndBloc,CDoss,Bloc) VALUES(" & _
        pd & "," & IB & ",'" & Replace(cd, "'", "''") & "',?)"
 
' création et ajout du paramètre 
Cmd.Parameters.Append Cmd.CreateParameter("@4", adVarBinary, adParamInput, Len(Tampon), Tampon)
 
'Exécution de la requête
cmd.execute...
Avant l' exécution (lors de la création du paramètre), j'ai une erreur :
"L'application utilise une valeur d'un type incorrect pour l'opération en cours"

Il doit y avoir une incompatibilité entre le type de paramètre adVarbinary (ou Binary) et un chaine de caractères... Mais je ne vois pas comment faire, autrement !

Merci à tous de votre aide!