4D v16

Sélection courante

Accueil

 
4D v16
Sélection courante

Sélection courante    


 

 

En complément des manipulations expliquées dans la vidéo, il faut noter que :  

Le schéma ci-dessous représente la manière donc 4D fonctionne, c’est à dire le mode SELECTION-ACTION :

La notion de Sélection courante est une des notions fondamentales de 4D qui, bien qu’évidente, diffère quelque peu des concepts habituels notamment en SQL.

Une sélection courante est une liste de numéros d'enregistrements obtenue par une recherche sur une table (équivalent de la clause WHERE du SQL)

Ainsi dans 4D, nous avons en permanence une sélection courante par table qui peut contenir de 0 à N enregistrements.

C'est sur cette sélection courante que vont s’appliquer les traitements à venir., On peut changer de sélection courante entre deux traitements.


Le programme ci-dessous correspond à l'exercice réalisé dans cette vidéo (les 2 lignes de déclarations de variables simples sont ajoutées en tête)


 C_DATE($DebutAnnee;$FinAnnee)
 C_LONGINT($Annee)
 
 $Annee:=2011
 $DebutAnnee:=Date("01/01/"+Chaine($Annee))
 $FinAnnee:=Add to date($DebutAnnee;1;0;-1)
 
 ALL RECORDS([Techniciens])
 $Nb:=Records in selection([Techniciens])
 
 ARRAY TEXT(TabTechniciens;$Nb)
 ARRAY LONGINT(Tab_NbInterventions;$Nb)
 
 FIRST RECORD([Techniciens])
 While(Not(End selection([Techniciens])))
    QUERY([Interventions];[Interventions]Initiales_Technicien=[Techniciens]ID) // nous avons en mémoire la liste des interventions du technicien.
    QUERY SELECTION([Interventions];[Interventions]Date_Intervention>=$DebutAnnee;*)
    QUERY SELECTION([Interventions];&;[Interventions]Date_Intervention<=$FinAnnee)
 
    $Indice:=Selected record number([Techniciens])
    TabTechniciens{$Indice}:=[Techniciens]Nom
    Tab_NbInterventions{$Indice}:=Records in selection([Interventions])
 
    NEXT RECORD([Techniciens])
 End while


Pour éviter de définir la taille des tableaux avant d'effectuer la boucle et de valoriser la variable $Indice en cours de traitement (ce qui nous a permis de découvrir la fonction Numéro dans sélection, il est possible d'utiliser le commande AJOUTER A TABLEAU

Bonjour,

dans cette vidéo nous allons apprendre à constituer une sélection courante, comprendre en quoi elle consiste et quelles peuvent être les interactions entre les sélections et les tableaux.

Pour mettre en œuvre cette notion de sélection nous allons réaliser un tableau statistique présenté dans une listbox qui affichera le nombre d’interventions par technicien sur une période donnée.

Nous avons créé pour l'occasion le formulaire STATS qui contient une listbox de 2 colonnes et un bouton permettant d'effectuer le calcul.

Dans la méthode du bouton, nous allons dans un premier temps sélectionner l'ensemble des techniciens
Nous pouvons donc déterminer le nombre d'enregistrements trouvés correspondants
et à partir de ce nombre de valeurs dimensionner nos tableaux :

nous aurons :

  • un tableau texte qui sera le tableau des techniciens qui aura $Nb lignes
  • et un tableau entier long qui aura également $Nb lignes.

Le nom de ces tableaux nous venons les récupérer dan la listbox :

  • tableaux des techniciens => tableau texte
  • tableau nombre d'interventions => tableau entier long

Une fois ces initialisations effectuées, nous allons nous positionner sur le 1er technicien

puis tant qu'il nous restera des techniciens nous allons rechercher les interventions de ce techniciens.
Nous cherchons donc dans les interventions :

  • les interventions dont les initiales du technicien
  • sont égales
  • à l'identifiant du technicien

à ce stade nous avons en mémoire la liste des interventions du technicien.

Afin de déterminer la ligne des tableaux à renseigner, nous allons demander à 4D de nous renseigner sur le numéro de technicien en cours de traitement.

Une fois cette information récupérée, nous pouvons renseigner :

  • le tableau des techniciens à la ligne $Indice et indiquer que c'est le nom du technicien
  • ainsi que le nombre d'interventions, toujours à la ligne $Indice qui va correspondre au nombre d'enregistrements trouvés de la table interventions.

A ce stade nous avons fini la partie statistique, à un détail près, il faut juste penser à changer de fiche lorsqu'on a fini de traiter la première.

Nous pouvons donc tester le formulaire et vérifier que nous obtenons bien un certain nombre d'interventions par technicien.

Pour limiter à une période donnée nous allons modifier la méthode ici et indiquer par exemple que nous souhaitons limiter la période à une année, par exemple 2011.
nous allons donc déterminer :

  • un début d'année comme étant la date constituée du 1er janvier de l'année
  • et une autre variable de fin d'année qui est l'ajout à la date de début d'année d'un an, 0 mois, -1 jour.
    Pourquoi -1 jour ? Sinon nous serions au 1er janvier de l'année suivante.

Une fois ces 3 informations indiquées, nous allons pouvoir compléter la recherche par une recherche dans sélection interventions et nous souhaitons toutes les interventions :

  • dont la date est supérieure ou égale au début de l'année
  • et inférieure ou égale à la fin de l'année.

Nous pouvons retester le formulaire et voir quels sont les changements .
Nous avons donc bien une diminution de la période.
Il suffit maintenant de changer l'année par exemple 2010 et de retester.
2012 et nous avons bien un recalcul qui est effectué systématiquement en fonction des informations figurant dans la recherche.

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : Sélection courante

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v16)