Bonjour
Sur un ancien projet .adp (Access 2003 sour SQL server 2000) je me servais d'une procédure stockée comme source d'une liste déroulante.
Cette liste déroulante se trouvait dans un formulaire et le critère de la procédure stockée était un champs de ce même formulaire.
Ainsi la liste déroulante se personnalisait en fonction de l'enregistrement en cours sur le formulaire.
Je ne parviens pas à retrouver cette fonctionnalité sous mon fichier Access 2010 sur SQL Server 2012 (lien ODBC)
voici la procédure stockée sur serveur SQL
USE [EBSMOP]
GO
/****** Object: StoredProcedure [dbo].[SP_Employés] Script Date: 01/06/2015 08:36:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_Employés] @Dept nvarchar (30)
as
select Matricule, Nom, Prénom, Département, Téléphone, Compil
from Responsables
where Département like @Dept + '%'
et voici le code VBA lié à la zone déroulante
Private Sub Bouton_Dept_GotFocus()
Me.Bouton_Dept.RowSource = "exec SP_Employés '" & Me.Département & "'"
End Sub
Lorsque je me positionne sur la liste déroulante (évènement GotFocus) j'ai le message d'erreur suivant :
"Instruction SQL non valide, DELETE, INSERT, PROCEDURE, SELECT ou UPDATE attendus"
Je précise que le paramètre n'est pas en cause, si je simplie le code de la procédure en enlevant le paramètre et que je fais de même sur le code VBA le message est le même.
Faut il obligatoirement passer par quelque chose comme...
Dim oRst As DAO.Recordset 'oRst est un recordset , un jeu d'enregistrements
Dim oDb As DAO.Database 'oDb est la base de donnée de laquelle est issue ce jeu d'enregistrements
Set oDb = CurrentDb 'oDb est définie comme étant la base de données ouverte
Set oRst = oDb.OpenRecordset("SELECT Matricule, Nom, Prénom, Département,Téléphone, Compil from [dbo_Responsables] WHERE Département =" & Chr(34) & toto & Chr(34), dbOpenDynaset)
mais comment renvoyer le résultat comme source de la liste déroulante ?
Merci pour votre aide, salutations.
Partager