Erreur 3265 "Élement non trouvé dans cette collection"

Anonyme
2023-07-29T11:35:07+00:00

Bonjour

Dans ce code, à ligne en gras et rouge, j'ai l'erreur 3265 "Élément non trouvé dans cette collection" alors qu'il y a bien quelque chose.

La requête est juste ci-dessous.

SELECT Sum(t_travaux.proj_pourcentage) AS SommeDeproj_pourcentage
FROM t_Personnel INNER JOIN t_travaux ON t_Personnel.pers_Id = t_travaux.pers_id
WHERE (((t_Personnel.pers_Id)=[id]));

Merci d'avance pour vos idées !.

Function Pourcentage(param As Long)
Dim db As Object
Dim qdef As Object
Dim rs As Object
Set db = CurrentDb
Set qdef = db.QueryDefs("r_pourcentage")
'Assigner le paramètre à la requête
qdef.Parameters("id").Value = param
'Stocker le résultat de la requête dans un recordset
Set rs = qdef.OpenRecordset()
If Not rs.EOF Then
Debug.Print rs.Fields(0).Value 'Ou faire autre chose avec les résultats
Else
Debug.Print "Aucun résultat trouvé"
End If
'Nettoyage
rs.Close
Set rs = Nothing
Set qdef = Nothing
Set db = Nothing
End Function

Microsoft 365 et Office | Access | Autres | Autres

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2023-07-29T14:43:36+00:00

Bonsoir à toute et tous,

Voilà, c'était bien un problème de syntaxe. J'ai fait toute ma carrière avec DAO & ADO qui sont maintenant obsolètes

Tout bêtement qdef!id = param

Option Compare Database
Option Explicit

Function Pourcentage(param As Long)
    Dim db As Object
    Dim qdef As Object
    Dim rs As Object
    Set db = CurrentDb
    Set qdef = db.QueryDefs("r_pourcentage")
    ' Définir le paramètre
    qdef!id = param
    'Stocker le résultat de la requête dans un recordset
    Set rs = qdef.OpenRecordset()
    If Not rs.EOF Then
        Debug.Print rs.Fields(0).Value 'Ou faire autre chose avec les résultats
    Else
        Debug.Print "Aucun résultat trouvé"
    End If
    'Nettoyage
    rs.Close
    Set rs = Nothing
    Set qdef = Nothing
    Set db = Nothing
End Function

Problème résolu, merci à un modo qui passe par ici de la marquer comme réponse

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

12 réponses supplémentaires

  1. Anonyme
    2023-07-29T14:40:58+00:00

    Salut Blaise032,

    Je suis heureux que cela fonctionne maintenant! Si vous avez encore besoin d’aide, n’hésitez pas à poster dans ce forum. Nous sommes toujours là pour vous aider! Passez une bonne journée et restez toujours en sécurité!

    Sinceres salutations

    Lion

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-07-29T14:33:37+00:00

    Bonjour,

    Je n'ai pas essayé de contourner le problème car c'était bien bien une erreur de syntaxe

    @Hecatonchire m'a mis sur la piste et chatGPT a fini de m'aider.

    Réponse en dessous

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2023-07-29T14:21:57+00:00

    I have just found a workaround with in this code. Kindly try it if this will work on your end.

    Function Percentage(param As Long)

    Dim db As Object 
    
    Dim qdef As Object 
    
    Dim rs As Object 
    
    Set db = CurrentDb 
    
    Set qdef = db.QueryDefs("r\_percentage") 
    
    ' Check if the "id" parameter exists in the query 
    
    If qdef.Parameters.Count > 0 Then 
    
        If qdef.Parameters("id") Is Nothing Then 
    
            ' If the "id" parameter doesn't exist, create it 
    
            qdef.Parameters.Append qdef.CreateParameter("id", dbLong, adParamInput) 
    
        End If 
    
    Else 
    
        ' If there are no parameters in the query, create the "id" parameter 
    
        qdef.Parameters.Append qdef.CreateParameter("id", dbLong, adParamInput) 
    
    End If 
    
    ' Assign parameter value to the query 
    
    qdef.Parameters("id").Value = param 
    
    ' Store the query result in a recordset 
    
    Set rs = qdef.OpenRecordset() 
    
    If Not rs.EOF Then 
    
        Debug.Print rs.Fields(0).Value ' Or do something else with the results 
    
    Else 
    
        Debug.Print "No results found" 
    
    End If 
    
    ' Cleaning 
    
    rs.Close 
    
    Set rs = Nothing 
    
    Set qdef = Nothing 
    
    Set db = Nothing 
    

    End Function

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2023-07-29T14:09:41+00:00

    Merci d’avoir répondu, Blaise032 !

    Il serait très utile si vous pouviez partager une capture d’écran de ce à quoi ressemblent les données, étant donné que vous avez confirmé qu’il n’y a rien de mal avec la requête SQL. Il semble qu’il y ait peut-être un problème sous-jacent que nous essayons d’identifier. J’attendrai votre réponse pour que nous puissions continuer. Merci!

    Sinceres salutations

    Lion

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire