Erreur 3101 sur ACCESS

Bonjour,

J'ai un formulaire sur Access 2007 comprenant un sous-form avec une liste déroulante, quand je choisis un nom de ma liste, j'ai cette erreur :
3101 Le moteur de base de données Microsoft Office Access ne peut pas trouver d'enregistrement dans la table <name> avec le(s) champ(s) <name> correspondant à la clé.

D'où vient mon problème svp ? Cela fait deux jours que j'y suis, pas moyen de trouver. Ma requête SQL étant bonne.

A bientôt.

16 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    si tu passes ta requête en dehors de tout formulaire, as-tu un résultat ?
    1. Modérateur
      Va falloir développer tes réponses, parce que là, j'ai du mal à imaginer...

      Quel est le texte complet de ta requête ?
      1. Dans mon schéma relationnel, j'ai plusieurs tables dont une table "Client", une table "Amener par" et une table "fiche".
        Dans ma table Client, ma clé primaire est numcli. (nom, prenom etc...)
        Dans ma table Fiche, il y a numfiche et année.
        Et dans ma table Amener par, il y a numfiche, année et numcli.

        Je souhaite enregistrer des fiches via un formulaire. Je souhaite que l'utilisateur puisse choisir entre plusieurs clients via une liste déroulante (qui est donc dans mon sous-form).

        Ma requête en question :
        SELECT DISTINCT [RequeteAmenerpar].[numfiche], [RequeteAmenerpar].[annee], [RequeteAmenerpar].[numcli], [RequeteAmenerpar].[nom] FROM RequeteAmenerpar;
        1. Modérateur
          Le message d'erreur donne bien le nom d'une table et d'un champ ?
          1. Oui, c'est écrit :
            Le moteur de base de données Microsoft Office Access ne peut pas trouver d'enregistrement dans la table <T-Client> avec le(s) champ(s) <T-Amenerpar_numcli> correspondant à la clé.
            1. Personne ?
              1. Modérateur
                Si, y'a du monde, mais ici, c'est pas un chat... donc, on répond quand on a le temps...

                Il faut que tu regardes dans ta requête [requeteamenerpar], tu dois avoir la clé du mystère, il doit y avoir un where qui n'est pas vérifié...
            2. Pourtant il y a bien la jointure :
              SELECT DISTINCT [T-Amenerpar].numfiche, [T-Amenerpar].annee, [T-Amenerpar].numcli, [T-Client].nom
              FROM [T-Client] INNER JOIN [T-Amenerpar] ON [T-Client].numcli = [T-Amenerpar].numcli;
              1. Modérateur
                Le champ concerné est T-Amenerpar_numcli, n'y-a-t'il pas confusion avec [T-Amenerpar].numcli ?
            3. Il me parle de "T-Amenerpar_numcli", mais c'est plutot un point entre les deux... Je ne comprend pas :-/
              1. T-Amenerpar_numcli c'est la source de contrôle de la liste en plus ! ! !
                1. Modérateur
                  Il faut savoir quelle est sa valeur au moment où l'on appelle la requête...
              2. Modérateur
                Quel code est affecté à la propriété lorsque tu saisis une valeur ?
                1. Aucun code VBA.

                  Bon je peux choisir certains clients et d'autres non car cela m'affiche l'erreur plus haut. Surment un problème de doublon car j'ai par exemple :
                  annee numfiche nom
                  2006 - 12 - Robert
                  2008 - 178 - Robert
                  2010 - 2455 - Robet
                  1. Modérateur
                    Ce qui est étonnant, c'est que le message survienne après un choix dans une liste, il y a donc forcément du code quelque part qui réagit à cette saisie...

                    Peut-être la source du sous-formulaire ?