Bonjour à tous en espérant avoir poster au bonne endroit,
J'explique brièvement mon objectif. J'ai trois colonnes nommés S1 S2 et S3, où S3 ,est "l'enfant" de S2 et S2 "l'enfant" de S1. De ce fait, il y a donc le même S1 pour plusieurs S2 différents et ainsi le même S2 pour plusieurs S3. Mon objectif est de pouvoir, via un bouton, changer ce S2 et affecter ce changement à tout les S3 où le S2 est le même en restant dans le même S1.
De ce fait il va y avoir des numéros S2 identiques dans différents S1. Donc avec le code suivant, mon problème est que si mon S2 vaut par exemple 010 et que je souhaite le changer en 030, la modification va être appliqué à tout les S2 égal à 010 quelque soit le S1, alors qu'il faudra que cela s'applique seulement par exemple où S1 = 010
Exemple :
S1 S2 S3
010
010 010 ==> changement
010 010 010 ==> changement
010 010 020 ==> changement
020
020 010
020 010 010 ==> changement (X)
020 010 020 ==> changement (X)
Voici mon code :
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 / S2 - Change code procedure TMAIN.PopMenu_SEC_ChangeS2Click(Sender: TObject); // Cette fonction permet de changer le code S2 d'un centre de regroupement analytique. Il aut alors modifier toutes les sections FILLES qui ont ce code S2. var OldS2, S2: String; begin if (ZDBPGA.QRY_PGA_S1.State <> dsInactive) then begin OldS2 := ZDBPGA.QRY_PGA_S1S2.Value; inputquery('Change ' + ZDBPGA.QRY_PGA_S1S2.Value, 'Entrez le nouveau code S2', S2); if MessageDlg('Confirmez vous le changement de code ' + OldS2 + ' avec le nouveau code ' + S2, mtWarning, [mbYES, mbNO], 0) = mrYES then begin if (ZDBPGA.QRY_PGA_SECTIONS.State = dsInactive) or (ZDBPGA.QRY_PGA_SECTIONS.IsEmpty) then ZDBPGA.PGA_SEC_Liste(ZDBPGA.QRY_PGA_SECTIONS, '', true); if NOT ZDBPGA.QRY_PGA_SECTIONS.Locate('S2', S2, []) then begin {PGA_S1 - S2 centre de regroupement analytique} ZDBPGA.QRY_PGA_S1.Edit; ZDBPGA.QRY_PGA_S1S2.Value := S2; {PGA_S2 S2 FILLES} ZDBPGA.PGA_S1_Liste(SYSDBS.STR_Soc, OldS2); ZDBPGA.QRY_PGA_S1.First; While NOT ZDBPGA.QRY_PGA_S1.Eof do Begin ZDBPGA.QRY_PGA_S1.Edit; ZDBPGA.QRY_PGA_S1S2.Value := S2; ZDBPGA.QRY_PGA_S1.Next; End; ZDBPGA.QRY_PGA_S1.ApplyUpdates; ZDBPGA.QRY_PGA_SEC.ApplyUpdates; end end; end; end;
Partager