Comment passer un argument de type variable dans une procédure vba access 2003

Résolu
dkpseudo Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 22 février 2009 - 10 févr. 2009 à 00:29
dkpseudo Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 22 février 2009 - 18 févr. 2009 à 15:28
Bonjour,
Dans le code qui suit, j'appelle la fonction InitialiserSelection en passant 6 arguments.
J'obtiens le message "Erreur d'exécution 3061".
Le pb vient sans doute du 4ème argument qui est considéré comme la chaine de caractère "parROME",
alors qu'il s'agit d'une variable passée comme paramètre.

Quelqu'un peut-il m'indiquer quelle syntaxe utiliser pour passer un argument de type variable.

Trés cordialement
-------------------
Private Sub Form_Open(Cancel As Integer)
Dim parROME As String


DoCmd.OpenForm "F_Saisie_ECCP_p2"


parROME = Forms![F_Saisie_ECCP_p2]![ECCP_C_ROME]


 InitialiserSelection "T_ROME Compétences", "ROMEC_C_Compétence", _
 "T_ECCP Compétences à tester", "parROME", "80020", "ROMEC_C_ROME=11121"
  Me.Requery


DoCmd.Close acForm, "F_Saisie_ECCP_p2"
 
End Sub
-----------------

5 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
11 févr. 2009 à 04:26
Bonjour

En passant le 4e paramètre entre guillemets, voici la requête SQL que tu exécutes (sauf erreur de ma part) :


INSERT INTO [T_ECCP Compétences à tester] (EC_CodeComp, EC_CodeECCP, EC_C_CodeROME)  SELECT [ROMEC_C_Compétence], 80020 AS ECCP, parROME FROM [T_ROME Compétences] WHERE ROMEC_C_ROME=11121

Est-ce qu'elle est correcte ?

Note : pour mettre au point la requête, tu peux l'afficher dans la fenêtre Exécution, en insérant l'instruction Debug.Print strSQL avant l'instruction CurrentDb.Execute strSQL ; pour ouvrir la fenêtre Exécution, fais CTRL+G ou Affichage/Fenêtre Exécution dans la fenêtre Visual Basic.

Amicalement
3
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
10 févr. 2009 à 02:35
Bonjour

Oh la la, DoCmd, ce ne serait pas plutôt du VBA Access que du vb6 ? Si c'est le cas, dépêche-toi de réciter une (courte) prière avant qu'un admin lise ton message  !

Bien que tu sembles convaincu du contraire, le 4e paramètre de ton appel de la procédure InitialiserSelection est le String "parROME". Si tu veux passer la variable, il faut enlever les guillemets.

Comme dans les deux cas, tu passes un string, ton erreur vient, à mon avis, d'ailleurs.

Amicalement
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
10 févr. 2009 à 07:28
trop tard!^^
déplacé vers VBA
(form_open? oui c'est du vba access )

ps : et dans ce cas de figure il nous faut aussi la procédure InitialiserSelection <hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
dkpseudo Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 22 février 2009
10 févr. 2009 à 14:59
Merci à tous de votre contribution.

Voici le code de la procédure :

Sub InitialiserSelection( _
  ByVal strTableCible As String, _
  ByVal strClefPrimaire As String, _
  ByVal strTableSelection As String, _
  ByVal strROME As String, _
  ByVal strECCP As String, _
  ByVal strWhere As String)


  Dim strSQL As String


  strSQL = "INSERT INTO [" & strTableSelection & "] (EC_CodeComp, EC_CodeECCP, EC_C_CodeROME)" _
  & " SELECT [" & strClefPrimaire & "], " & strECCP & " AS ECCP, " & strROME _
    & " FROM [" & strTableCible & "]"
 
  strSQL = strSQL & " WHERE " & strWhere
  CurrentDb.Execute strSQL
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dkpseudo Messages postés 3 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 22 février 2009
18 févr. 2009 à 15:28
Bonjour,
 J'ai résolu le problème en adoptant la syntaxe que tu m'a conseillée, et en lançant la procédure à partir du formulaire principal au lieu du sous formulaire.

Merci de ton aide.
0