Com­ment ré-incrémen…
 
Notifications 
Reti­rer tout

[Réso­lu] Com­ment ré-incré­men­ter un champ de 10 en 10 ?

Posts
Uti­li­sa­teurs
Reac­tions
111  Vu
0
Début du sujet

Sur une table LSTOBJBLD, il ya un champ appe­lé ORDRE qui est ali­men­té par un écran où les uti­li­sa­teurs peuvent sai­sir une valeur numé­rique qui va ser­vir à ordon­ner le nou­vel enre­gis­tre­ment par rap­port aux autres. Mais quand l’u­ti­li­sa­teur va vali­der sa sai­si je sou­haite que le champ en ques­tion soit ré-incré­men­ter de 10 en 10, comme ce qu’il se passe avec EDTLIBLE quand on ajout une bibliothèque.

L’u­ti­li­sa­teur crée test 2 et ordre = 11 :

Test1 10
Test2 11
Test3 20

Après vali­da­tion, nous avons :

Test1 10
Test2 20
Test3 30
Éti­quettes du sujet
2 Réponses 
0
Début du sujet

J’ai uti­li­sé cette méthode :

SEQUENCE per­met de créer un champ (genre DTARAA) dont on défi­ni des pro­prié­tés d’incrémentation.

         EXEC SQL
           DROP SEQUENCE order_seq;

         EXEC SQL
           CREATE SEQUENCE order_seq
             START WITH 10
             INCREMENT BY 10
             MAXVALUE 9990
             CYCLE
             CACHE 24;

           EXEC SQL
             CLOSE list_obj_projet;

           // positionnement en début de fichier
           EXEC SQL
             DECLARE list_obj_projet CURSOR FOR
               SELECT projet,
                            ordre
                 FROM list_objet_build
                 WHERE projet = :p_projet
                 ORDER BY ordre,
                                   RRN(list_objet_build) ;

           EXEC SQL
             OPEN list_obj_projet;

           EXEC SQL
             FETCH list_obj_projet INTO :l_projet, :l_ordre;

           Dow sqlcode=0;
             EXEC SQL
               UPDATE list_objet_build
                 SET ordre = NEXT VALUE FOR order_seq
                 WHERE CURRENT OF list_obj_projet;

             EXEC SQL
               FETCH list_obj_projet INTO :l_projet, :l_ordre;
           EndDo;

0
Début du sujet

Insère une sélec­tion de tes enre­gis­tre­ments triés selon l’ordre dans une table tem­po­raire.
Sur cette der­nière, tu auras spé­ci­fié un champ incré­men­té auto­ma­ti­que­ment de 10 en 10.
La table d’o­ri­gine peut être mise à jour avec les nou­velles valeurs.

Ce mes­sage a été modi­fié Il y a 10 mois parIbmiiste
Share :