Dysfonctionnement nouveau de requetes SQL dans VBA
Bonjour,
J'ai développé une interface en VBA qui agit sur une base de données. Le code génère le texte de requête SQL.
Jusqu'à il y a quelque jours, cette base de donnée et son interface fonctionnaient très bien, mais depuis 2 jours je rencontre, ainsi que les autres utilisateurs de la base, un dysfonctionnement lors de requêtes UPDATE
Pourtant aucune modif n'ait été apportée.
Par exemple, la requête suivante d’actualisation d’un champ ne fonctionne plus :
UPDATE [Table$]
SET [Champ1] = "blal bla"
WHERE [Champ2] = "valeur" ;Après avoir essayé différentes fonctions de ma base, je constate que les UPDATE fonctionnent quand elles sont lancées sans condition where.
Il ne semble donc pas y avoir de processus qui « interdise » l’écriture dans la base. Exemple :
UPDATE [TablePlus$]
SET [Champ] = "bla bla"Je suppose que c’est cette condition where ou sa syntaxe qui pose problème mais pourquoi maintenant alors que jusqu'ici pas de pb)
J’ai donc testé une requete de lecture avec des conditions where comme ci-dessous, elle fonctionne sans pb !
SELECT a.[Champ1], [..], [ChampN]
FROM [Table1$] AS a, [Table2$] AS p
WHERE a.[IChamp1] = p.[Champ2];Le pb ne semble pas lié au réseau. Je rencontre les mêmes erreurs en utilisant une base de test en local sur mon PC.
La base de données est un simple fichier excel .xlsx
Le texte de ces requetes est utilisé par la commande .execute d’un objet ADODB
Set Connexion = CreateObject("ADODB.Connection")
With Connexion
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& NomFichierBDD & ";Extended Properties=""Excel 12.0;HDR=YES"";"
.Open
End With
Connexion.Execute « texte de la requête »
Connexion.CloseEst-ce que cela vous évoque quelque chose : pb de syntaxe (une fois de plus, cela marchait jusqu'ici) ?
Ou pb autre lié aux versions d'excel ou du module ADODB ?
Mon service IT m'indique que je subis peut-être le pb décrit ici.
https://docs.microsoft.com/fr-fr/office/troubleshoot/access/cannot-use-odbc-or-oledb
L'installation du module recommandé dans cet article n'a pas réglé le problème.
Merci d'avance pour votre conseil qui me sortirait d'une situation compliquée car cela bloque une trentaine d'utilisateurs !
Jack
Bonsoir,
J'ajoute l'info suivante:
Le message d'erreur renvoyé par VBA est la "requête est altérée" erreur -2147467259 (80004005)
Je n'ai pas su trouver d'indication sur le web sur cette erreur.
Merci pour vos retours.
Bonjour,
Beaucoup sont confronté à ce problème qui est dû à la mise à jour récente de Windows.
2 solutions sont possibles et semblent fonctionner :
1/ Mise à jour d'Office en passant par le bouton "Mise à jour" situé dans la section "Compte" d'Excel (au passage un grand MERCI à Gold3n : sur mon PC ça fixe le pb)
2/ Si la 1/ ne marche pas, on peut essayer de doubler les tables dans les Update selon le schéma suivant :
UPDATE (SELECT * FROM [Table$] AS BDD)
SET BDD.[Champ1] = "blal bla"
WHERE BDD.[Champ2] = "valeur" ;Ce qui suppose de faire la modif de tous les Update de l'appli ^^
Cette soluce est indiquée par MS =>
Sinon, il semble que seules les requêtes Update avec clause Where sont impactées par ce défaut.
Pierre
Bonjour,
Merci pierrep56,
Effectivement la mise à jour de Office corrige le problème. Déjà 5 essais concluants sur des postes différents. Je suis optimiste et probablement je n'aurai pas besoin de modifier mes requêtes.
Je confirme que seules étaient touchéesr les requêtes UPDATE avec clause WHERE.
Merci, du coup c'est clos.
Jack