VBA probleme avec insert into

Fermé
abaline - 26 juil. 2010 à 11:37
 abaline - 27 juil. 2010 à 10:12
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

nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 32
Modifié par nirG95 le 26/07/2010 à 13:26
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
nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 32
26 juil. 2010 à 13:35
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
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
nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 32
26 juil. 2010 à 14:10
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 32
26 juil. 2010 à 14:38
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
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
nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 32
26 juil. 2010 à 15:48
De rien :)

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

Cdlt.
0
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
nirG95 Messages postés 292 Date d'inscription lundi 21 avril 2008 Statut Membre Dernière intervention 15 décembre 2010 32
27 juil. 2010 à 09:12
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
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