[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. Problème de syntaxe c'est tout..

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

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