IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Trop peu de paramètres, 1 attendu


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Portugal

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 45
    Points : 34
    Points
    34
    Par défaut Trop peu de paramètres, 1 attendu
    Bonjour,

    Je me casse la tête à essayer de trouver pourquoi je reçois ce message à l'exécution d'une requête SQL.

    J'utilise cette méthode couramment, je n'ai jamais eu ce problème !

    voici le code VBA qui construit la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Private Sub cboRech_Click()
    On Error GoTo cboRech_Click_err
        'but: selection Participants activités à partir des critères choisis
     
        Dim sqlWhere As String, sqlCond As String, sql As String, w As String, sqlselect As String, stLinkCriteria As String
     
        sqlselect = "INSERT INTO TTempParticip SELECT * from Tparticipant "
        w = " WHERE "
        sqlWhere = ""
        sqlCond = ""
     
        'vidage table TTempParticip
        EmptyList
        DoCmd.Close acForm, "FReportEvent", True
     
        ' ************  contrôle présence critères *********************
     
    ' Critère 1
        If cboAP = True Then
           sqlCond = "(MtPayé < 1)"
        If sqlWhere <> "" Then
                     sqlWhere = sqlWhere & " AND " & sqlCond
        Else
        sqlWhere = sqlCond
            End If
        End If
     
    ' Critère 2
        If cboNP = True Then
           sqlCond = "(A_Participé = false)"
        If sqlWhere <> "" Then
                     sqlWhere = sqlWhere & " AND " & sqlCond
        Else
        sqlWhere = sqlCond
            End If
        End If
     
    ' Critère 3
        If cbocode > 0 Then
            sqlCond = "(Code = cboCode)"
        If sqlWhere <> "" Then
                     sqlWhere = sqlWhere & " AND " & sqlCond
        Else
        sqlWhere = sqlCond
        End If
            End If
     
    BuildSql:
     
           ' Build SQL Statement- si aucun argument, selection de toutes les lignes
            sql = sqlselect
              If sqlWhere <> "" Then
                 sql = sql + w + "(" + sqlWhere + ");"
                 End If
     
        'Get Info to this point, based on above criteria
     
        Me.Tag = RunSql(sql)
     
        DoCmd.OpenForm "FReportEvent", , , stLinkCriteria
    cboRech_Click_Exit:
     
                Exit Sub
     
    cboRech_Click_err:
        MsgBox Error$, 64, "cboRech_Click"
     
    End Sub
    Si l'une ou l'autre des 2 premières conditions est "true" (ou les 2), l'ordre SQL s'exécute bien, mais je reçois systématiquement le message d'erreur si la condition 3 est "true" avec ou sans les 2 autres conditions.

    Je précise que cboRech est le nom du bouton dans mon formulaire et cbocode est le nom du paramètre dans ce formulaire (au même titre que cboAP et cboNP.

    Voici le contenu de mon module BasSQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Option Compare Database
    Option Explicit
     
    Function RunSql(strSQL As String) As Integer
    On Error GoTo RunSQL_TSB_ERR
     
      ' Comments  : Runs a SQL string on any database
      '             (the SQL string must be an non-row-returning action query)
      ' Parameters: strSQL - SQL string to execute
      ' Returns   : True if successful, False otherwise
      ' Stolen from FMS TSB
     
      Dim dbsTSchd As Database
      Set dbsTSchd = CurrentDb()
     
      'DoCmd SetWarnings False
      MsgBox "strSQL = " & strSQL
      dbsTSchd.Execute strSQL
     
      dbsTSchd.Close
     
      RunSql = True
     
    RunSQL_TSB_EXIT:
     
      Exit Function
     
    RunSQL_TSB_ERR:
      MsgBox Error$, 64, "RunSQL()"
      RunSql = False
      Resume RunSQL_TSB_EXIT
     
    End Function
    J'espère que l'un de vous pourra trouver l'explication.....

    Avec mes remerciements.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Si cbocode est une combo alors vous devez y faire référence à l'extérieur de la chaîne, pour concaténer sa valeur dans la chaîne, sinon il ne va pas voir à quoi vous faîtes référence et la prendre pour un paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' Critère 3
        If cbocode > 0 Then
            sqlCond = "(Code = " & cboCode & ")"
        If sqlWhere <> "" Then
                     sqlWhere = sqlWhere & " AND " & sqlCond
        Else
        sqlWhere = sqlCond
        End If
    Cdlt,

    PS : à moins de mettre la référence complète de la combo dans le formulaire, du genre sqlCond = "(Code = forms!Formulaire1!cboCode)", dans ce cas il verra à quoi vous faites référence.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. Erreur 3061 : Trop peu de paramètres.1 attendu
    Par deglingo37 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 05/12/2014, 19h55
  2. 3061 Trop peu de paramètres. 1 attendu
    Par bernez dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/05/2007, 14h16
  3. Réponses: 11
    Dernier message: 07/09/2006, 10h10
  4. Réponses: 3
    Dernier message: 04/04/2006, 19h59
  5. erreur trop peu de paramétre. un attendu ??
    Par Amandine62 dans le forum ASP
    Réponses: 3
    Dernier message: 25/01/2005, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo