En complément des manipulations expliquées dans la vidéo, il faut noter que :
En appliquant une formule, vous pourrez passer un champ tout en majuscules, minuscules, concaténer des chaînes de caractères ou au contraire les répartir (si ces traitements n’ont pas été prévus avant l’import, ou si vos formulaires ne précisent pas les conversions et contrôles automatiques).
L’ensemble des commandes du langage de 4D est à notre disposition dans les éditeurs de formules (une version limitée est accessible aux utilisateurs finaux lorsqu’il accèdent aux éditeurs standard).
L’utilisation de formules permet d’effectuer l’équivalent d’une recherche / remplacement de haut niveau. Les commandes utilisées étant celles du langage de 4D, plus vous les connaîtrez, plus vous pourrez progresser dans la finesse des manipulations.
Prenons des exemples :
dans le fichier que vous avez importé dans une table Utilisateurs, vous avez omis de mettre des majuscules aux premières lettres des prénoms et les noms de famille sont mixtes (majuscules, minuscules ou les 2)
d’autre part, les téléphones ne sont pas tous formatés de la même manière (avec ou sans espace, avec ou sans tirets, 0 non significatif non importé car venant d’une feuille de calcul mal formatée au moment de l’export...).
Nous devons donc retraiter ces données erronées ou mal formatées.
4D fonctionne avec la notion de sélection courante, c’est à dire une liste d’enregistrements dont les numéros sont conservés en mémoire et qui sert de base à tout traitement (sauf quelques rares cas).
Conseil : Lorsque vous appliquez une formule, faites le test préalablement sur quelques enregistrements afin de vérifier que votre formule est valide et correspond bien à vos attentes.
Exemple de tri par formule : L’exemple le plus parlant est en général le tri d’un dictionnaire qui, par définition, est trié par ordre alphabétique et ne nécessite donc pas de tri par formule.
Par contre, qu’en est-il d’un dictionnaire de Scrabble ? Il faut d’abord :
trier les noms par ordre de longueur, en nombre de caractères (mots de 1 caractère, puis 2, puis 3, etc.)
puis au sein de ces groupes, trier par ordre alphabétique.
Dans ce cas, vous devez utiliser un tri par formule pour le premier tri.
En complément : Vous pouvez également appliquer une méthode (qui contient plusieurs lignes de programme) à la sélection.
En effet, si vous devez appliquer plusieurs formules à une même sélection, vous pouvez :
Écrire au sein d’une méthode les formules à appliquer
Puis indiquez le nom de cette méthode dans la ligne de formule à appliquer :
Les formules sont utilisables également dans les colonnes de l’éditeur d’états dont nous avons abordé le fonctionnement dans les précédents chapitres. Cette possibilité vous offre un nombre de combinaisons quasi illimité pour réaliser vos états, exports et traitements.
dans cette vidéo nous allons apprendre à effectuer des recherches avancées et à modifier les données en masse et à les trier selon une formule de calcul. Cette possibilité permet d’affiner les recherches, les tris, les états rapides... mais également de modifier les valeurs d'une sélection d’enregistrements en "appliquant une formule".
Prenons un exemple avec les interventions.
Nous souhaitons dans un premier temps extraire toutes les interventions réalisées en décembre, quelle que soit l'année.
Ne disposant pas de colonne "mois", une recherche classique n'est pas possible car nous devons extraire le mois à partir de la date.
Dans le menu "Enregistrements"
choisir "Chercher"
puis "Chercher par formule ..."
L'éditeur propose 3 colonnes :
Les tables et champs
les opérateurs
les commandes de 4D
pour constituer le formule de recherche :
dans le thème "Dates et heures" double-cliquer sur Mois de
on tape une parenthèse ouvrante
double-cliquer sur "Date d'intervention"
refermer la parenthèse
et ajoutons "=12"
Nous allons donc rechercher toutes les interventions dont le mois est égal à 12. Valider, nous obtenons 905 enregistrements.
On peut les trier par ordre chronologique, (2009, 2010, ) mais il nous est demandé de les trier par jour (tous les 1er ensemble, puis le 2, etc ...)
Dans le menu "Trier"
Supprimons les critères de tri précédents
En bas à droite on clique sur "ajouter une formule"
valider la formule (on revient à l'éditeur de tris)
cliquez sur le bouton "Trier"
Nous obtenons bien tous les 1er ensemble, puis le 2, etc ... mais ils sont mélangés 2010, 2009, 2011.
Nous allons donc ajouter un critère de tri "normal" pour qu'ils soient triés en plus par année croissante :
Dans le menu "Enregistrements" => "Trier"
Double-clic à gauche sur date d'intervention
Double-clic à gauche sur heure d'intervention (pour avoir un vrai tri chronologique)
sur le Clic sur le bouton "Trier"
Nous obtenons donc l'ensemble des interventions du mois de décembre, triées par jour et par heure, année par année.
Nous allons maintenant appliquer une formule, c'est à dire modifier la valeur d'un champ des enregistrements affichés. Attention cette opération est irréversible.
Dans l’ordre nous devons :
Sélectionner des enregistrements (créer une sélection répondant à des critères).
puis appliquer une (ou plusieurs) formules.
Dans l'import d'interventions que nous avons réalisé, ne figurait pas la durée des formations (7:00:00).
Nous allons donc
Créer le champ "Durée" en structure dans la table interventions
Modifier le formulaire "Sortie" pour ajouter le champ durée
on modifie le formulaire sortie on place la durée à côté des initiales du technicien
dupliquer le champ et le texte
modifier le libellé et le champ correspondant
Enregistrer le formulaire (on voit la modification en arrière plan sur la liste des interventions)
nous allons rechercher les interventions de type formations
puis dans dans le même menu "Appliquer une formule"
Comme dans l'éditeur précédent
on double-clique sur "Durée" dans la liste des champs
taper ":=" puisqu'il s'agit d'une affectation
indiquez la durée entre points d'interrogation ?07:00:00?
cliquez sur valider
Les durées sont donc bien affectées à toutes les formations.
PROPRIÉTÉS
Produit : 4D
Thème : Recherche par formule, appliquer une formule
Nom intl. : Query by formula, applying a formula