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

Résolu
Signaler
Messages postés
3
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
22 février 2009
-
Messages postés
3
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
22 février 2009
-
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

Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
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
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
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 
Messages postés
3
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
22 février 2009

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
Messages postés
3
Date d'inscription
vendredi 15 juin 2007
Statut
Membre
Dernière intervention
22 février 2009

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.