VBA probleme avec insert into

abaline -  
 abaline -
Bonjour,

Je voudrais concatener via le VBA les choix faits dans une zone a choix multiples, j'ai bien sur fait maintes essai ..
je ne sais pas trop si mon problème viens de ma concatenation ou de l'insert into , peut etre les 2 me direz vous ..
Income_gen est le champs de la liste déroulante, et le champs ou l'enregistrement doit se faire dans ma table tbl_lc_lu
voici mon code

Private Sub Income_gen_current()
Dim varI As Variant
Dim Selec As String
Dim strSQL As String
Dim MyDB As DAO.Database

Selec = ""
If Me.Income_gen.ItemsSelected.Count <> 0 Then
For Each varI In Me!Income_gen.ItemsSelected
Selec = "Selec & Me![Income_gen].ItemData(varI)"
Next varI
End If
MsgBox Selec

Set MyDB = CurrentDb
strSQL = "INSERT INTO [Tbl_lc_lu] [Income_gen] VALUES (""&Selec& "")"
CurrentDb.Execute Selec
MsgBox Selec
End Sub

merci de m'aider s'il vous plait je patine pas mal.

10 réponses

  1. nirG95 Messages postés 319 Statut Membre 32
     
    Regarde ici

    Selec = "Selec & Me![Income_gen].ItemData(varI)"

    Je pense qu'il faudrait enlever les " " non ?

    Selec = Selec & Me![Income_gen].ItemData(varI)

    Cdlt
    0
  2. nirG95 Messages postés 319 Statut Membre 32
     
    De plus n'hésite pas a faire un message box sur ton strSQL pour voir et dans

    VALUES (""&Selec& "")" faut mettre des espaces

    strSQL = "INSERT INTO Tbl_lc_lu (Income_gen) VALUES ("" & Selec & "")"

    Je ne suis pas sur, ça fait un moment que je n'ai pas touché au VBA et je ne suis pas un pro :p

    Cdlt.
    0
  3. abaline
     
    merci mais cela ne résout pas le problème, j'ai un message d'erreur qui s'affiche :
    le moteur de base de données microsoft office access ne peut pas trouver la table ou la requête source "".
    assurez-vous qu'elle existe et qu'elle est correctement orthographiée .
    ( erreur d'execution '3078'
    0
  4. nirG95 Messages postés 319 Statut Membre 32
     
    SQL = "INSERT INTO TABLE1(champ) VALUES ("" & Selec & "")"
    CurrentDb.Execute SQL

    Tu remplaces TABLE1 par le nom de ta table.
    Tu remplaces champ par le champ de ta table.

    Je viens de faire le teste est ça fonctionne chez moi !

    Fait quand meme un msgbox strSQL.

    Cdlt.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nirG95 Messages postés 319 Statut Membre 32
     
    Voilà tu n'as plus qu'a faire un copier coller :p

    If Me.Income_gen.ItemsSelected.Count <> 0 Then
        For Each varI In Me!Income_gen.ItemsSelected
            If selec = "" Then
                selec = Me!Income_gen.ItemData(varI)
            Else
                selec = selec & "," & Me!Income_gen.ItemData(varI)
            End If
        Next varI
    End If
    
    strSQL = "INSERT INTO tbl_lc_lu(Income_gen) VALUES ('" & selec & "')"
    CurrentDb.Execute strSQL


    Cordialement.
    0
  7. abaline
     
    sa marche ! merci beaucoup nirG95, j'avais fais une erreur bête (je m'y attendai un peu ! )
    j'avais mis " "&selec&" " au lieu de ' "& selec& " '

    encore merci !
    0
  8. nirG95 Messages postés 319 Statut Membre 32
     
    De rien :)

    N'oublie pas de mettre le post en résolu =)

    Cdlt.
    0
  9. abaline
     
    hum voila une chose a laquelle je n'ai pas pense, cela n'enregistre pas les données dans la même ligne que le reste des champs du formulaire ce qui est assez gênant,
    vu l'organisation de mon code je ne devrais pourtant pas en être étonné, j'ai change la structure pour mettre cette commende dans le bouton de sauvegarde, mais voila du coup j'ai la commande de sauvegarde puis l'enregistrement de ce champs..

    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    Me.AllowEdits = True

    Dim varI As Variant
    Dim Selec As String
    Dim strSQL As String
    Dim MyDB As DAO.Database

    If Me.Income_gen.ItemsSelected.Count <> 0 Then
    a = Me.No_Id
    For Each varI In Me!Income_gen.ItemsSelected
    Selec = Selec & Me![Income_gen].ItemData(varI) & ";"
    Next varI
    End If
    MsgBox Selec

    Set MyDB = CurrentDb
    SQL = "INSERT INTO tbl_lc_lu (Income_gen,No_Id) VALUES ('" & Selec & "')"
    CurrentDb.Execute SQL
    MsgBox Selec
    MsgBox strSQL

    une idée pour que tous s'enregistre en même temps ?
    0
  10. nirG95 Messages postés 319 Statut Membre 32
     
    Bonjour Abaline,

    Je ne comprend pas trop ta question ! Tu as d'autres champs sur ton formulaire ? Si oui, il faut mettre tout les champs dans ton insert into !

    Je suppose que No_Id est un champs de ta table tbl_lc_lu !

    SQL = "INSERT INTO tbl_lc_lu(Income_gen,No_Id) VALUES ('" & Selec & "','" & Me.No_ld & "')"

    Je ne vois pas a quoi te sert la variable a !

    Cdlt.
    0
  11. abaline
     
    effectivement il y a d'autres champs, je redoutai cette réponse ... les champs sont nombreux .. j'espérais que quelqu'un aurait peut-être eu une autre idée ^^
    allez je m'y atèle et j'arrête de te harceler !
    encore merci de tes réponses et de ta vitesse de réaction !!
    0