[VBA]

Salut,

J’ai un petit problème sur mon insert into. Tout d’abord, voici mon code
DoCmd.RunSQL ("insert into Tbl_Temp ([LibReclassement], [LibelleRubriqueDomaine], [NumeroCompte], [LibelleCompte], [Total], [Actival], [NonAffecte]) value (ValLibReclassement, ValLibelleRubriqueDomaine, ValNumeroCompte, ValLibelleCompte, ValTotal, ValActival, ValNonaffecte)")


Alors je me retrouve avec un message d’erreur qui dit
Erreur n°3134
Erreur de syntaxe dans l’instruction NSERT INTO


--
N’oubliez pas de cocher la case quand le problème est résolu
Configuration: Windows XP
Internet Explorer 6.0

12 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Tu peux m'afficher le texte de te requête qui part à l'exécution ?
    1. En plus ça ne doit pas venir de ma chaine vide car si je met par exemple "aaa" dans ma chaine qui était vide, j'ai la meme erreur 3075
      1. Oui mais ca ne change rien à mon problème, je n'arrive pas à me débarraser de cette erreur et si je met des (' ') alors je tombe sur l'erreur 94 que j'ai sité au dessus
        1. Modérateur
          Ce que tu peux faire, c'est déclarer une chaine, la remplir avec ta requête puis l'afficher avant de l'envoyer en exécution...
          Dim StrSql as String
          ...
          StrSql = "INSERT INTO "
          StrSql = "StrSql + "table ..."
          StrSql = StrSql + ";"
          Msgbox StrSql
          
          C'est ce que je fais systématiquement, de plus, j'encadre les valeurs par des simple-quote (') et non des doubles-quotes ("), ça évite l'empilage des "
          1. Alors je me suis trompé, si je met ça, je dois inverser les lignes du if avec celle du Else mais je retombe encore sur cet erreur 3075
            1. Re,
              Alors maintenant c'est une nouvelle erreur :
              Erreur n°94:
              Utilisation incorrecte de Null
              

              le code c'est :
              If IsNull(rs("Actival")) Then
                      ValActival = rs("Actival")
              Else
                      ValActival = " "
              End If
              
              1. Modérateur
                Tu feras attention de ne pas confondre la valeur Null avec le test est nul, car un truc comme If toto <> Null renvoie toujours false... (dixit la doc ACCESS)

                Alors que If IsNull(toto.value) Then renvoie true ou false selon la valeur...
                1. Ca marche pas en faite, je met juste avant ma requète, je fais
                  If rs("Actival") <> Null Then
                          ValActival = rs("Actival")
                   Else
                          ValActival = ""
                  End If
                  

                  Comme tu peux le voir c'est une chaine vide et bien etre ""
                  1. Modérateur
                    Salut,

                    quand tu mets un champ vide, il doit être entre "...
                    1. Non, je ne suis pas stagiaire, je suis juste novice en base de données
                      1. Re,
                        J'ai modifié un peu le code et je tombe sur une nouvelle erreur. Voici mon code :
                        DoCmd.RunSQL ("insert into Tbl_Temp ([LibReclassement], [LibelleRubriqueDomaine], [NumeroCompte], [LibelleCompte], [Total], [Actival], [NonAffecte]) values (" & ValLibReclassement & ", " & ValLibelleRubriqueDomaine & ", " & ValNumeroCompte & ", " & ValLibelleCompte & ", " & ValTotal & ", " & ValActival & ", " & ValNonaffecte & ")")
                        

                        et maintenant cette erreur qu'il me met
                        Erreur n°3075 :
                        Erreur de syntaxe (opérateur absent) dans l’expression ‘champ1, champ2, champ3, champ4, , champ5)’.
                        

                        J'ai remplacé mes vrai valeurs par champ1, champ2...
                        Le champ vide c'est juste un string ou j'ai mis une chaine vide.
                        Pouvez vous m'éclairer sur mon erreur?