2017-09-21 4 views
0

J'essaie de créer un formulaire Access 2016 qui permet aux utilisateurs de corriger les informations situées sur une table SQL Server mais rencontrant des problèmes. D'abord quelques restrictions; Je ne peux pas créer quelque chose de nouveau dans SQL Server, Les utilisateurs n'ont pas accès au mot de passe pour la connexion ODBC. Je sais qu'avec une requête Access Pass-Through, vous pouvez enregistrer une connexion ODBC, mais vous devez utiliser VBA pour mettre à jour la requête avec les données d'un formulaire Access.Mise à jour d'une table SQL à l'aide des données d'un formulaire Access 2016

Actuellement mon code dans VBA est;

mysql = "Update dbo.MRollData Set dbo.MRollData.PolyPart = '" + Me.ActiveControl.Value + "' WHERE dbo.MRollData.LotNum = '" + Me.MRollLotNum.Value + "' AND dbo.MRollData.Side = '" + Me.MRollSide.Value + "' AND dbo.MRollData.MRIndex = '" + Me.MRollIndex.Value + "' AND dbo.MRollData.PolyPart = '" + Me.CurrentValue.Value + "'" 

    CurrentDb().QueryDefs("PolyPartChange").SQL = mysql 

    DoCmd.OpenQuery "PolyPartChange", , acEdit 

Cette fonction est activée par une commande OnClick, en cours d'exécution mais ce que j'obtiens l'erreur d'exécution « 438 » Cet objet ne gère pas cette propriété ou méthode. Le code VBA a été écrit en utilisant un bit de code similaire d'une autre base de données qui met à jour une requête qui exécute une requête SQL.

J'ai aussi essayé de simplement exécuter la requête elle-même et continuer à obtenir l'erreur « requête doit avoir au moins un champ de destination » manque

Suis-je quelque chose ou est-il pas possible d'exécuter exécuter une SQL Mettre à jour la requête dans une requête directe d'accès? Aussi est-il un moyen plus facile de faire ce que j'essaie?

MISE À JOUR; J'ai une étiquette répertorié ici que je ne voyais pas générer automatiquement comme ActiveControl, cela aurait dû être Me.ActualValue.Value

Répondre

1

Vous pouvez essayer avec:

CurrentDb.QueryDefs("PolyPartChange").SQL = mysql 
CurrentDb.QueryDefs("PolyPartChange").Execute 

La requête doit être un pass-through requête pour que votre syntaxe SQL fonctionne.

+0

J'ai essayé la modification que vous avez suggérée mais j'ai obtenu l'erreur d'exécution '438' L'objet ne supporte pas cette propriété ou cette méthode. Cliquer sur le débogage pointe vers la partie MySQL = "..." – MDavies

+0

Cela a fini par fonctionner, j'ai trouvé mon erreur quand j'ai tapé le code VBA que j'ai mis accidentellement ActiveControl au lieu de mon tag ActualValue. Alors merci. – MDavies