Bonjour,
Cela fait 4 ans que je consulte les forums et tuttos de ce site mais ceci est ma première discussion.
Merci à toutes et à tous pour vos participations qui m'ont déjà beaucoup aidé.
Pour planter le décor, je travaille ici sur deux tables [DOCENTETE] et [DOCLIGNE] qui peuvent contenir la liste de nos achats approvisionnement (1 entête de commande et x lignes d'articles soit une liaison 1-n) comme nos affaires clients (initialement utilisée de la même façon mais qui a évolué vers une relation 1-1, chaque article à réparer/traiter étant traité comme une affaire à part entière. [DOCENTETE] contient plutôt des informations administratives et [DOCLIGNES] plutôt orientées sur l'objet de l'affaire en cours pour son traitement en atelier.
Pour ces "affaires", toutes identifiées avec un numéro d'entrée, il y a l'affaire principale par exemple 20.01.003 attaché au secteur "réparation"et des sous-affaires en découlant correspondant aux différents points à traiter réparties en différents secteurs annexes comme "mécanique", "bureau d'étude", "Stock pièces détachées"... et identifiées 20.01.003-A (jusqu'à Z)
Chacune de ces sous-affaires reprend une partie des informations de la principale affaire comme le nom du client, le numéro et le délai de commande, la présence d'un litige. Ces informations sont copiées à leur création mais elles peuvent n'être mis à mises à jour que dans un deuxième temps et c'est ici qu'intervient mon problème.
Mon problème actuel est l'emploi d'une requête SQl Update qui doit prendre en paramètre les valeurs d'un formulaire affichant l'affaire principale que l'on viendrait de mettre à jour pour les copier sur les sous-affaires liées.
J'ai essayé de m'inspirer du contenu des forums ainsi que du code SQL fourni par Access quand je prépare une requête sélection puis une requête mise-à-jour la plus proche de ce que je voudrais faire et où la mise à jour est une variable à passer en paramètre.
Évidemment cela ne marche pas et semble me pointer une erreur de syntaxe à la fin de la requête SQL que je vois pas non-plus.
Voici maintenant le code que j'ai essayé en espérant que je vous aie donné assez d'info (pardon de pas avoir mis les renvois à ligne mais vu mon problème...) :
Merci d'avance pour votre aide !
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Private Sub Commande338_Click() On Error GoTo Err_Commande338_Click Dim var_n_commande As String Dim var_delai As String Dim var_stock_zero As Boolean Dim var_urgence As Boolean Dim var_litige_sg As Boolean Dim var_moins_deux_ans As Boolean Dim var_delai_repar As Date Dim update_s_affaire As ADODB.Connection Dim strSQL As String Dim MonNumero As String 'initialisation des variables liées à notre affaire (les 7 premières variables) MonNumero = Me.n_entree var_n_commande = Me.n_commande var_delai = Me.delai var_stock_zero = Me.[STOCK 0] var_urgence = Me.URGENCE var_litige_sg = Me.litige_sg var_moins_deux_ans = Me.retour_moins_2_ans var_delai_repar = Me.[DOCLIGNE].[Delai_reparation] 'mise à jour de toutes les sous-affaires correspondantes - requête SQL Set update_s_affaire = CurrentProject.Connection strSQL = "UPDATE DOCENTETE INNER JOIN DOCLIGNE ON DOCENTETE.id_affaire = DOCLIGNE.id_affaire SET DOCENTETE.n_commande = [var_n_commande], DOCLIGNE.delai = [var_delai], DOCLIGNE.[STOCK 0] = [var_stock_zero], DOCLIGNE.URGENCE = [var_urgence], DOCLIGNE.litige_sg = [var_litige_sg], DOCLIGNE.[retour moins 2 ans] = [var_moins_deux_ans], [DOCLIGNE].[Delai_reparation] = [var_delai_repar] WHERE (((DOCENTETE.n_entree) Like [MonNumero] & "*") AND ((Right([DOCENTETE].[n_entree],1)) Like "*[A-Z]"));" update_s_affaire.Execute strSQL Exit_Commande338_Click: Exit Sub Err_Commande338_Click: MsgBox Err.description Resume Exit_Commande338_Click End Sub
Partager