Bonjour Marot, Bonjour Tee,
Lors de l'exécution de la requête VBA l'erreur suivante apparait et aucun résultat n'est ajouté dans la table [T_Selection_Leg_Prod_mem] :
"L'erreur que j’obtiens est Erreur d'exécution '3134':
Erreur de syntaxe dans l'instruction INSERT INTO."
J'ai essayé de détourner l'erreur en faisant la requête UNION puis en récupérant les résultats pour les insérés avec la requête INSERT INTO mais l'erreur s'affiche toujours.
Le code est le suivant:
Il est mis en fonction lors de l'actualisation du champs ID_Produit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub SelectionIntermed( _ ByVal strClefPrimaire As String, _ Optional ByVal strTableSelection As String = "[T_Selection_Leg_Prod_mem]", _ Optional ByVal strWhere As String = "") Dim StrSQL As String Dim StrUnionQuery As String StrUnionQuery = "SELECT [ID_Legume], [ID_Produit], [ID_Segment], [Selection] " _ & "FROM [T_Select_Leg_Seg_ok] " _ & "WHERE " & strWhere & "" _ & " UNION ALL " _ & "SELECT [ID_Legume], [ID_Produit], Null as [ID_Segment], [Selection] " _ & "FROM [T_Selection_Leg_Prod] " _ & "WHERE " & strWhere StrSQL = "INSERT INTO " & strTableSelection & "([ID_Legume], [ID_Produit], [ID_Segment], [Selection]) FROM " & StrUnionQuery & "" _
Le debug.Print strUnionQuery me donne exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Public Sub ID_Produit_AfterUpdate() Nom_Produit = ID_Produit.Column(1) Dim VarIDProd As Variant VarIDProd = Forms![F_Select_Leg_Prod_Seg]![ID_Produit].Column(0) InitialiserSelection "[T_Legumes]", "[ID_Legume]", "[T_Selection_Leg_Prod]", IIf(VarIDProd <> "", "[ID_Produit] = " & VarIDProd, "") Me.Form.SF_Select_Leg_Prod.Requery Me.Requery SelectionIntermed "[ID_Legume]", "[T_Selection_Leg_Prod_mem]", IIf(VarIDProd <> "", "[ID_Produit] = " & VarIDProd, "") Me.Form.SF_Select_Leg_Prod.Requery Me.Requery End Sub
SELECT [ID_Legume], [ID_Produit], [ID_Segment], [Selection] FROM [T_Select_Leg_Seg_ok] WHERE [ID_Produit] = 9 UNION ALL SELECT [ID_Legume], [ID_Produit], Null as [ID_Segment], [Selection] FROM [T_Selection_Leg_Prod] WHERE [ID_Produit] = 9
et si je copie ce code dans une nouvelle requête en SQL il me donne bien les valeurs que je recherche pour ID_Produit = 9.
Auriez vous une idée du bug?
Bien cordialement
Julien
Partager