[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

  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?
    1. Non, je ne suis pas stagiaire, je suis juste novice en base de données
      1. Modérateur
        Salut,

        quand tu mets un champ vide, il doit être entre "...
        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
            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. 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. 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. 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. 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. 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. Modérateur
                        Tu peux m'afficher le texte de te requête qui part à l'exécution ?