Exemple de MàJ d'une fiche d'une entité

 **FREE

// Programme: FOURN02R - Maintenance d'un fournisseur
// Description: Création ou modification d'un fournisseur
// Paramètres: Mode ('C'=Création, 'M'=Modification), Code fournisseur

Ctl-Opt DftActGrp(*No) ActGrp(*Caller) Option(*SrcStmt:*NoDebugIO);

Dcl-F FOURN02D WorkStn IndDs(Ind) UsrOpn;

// Paramètres d'entrée
Dcl-Pi *N;
  pMode Char(1);
  pCode Int(10);
End-Pi;

// Indicateurs
Dcl-Ds Ind;
  Fin Ind Pos(3);
  Retour Ind Pos(12);
  ProtCode Ind Pos(50);
  ErrSociete Ind Pos(51);
End-Ds;

// Variables
Dcl-S SqlCode Int(10);
Dcl-S SqlState Char(5);
Dcl-S SocieteOld Char(30);

Exec SQL Set Option Commit = *None, CloSqlCsr = *EndMod;

Open FOURN02D;

// Initialisation selon le mode
If pMode = 'C'; // Création
  TITRE = 'Création d''un fournisseur';
  CODE = 0;
  SOCIETE = *Blanks;
  DATCRT = *Blanks;
  DATMAJ = *Blanks;
  ProtCode = *On;
Else; // Modification
  TITRE = 'Modification d''un fournisseur';
  ChargerFournisseur(pCode);
  ProtCode = *On;
EndIf;

// Boucle de saisie
DoU Fin or Retour;
  ExFmt ECRAN;
 
  If Fin or Retour;
    Leave;
  EndIf;
 
  // Validation
  ErrSociete = *Off;
 
  If %Trim(SOCIETE) = '';
    ErrSociete = *On;
    Iter;
  EndIf;
 
  // Sauvegarde
  If pMode = 'C';
    CreerFournisseur();
  Else;
    ModifierFournisseur(pCode);
  EndIf;
 
  Leave;
EndDo;

Close FOURN02D;
Return;

// Procédure: Charger un fournisseur existant
Dcl-Proc ChargerFournisseur;
  Dcl-Pi *N;
    pCodeFourn Int(10);
  End-Pi;
 
  Exec SQL Select CODE, SOCIETE,
                  Char(DATE_CREATION, ISO),
                  Char(DATE_MODIFICATION, ISO)
           Into :CODE, :SOCIETE, :DATCRT, :DATMAJ
           From FOURNISSEUR
           Where CODE = :pCodeFourn
             And SUPPRESSION = '0';
 
  If SqlCode <> 0;
    SOCIETE = '*** Fournisseur introuvable ***';
  EndIf;
 
  SocieteOld = SOCIETE;
End-Proc;

// Procédure: Créer un nouveau fournisseur
Dcl-Proc CreerFournisseur;
  Exec SQL Insert Into FOURNISSEUR (SOCIETE)
           Values (:SOCIETE);
 
  If SqlCode = 0;
    // Récupération du code généré
    Exec SQL Set :CODE = Identity_Val_Local();
  EndIf;
End-Proc;

// Procédure: Modifier un fournisseur existant
Dcl-Proc ModifierFournisseur;
  Dcl-Pi *N;
    pCodeFourn Int(10);
  End-Pi;
 
  Exec SQL Update FOURNISSEUR
           Set SOCIETE = :SOCIETE,
           DAT_MAJ = Current_Date
           Where CODE = :pCodeFourn
             And SUPPRESSION = '0';
End-Proc;

Commentaires

Articles les plus consultés