{Access} problème de requête

Résolu
Bonjour,

voici mon code :

INSERT INTO Devis ([N° Devis], N°lancement)
SELECT tCréationlancement.N°lancement, tCréationlancement.[N° Devis]
FROM tCréationlancement;

et mon problème c'est que j'ai un message qui me dit : "l'instruction INSERT INTO contient le nom de champ inconnu suivant : 'N°lancement'. Assurez-vous que vous avez correctement saisi le nom, puis recommencez l'opération".

j'ai regardé et j'ai bien saisi le nom et il m'affiche toujours ce même message.
pouvez-vous m'aider svp ?
Configuration: Windows XP Internet Explorer 6.0

29 réponses

Résumé de la discussion

L'enjeu central est une erreur Access lors d'un INSERT INTO : le message indique que le champ 'N°lancement' est inconnu malgré la saisie apparente du nom. Plusieurs réponses suggèrent de placer les noms de champs entre crochets ou guillemets et de vérifier que l'ordre des colonnes correspond bien au SELECT. D'autres échanges évoquent des soucis connexes comme des enregistrements manquants, des boucles de traitement et des conseils sur le débogage dans des formulaires Access. Enfin, plusieurs échanges convergent vers l'idée de entourer les noms de champs par des crochets dans l'instruction et de vérifier l'alignement entre INSERT INTO et SELECT.

Bobot (l’IA à votre service)
  1. Salut,

    Met tes champs entre quotes ( " " )

    de plus je comprends pas ta requête, car tu fais un select dans Insert

    et INSERT INTO va avec VALUES (....) que tu n'as pas...

    Tu veux faire une requête imbriquée???
    0
    1. je pense qu'elle s'appelle comme cela
      mais laisse tomber c problème n'est pas urgent j'en ai un autre
      0
      1. If tCréationlancement.[N°DAS] = ([Form_fNouveaudas].NUMDAS) Then
        MsgBox "N° DAS déjà pris, veuillez en saisir un nouveau", vbCritical, "Attention..."
        Else
        MsgBox "N° DAS disponible, allezzzzzzzz y"
        End If

        Voilà mon code et cela me marque erreur d'éxécution 424, Objet requis
        et comme je suis pas très bon je ne sais pas comment y résoudre et c'est, certes, un petit détail mais c'es très important pour moi.
        0
        1. Attends tu travaille en VBA??

          Si oui, tu veux comparer la valeur d'une zone de texte pour voir si elle existe dans ta base c'est sa???
          0
          1. oui c'est bien sa.
            est-ce possible ?
            0
            1. Oui...

              Tu utilise un jeu d'enregistrements pour créer une connexion

              après tu fais un requête de selection style
              Set rst =TaBase.OpenRecordset("SELECT * FROM NomDeTaTable")
              


              après tu fais une boucle ou tu compare la valeur de ta zone de texte pour voir si elle correspond a ceux de la base.

              if not RST.EOF Then

              Rst.MoveFirst

              Do

              If zonedetexte = rst.Fields("ChampDelaBase") Then
              tu fais un traitement
              Else
              Rst.MoveNext // tu vas sur l'enregistrement suivant
              End If

              Loop zonedetexte = = rst.Fields("ChampDelaBase")

              End if

              J'espère avoir été explicite...
              0
              1. j'essaye et puis je te dis si cela marche
                0
                1. mais je veux juste comparer j'ai vraiment besoin de faire set rst = etc ?
                  0
                  1. et c'est quoi ce jeu d'enregistrement pour faire la connexion ?
                    0
                    1. oui tu es obligé...

                      sinon comment comptes - tu comparer t'es valeur et avec quoi??

                      il faut que tu lui définisse l'environnement sur lequel ton code va travailler

                      et tu le fais avec le Set rst = etc....
                      0
                      1. j'ai pas besoin de faire qqch avant le set rst = tec ?
                        0
                        1. Si tu dois créer un jeu d'enregistrements

                          exemple

                          Dim Base As Database
                          Dim rst As Recordset

                          Set Base As CurrentDb <== si tu travaille sur la base en cours, sinon tu met l'emplacement de ta base.

                          et après tu fais

                          Set rst = Base.OpenRecordset("....
                          0
                          1. c'est pas plutôt set rst = currentDb ?
                            0
                            1. ou
                              dim bdd as database
                              dim rst as openrecordset

                              set bdd=currentdb
                              set rst = etc.
                              0
                              1. j'ai une autre erreur c'est que le message me marque aucun enregistrement en cours, sais-tu ce que cela veut dire ?

                                et le déboggeur me met sur cette ligne :"Loop Until ([Form_fNouveaudas].NUMDAS) = Rst.Fields("N°DAS")"
                                0
                                1. juste avant de répondre : quel est le nom exact de ta textbox???
                                  0
                                  1. celle qui est à vérifier s'appelle NUMDAS qui vient du formulaire fNouveaudas et le champ dans ma base suivicommercial, il est dans la table DAS et il se nomme N°DAS
                                    0
                                    1. Ok dans le loop met

                                      Loop Until NUMDAS.Value = Rst.Fields("N°DAS")

                                      et dis moi ce que tu as...

                                      Faut pas t'en faire car le mot que tu vois "Aucun enregistrement" est normal...

                                      je vais t'expliquer après comment le traiter
                                      0
                                      1. le message que j'ai est "l'expression sur clic entrée comme paramètre etc"
                                        0
                                        • 1
                                        • 2