PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

Nouveauté WINDEV, WEBDEV, WINDEV Mobile 21 !
Nouveau champ: Note repositionnable. L'utilisateur final peut en coller lui-même !
Le champ "Note repositionnable" (qui ressemble à un petit papier jaune repositionnable bien connu...) fait son apparition en version 21.
Il est très utile à l'utilisateur final qui veut annoter une fenêtre.
Un champ "Note repositionnable" peut être mis en place par le concepteur de l'application, bien entendu, mais également par l'utilisateur final lui-même !
Grâce à ce champ, l'utilisateur final peut saisir des instructions, des manipulations à effectuer ou des informations : mode opératoire, consignes pour son remplaçant pendant les congés, ...
Grâce à ce champ, l'information circule mieux, et la productivité augmente automatiquement.
Par exemple un utilisateur pourra positionner un pense-bête sur une fenêtre qui lance l'impression, pour s'assurer que c'est bien du papier à en-tête qui est dans l'imprimante !
Bien entendu, le concepteur de l'application peut interdire l'ajout de notes sur les fenêtres de l'application.
Notez que l'utilisateur final peut également rajouter lui-même des bulles d'aide sur les champs pour affiner encore les informations (voir nouveauté 002).
Pour plus de détails, consultez Le champ Note repositionnable.
Bulle d'aide sur les champs: l'utilisateur final peut les créer
Dans les applications réalisées ou recompilées en version 21, les utilisateurs finaux peuvent ajouter des bulles d'aide sur les champs de leur choix.
Cette nouveauté permet à un utilisateur final de mémoriser des informations spécifiques à un champ donné, informations qui apparaîtront lorsque le curseur survolera le champ ou sera positionné dans le champ.
Cette nouveauté complète à merveille le nouveau champ "Note Repositionnable" pour favoriser la circulation de l'information.
Si une bulle d'aide était déjà présente sur le champ, le contenu des 2 bulles est affiché.
Une bulle d'aide très utile saisie par l'utilisateur final de l'application

Pour plus de détails, consultez Bulle d'aide des champs (FAA).
Un nouveau champ pour créer des Workflow (diagrammes)

La version 21 de WINDEV propose un nouveau champ "Fil" qui permet de relier visuellement 2 champs.
Ce champ permet de créer des "workflow" (des diagrammes) très facilement.
Les liaisons sont gérées automatiquement et suivent automatiquement les modifications sur les champs reliés : déplacement, redimensionnement, visibilité...
La création de lien peut s'effectuer :
  • sous l'éditeur de fenêtres,
  • par programmation,
  • et même directement dans l'application, par l'utilisateur final ! (voir ci-après).
Le nouveau champ "Fil" de la version 21 offre des possibilités étonnantes.
Pour plus de détails, consultez Le champ Fil.
Champ Fil: reliez les champs à l'écran
Le champ Fil est très facile à créer et à utiliser.
Un fil relie 2 champs.
Un fil peut être composé d'un ou plusieurs segments.
Un fil peut être rectiligne, à angle droit ou libre.
Lorsqu'un champ est déplacé, le fil suit automatiquement la position des champs reliés.
Cette fonctionnalité est importante, car en version 21, l'utilisateur final peut déplacer lui-même des champs à l'écran.
Un des multiples usages du champ fil : il peut également servir à détailler une interface

Pour plus de détails, consultez Le champ Fil.
Champ Fil: comment le créer
Un champ Fil se crée comme tous les champs, sous l'éditeur de fenêtres.
Il suffit de sélectionner le champ dans le ruban, puis de relier les 2 champs.
Un champ fil peut également être créé par programmation avec la fonction WLangage habituelle ChampCrée ou ChampClone.
Les propriétés ..ChampDépart et ..ChampArrivée permettent de définir les champs à relier.
L'utilisateur final peut même créer des fils (si vous l'y autorisez bien entendu).
Pour plus de détails, consultez Le champ Fil.
Fil: il s'accroche au bon endroit
Le fil est accroché à un champ par un "point d'attache".
Par défaut un champ propose 4 points d'attache : les milieux des 4 côtés.
Le concepteur de l'application peut enlever des points d'attache ou en ajouter.
Par exemple, seuls 2 points d'accroche en milieu haut et bas garantissent des fils verticaux.
Pour plus de détails, consultez Le champ Fil.
Fil personnalisable
Un fil peut être personnalisé, comme tous les champs, à l'aide de la technologie des "7 onglets" ou par programmation.
Parmi les éléments personnalisables :
  • l'épaisseur,
  • la couleur,
  • l'opacité,
  • le type de trait : plein, pointillé, ...
  • la forme, la taille et la couleur de chaque extrémité : carré, rond, losange, flèche, ...
Comme tous les champs, le champ Fil est personnalisable à l'aide des styles.
Pour plus de détails, consultez Le champ Fil.
Le champ Forme met les formes !
En version 21, le champ "Forme" de WINDEV évolue pour proposer encore plus de formes.
Ces nouvelles formes sont utiles pour créer des diagrammes.
En plus des formes existantes :
  • rectangle,
  • rectangle arrondi,
  • cercles et ovales,
  • flèches simples,
de nouvelles formes font leur apparition :
  • cadres sophistiqués,
  • losange,
  • forme libre (polygone).

Autre nouveauté, en version 21, une forme peut contenir une image.
Pour plus de détails, consultez :
Comment créer le workflow ? (le diagramme)
Grâce au nouveau champ Fil, grâce aux nouveaux champs Forme et grâce à la richesse des champs habituels, WINDEV 21 permet de réaliser facilement des Workflow (diagrammes).
Un Workflow se crée soit directement sous l'éditeur de fenêtres, soit par programmation, soit par un mélange des deux méthodes.
L'utilisateur final peut même créer et modifier des Workflow (voir ci-après).
Comme tous les éléments sont des champs, il est possible à tout moment d'interagir ou de modifier le diagramme par programmation.
Un workflow de processus de traitement de commande

L'utilisateur final peut éditer les workflow
WINDEV 21 permet également de réaliser facilement un éditeur personnalisé de Workflow (diagrammes) destiné à des utilisateurs finaux.
L'utilisateur final peut déplacer des champs dans les fenêtres que vous avez créées.
(voir le détail de la nouveauté de déplacement / redimensionnement des champs par l'utilisateur final).
Créer et faire évoluer des workflow est facile en version 21

Bien plus que des Workflow: plan, schéma,...
Ces nouveautés de la version 21 permettent de créer bien plus que des Workflow.
L'ensemble des fonctionnalités de WINDEV est à la disposition des concepteurs d'applications.
Il devient facile de créer :
  • des plans d'architecte,
  • des plans de parking,
  • un plan de bureau,
  • une représentation de chaîne de montage,
  • un schéma de carte électronique,
  • un process de fabrication,
  • ...
Ici un paysagiste crée le plan d'un jardin. Les capteurs connectés envoient les informations sur les plantations en temps réel, et affichent des alertes le cas échéant

Le positionnement d'éléments peut s'effectuer automatiquement par programmation, ou par déplacement par l'utilisateur final. Rappel : les liens suivent automatiquement !
Cerise sur le gâteau: le diagramme est interactif: c'est une fenêtre WINDEV!
Une fois le diagramme créé par le concepteur de l'application, l'application peut interagir avec ce diagramme : un diagramme est une fenêtre WINDEV 21 !
Toutes les fonctionnalités de WINDEV sont disponibles.
L'application peut mettre à jour en temps réel chaque champ :
Par exemple :
  • Changer l'état d'un champ pour indiquer une machine allumée ou éteinte,
  • Afficher le rendement d'une machine ou d'un robot,
  • Afficher la consommation d'une machine,
  • Indiquer si une place de parking est libre ou occupée,
  • Indiquer la présence d'un collaborateur à son poste ou pas (absence, congés, déplacement),
  • Indiquer le taux d'hygrométrie d'une plantation dans un jardin (grâce à un capteur connecté),
  • ...
L'utilisateur final peut lui aussi interagir avec le diagramme (lorsque le concepteur a programmé ces interactions).
Par exemple :
  • cliquer sur un bouton pour arrêter une machine,
  • ralentir une machine,
  • envoyer une information par email,
  • imprimer des statistiques de production,
  • ...
Bien entendu, toute modification peut être sauvée et sera restaurée automatiquement ou par programmation.
des workflow (et bien plus) sans limites !
Il n'y a pas de limites aux traitements que vous pouvez programmer !
Ré-organisation de la fenêtre
La version 21 propose une nouveauté très attendue : la possibilité pour l'utilisateur final de réorganiser la disposition des champs dans une fenêtre, et de modifier certaines propriétés des champs.
Aujourd'hui un utilisateur choisit un grand nombre de paramètres liés sa vie personnelle et professionnelle : sur son téléphone portable par exemple il décide des photos de fond, des sonneries, des éléments qu'il conserve ou supprime... Il décide des informations qu'il publie (ou pas) sur les réseaux sociaux.
L'utilisateur final décide des applications qu'il installe, des fichiers qu'il sauvegarde ou qu'il supprime...
En version 21, l'utilisateur final décide de certains éléments de présentation et d'utilisation de ses fenêtres !
L'utilisation du logiciel s'en trouvera améliorée.
Bien entendu cette fonctionnalité est débranchable par le concepteur de l'application, pour l'ensemble de l'application ou par fenêtre ou par champ.
Pour plus de détails, consultez IHM modifiable par l'utilisateur final.
Gérer l'ajout et le masquage de champs
Dans une fenêtre, l'utilisateur final peut passer en mode "édition" afin de réorganiser la fenêtre (si le concepteur a autorisé la réorganisation).
Dans ce mode il est possible de :
  • déplacer un ou plusieurs champs,
  • redimensionner les champs,
  • masquer des champs,
  • ajouter des notes,
  • ajouter des bulles d'aide sur les champs,
  • relier des champs avec des fils.
Afin de sécuriser les manipulations, il est possible :
  • d'annuler une ou plusieurs modifications (Undo / Redo),
  • de revenir à l'état initial de la fenêtre à tout moment (même 2 jours après).
Les modifications effectuées sont automatiquement mémorisées.
Chaque possibilité est débranchable par programmation, finement : pour l'application, par fenêtre et par champ.
Il est également possible d'indiquer pour chaque champ s'il peut être édité ou pas.
Pour plus de détails, consultez IHM modifiable par l'utilisateur final.
Le concepteur peut modifier ses fenêtres directement pendant un "go"
Lors des phases de tests de cette nouveauté auprès d'un panel de développeurs, nous nous sommes aperçus que nombreux étaient les développeurs qui utilisaient cette fonctionnalité de modification pendant le "GO", pour affiner leurs fenêtres !
Et en effet, des idées de modification interviennent souvent lorsque la fenêtre est en usage réel, lors de manipulations avec des données.
Cet usage est donc un avantage de cette nouveauté.
Au retour du mode GO, si des modifications d'interface ont été opérées, l'éditeur de fenêtres demande donc s'il doit reporter les modifications qui ont été effectuées !
Le concepteur peut récupérer les configurations des utilisateurs
Les concepteurs peuvent récupérer les réorganisations réalisées par les utilisateurs finaux.
Certains utilisateurs sont vraiment experts dans leur domaine, et leur expérience peut être profitable.
De même, un logiciel générique peut être utilisé dans un domaine spécifique et la réorganisation des champs lui donne alors une meilleure efficacité.
Une autre utilisation de la fonctionnalité de modification est l'utilisation d'une fenêtre par 2 services différents (profils d'utilisateurs différents) : les commerciaux et les comptables par exemple. Certains boutons seront mis en avant et regroupés selon l'usage habituel du service.
Pour plus de détails, consultez IHM modifiable par l'utilisateur final.
Le pouvoir aux utilisateurs
Les utilisateurs peuvent modifier et adapter leurs fenêtres.
Les éléments de champ modifiables sont :
  • position,
  • taille,
  • taille police,
  • couleur police
Des toasts plus comestibles
En version 21, les toasts ont été redessinés.
Ils en avaient bien besoin !
Leur nouvel aspect est bien plus moderne.

Champ image SVG
Le champ Image de la version 21 supporte les masques d’écrêtage en mode SVG.
Les contours progressifs et les masques d'opacité sont également supportés.
Des champs qui innovent en permanence
Pour découvrir les évolutions sur les champs de WINDEV 21, WEBDEV 21 et WINDEV Mobile 21, veuillez consulter les nouveautés :
  • 205 à 226 pour WINDEV 21,
  • 741 à 770 pour WEBDEV 21,
  • 454 à 464 pour WINDEV Mobile 21
Nouveau type de Graphe : heatmap
WINDEV propose déjà de très nombreux types de graphes.
Un nouveau type de graphe fait son apparition dans la version 21 de WINDEV.
Il s'agit du graphe "Heatmap" (carte de chaleur).
Ce type de graphe permet de représenter en 2 dimensions des données qui ont 3 axes de valeurs.
Par exemple :
  • chiffre d'affaires selon la date et le lieu,
  • température selon la date et le lieu,
  • nombre de ventes par taille et catégorie de vêtements,
  • ...
Le nouveau champ graphe Heatmap

Nouveau type de Graphe heatmap : comment le remplir ?
Le nouveau graphe HeatMap se remplit par programmation grâce à la famille de fonctions grHM.
Il est possible de spécifier les couleurs à utiliser.
Les dégradés pour les valeurs intermédiaires sont générés automatiquement.
Le graphe peut être imprimé dans les états.
Graphe secteur: évolution
Dans un graphe secteur, la version 21 permet de positionner une ou des légende(s) à l'intérieur du graphe.

Graphe secteur Multi-niveaux: évolution
En version 21, les parts d'un graphe secteur multi-niveaux peuvent être excentrées, par exemple pour les mettre en évidence.

Graphe : évolutions diverses
Sous l'éditeur de fenêtres, les champs Graphe proposent maintenant leur propre mode d'édition, ce qui permet entre autres de déplacer le champ et non plus juste la légende ou le titre...
Graphe aire : un dégradé est possible.
WDAnalytics: connaissez tout de l'utilisation de vos applications déployées. Et améliorez-les
Avec ce nouvel outil standard de WINDEV 21, vous allez enfin savoir comment vos logiciels sont utilisés, quels choix sont les plus utilisés, les choix qui le sont le moins ou/et ceux pas du tout utilisés, quels sont les temps de calcul et les temps de réponse...
WDAnalytics vous permet de savoir comment sont utilisées vos applications.
Pour plus de détails, consultez Télémétrie : Présentation.
Des statistiques précises
WDAnalytics collecte les informations d'utilisation et vous permet ensuite de les analyser. Notez que la collecte des informations n'impacte pas les performances des applications.
Pour chaque bouton et chaque choix de menu, les informations suivantes sont collectées :
  • nombre de sélections (total, moyenne par jour)
  • lancement à la souris, au clavier ou par touche de raccourci.
Pour chaque fenêtre :
  • nombre de lancements (total, moyenne),
  • durée moyenne d'affichage de la fenêtre avec et sans activité (une fenêtre qui reste ouverte sans aucune action clavier ou souris pendant 1 minute est considérée comme "affichée-inactive").
Les champs dans lesquels des actions ont eu lieu sont indiqués, avec l'ordre dans lequel les actions ont été effectuées, ainsi que la durée de présence sur chaque champ.
Pour plus de détails, consultez Télémétrie : Présentation.
Quelles fonctionnalités sont utilisées (et inutilisées) dans vos applications ?
WDAnalytics vous indique les fenêtres les plus utilisées. Il s'agit certainement des fenêtres qu'il faudra le plus soigner !
De la même manière, WDAnalytics vous indique les états les plus utilisés. Il s'agit certainement des états qu'il faudra le plus soigner également.
WDAnalytics vous indique le nombre d'utilisations des exports (Excel, Word, mail, ...) par fenêtre et par champ.
Si le nombre d'exports est élevé, il peut être intéressant de créer un traitement spécifique.
WDAnalytics vous indique pour chaque champ de saisie si l'utilisateur final a activé l'option de mémorisation de la valeur.
Cette information peut être intéressante pour activer l'option de mémorisation de champ afin que l'ensemble des utilisateurs bénéficient de ce gain de temps.
WDAnalytics vous indique pour chaque bouton qui possède un raccourci (F2, F10, ...) si ce raccourci est utilisé ou pas. Cela peut être utile pour la formation des utilisateurs finaux.
De la même manière, WDAnalytics vous indique les boutons souvent cliqués mais qui n'ont pas de raccourci. Il sera peut être utile de rajouter un raccourci. Etc.
Les informations fournies par WDAnalytics permettent d'améliorer les fonctionnalités réellement et souvent utilisées par les utilisateurs finaux de vos logiciels.
Vous avez les informations précises pour agir sur les éléments les plus utilisés.
Pour plus de détails, consultez Télémétrie : Présentation.
Qu'est ce qu'on maintient mais que personne n'utilise ? = comment je peux dégager du temps ?
Les éléments de l'application qui ne sont pas utilisés sont signalés : fenêtres, états, requêtes, ...
Et encore plus précisément, par fenêtre, les champs inutilisés (boutons jamais cliqués par exemple) sont signalés.
Après avoir pris les précautions nécessaires, il peut certainement être envisagé de supprimer ces traitements de l'application.
L'application sera plus légère et la maintenance sera facilitée.
Vos équipes gagnent du temps.
Attention toutefois à ne pas supprimer un traitement qui ne sert qu'une fois par an (édition d'un bilan par exemple) ou une fois tous les 4 ans (les années bissextiles ou lors d'une coupe du monde !!).
Pour plus de détails, consultez Télémétrie : Présentation.
Quelles versions de vos applications les clients utilisent-ils ?
Une application vit.
Une application est donc en général déployée dans plusieurs versions différentes.
En règle générale, certains clients se mettent à jour, et d'autres restent dans des versions antérieures.
WDAnalytics permet de savoir quelle version de l'application est utilisée.
Pour l'ensemble de votre parc applicatif, WDAnalytics vous permet de connaître la part de chaque version.
Cette information est utile :
  • pour vendre des mises à jour,
  • pour analyser pour quelles raisons des utilisateurs ne se mettent pas à jour,
  • pour comparer des vitesses d'adoption de nouvelle version,
  • ...
Pour plus de détails, consultez Télémétrie : Présentation.
métriques de performance Améliorez les performances: tous les délais d'attente signalés
WDAnalytics va encore plus loin : il indique également les délais d'attente du logiciel.
Pour chaque fenêtre et chaque état, les traitements les plus longs sont indiqués.
Ainsi, si un traitement est trop lent sur le poste de l'utilisateur final, vous en êtes informé.
Cela permet de vérifier le comportement correct de l'application en fonction du contexte d'exploitation.
Les temps de traitement de chaque bouton sont également indiqués.
Si un traitement est lancé un très grand nombre de fois, vous en êtes également informé.
Vous savez précisément comment sont utilisées et quelles sont les performances des applications que vous avez créées.
Vous pouvez prendre les mesures qui s'imposent, logicielles ou matérielles pour améliorer les performances finales.
Pour plus de détails, consultez Télémétrie : Présentation.
Consultez les résultats en "GO"
La consultation des résultats s'effectue selon 2 modes opératoires.
Le premier mode opératoire consiste à exécuter l'application sous WINDEV et à passer en mode "Analytics" : parcourez simplement l'application.
Elle affiche directement les informations à l'écran, à côté des choix et des champs.
Les données de télémétrie sont à l'écran !
Pour plus de détails, consultez Télémétrie : Présentation.
Consultez les résultats de la télémétrie dans le tableau de bord
La consultation des informations peut également s'effectuer à travers le tableau de bord de WDAnalytics.
Le tableau de bord propose une vision synthétique très complète des données de télémétrie.
Pour plus de détails, consultez Télémétrie : Présentation.
Métriques de survenance d'erreurs chez les clients dans les applications déployées
Le meilleur des développeurs peut faire des erreurs dans une application !
Lorsqu'une erreur se produit chez l'utilisateur final, celui-ci ne la signale pas forcément.
Toutefois, le concepteur doit avoir connaissance de la survenance de ces erreurs pour les corriger.
C'est ici que cette nouveauté de la version 21 intervient. WDAnalytics collecte les erreurs éventuelles qui se produisent.
Vous connaissez ainsi les bogues qui se produisent.
Les informations concernant les bogues comprennent des éléments utiles, comme la pile des appels, etc.
De nombreuses statistiques sont disponibles. Par exemple : la fréquence d'apparition d'une erreur au cours du temps, le nombre d'utilisateurs concernés, le top ten, etc.
Ces éléments aident à fixer l'ordre de priorité de correction.
Pour plus de détails, consultez Télémétrie : Présentation.
Imprimez un rapport
WDAnalytics permet l'impression d'un rapport de télémétrie complet sur une application.
Cela permet par exemple de transmettre ces informations à une autre équipe.
Pour plus de détails, consultez Télémétrie : Présentation.
Technologie de collecte et de stockage des données: en local, sur le réseau ou via le cloud
La collecte des données de télémétrie s'effectue de manière transparente, sans impact sur les performances (moins de 1% d'impact).
Plusieurs méthodes sont possibles, à votre choix.
Notez que les données collectées peuvent être anonymisées, en partie ou totalement.
Les données sont stockées, au choix :
  • sur un serveur réseau,
  • ou dans le cloud (un abonnement est alors nécessaire).
Lorsqu'il est activé, WDAnalytics est alimenté automatiquement.
L'agrégation des données s'effectue en arrière plan, sur le serveur de collecte.
L'organisation, l'agrégation et la consultation des données ne consomment ainsi aucune performance de l'application.
Pour plus de détails, consultez Télémétrie : Présentation.
Collectez des informations spécifiques
Il est possible de demander à collecter des informations spécifiques, lors du passage à un endroit précis du code ou de l'interface.
Cette collecte est utile par exemple pour :
  • analyser une nouveauté,
  • compter des cas particuliers : client vip, ...
  • compter le nombre de pages imprimées,
  • suivre certains postes,
  • compter le nombre de factures saisies,
  • compter le nombre d'abandons,
  • ...
Vous pouvez analyser des traitements et des passages spécifiques de vos applications.
Pour plus de détails, consultez Télémétrie : Présentation.
Parmi les données collectées et agrégées ...
La télémétrie collecte et agrège les données suivantes.
Notez que la collecte est imperceptible en terme de performances (moins de 1% d'impact en moyenne).
Les données sont stockées par application :
  • toutes les applications,
  • une sélection d'applications,
  • une application.
Les données sont également stockées par version.
Les informations disponibles pour chaque période sont les suivantes :

Sur les utilisateurs
  • Le nombre total d'utilisateurs,
  • Le nombre de nouveaux utilisateurs,
  • Le nombre d'utilisateurs perdus (Le taux d'attrition ou "churn rate")
  • Le nombre moyen quotidien d'utilisateurs,
  • Le nombre minimal quotidien d'utilisateurs,
  • Le nombre maximal quotidien d'utilisateurs.
Sur le matériel
  • La répartition des OS,
  • La répartition des nombres d'écrans,
  • La répartition des résolutions d'écran,
  • La répartition des langues,
  • La répartition des capacités mémoire.
Sur une application, en général
  • Le nombre total de lancements de l'application,
  • Le nombre moyen de lancements quotidiens de l'application,
  • Le nombre minimal de lancements quotidiens de l'application,
  • Le nombre maximal de lancements quotidiens de l'application,
  • Le nombre moyen de lancements quotidiens de l'application par utilisateur,
  • Le nombre minimal de lancements quotidiens de l'application par utilisateur,
  • Le nombre maximal de lancements quotidiens de l'application par utilisateur,
  • La répartition de l'utilisation des langues,
  • Le temps moyen d'activité de l'application quotidien par utilisateur,
  • Le temps minimal d'activité de l'application quotidien pour un utilisateur,
  • Le temps maximal d'activité de l'application quotidien pour un utilisateur.
Sur les (éventuelles) erreurs fatales détectées par le mécanisme de sécurité du WLangage
  • Le nombre total d'anomalies,
  • Le nombre total d'utilisateurs concernés par une anomalie,
  • Le pourcentage d'utilisateurs concernés par une anomalie,
  • Le nombre moyen d'anomalies par jour,
  • Le nombre minimal d'anomalies par jour,
  • Le nombre minimal d'anomalies par jour lorsqu'il y a au moins une anomalie,
  • Le nombre maximal d'anomalies par jour,
  • Le nombre moyen d'anomalies par jour par utilisateur,
  • Le nombre minimal d'anomalies par jour pour un utilisateur,
  • Le nombre minimal d'anomalies par jour pour un utilisateur concerné par au moins une anomalie,
  • Le nombre maximal d'anomalies par jour pour un utilisateur,
  • Le nombre moyen d'anomalies par jour par utilisateur concerné par au moins une anomalie.
Top 10 des éléments
  • Top 10 des fenêtres les plus utilisées,
  • Top 10 des requêtes les plus utilisées,
  • Top 10 des états les plus utilisés,
  • Top 10 des fenêtres les moins utilisées,
  • Top 10 des requêtes les moins utilisées,
  • Top 10 des états les moins utilisés.
Eléments non utilisés
  • Les fenêtres non utilisées,
  • Les requêtes non utilisées,
  • Les états non utilisés
Sur un élément donné (une fenêtre, un état, ...)
  • Le nombre total d'utilisations,
  • Le nombre d'utilisateurs qui l'ont utilisé au moins une fois,
  • Le pourcentage d'utilisateurs qui l'ont utilisé au moins une fois,
  • La fréquence d'utilisation,
  • Le nombre moyen quotidien d'utilisations,
  • Le nombre minimal quotidien d'utilisations,
  • Le nombre minimal quotidien d'utilisations si il y a au moins une utilisation,
  • Le nombre maximal quotidien d'anomalies,
  • Le nombre moyen quotidien d'utilisations par utilisateur,
  • Le nombre minimal quotidien d'utilisations pour un utilisateur,
  • Le nombre minimal quotidien d'utilisations pour un utilisateur qui a utilisé la fenêtre,
  • Le nombre maximal quotidien d'utilisations pour un utilisateur,
  • Top 10 des traitements les plus longs,
  • Top 10 des traitements les plus utilisés.
Pour un traitement donné, pour un champ donné, pour un choix de menu donné, on veut savoir les plus utilisés, les moins utilisés et les inutilisés
  • Le nombre total d'utilisations,
  • Le nombre d'utilisateurs qui l'ont utilisé au moins une fois,
  • Le pourcentage d'utilisateurs qui l'ont utilisé au moins une fois,
  • La fréquence d'utilisation,
  • Le nombre moyen quotidien d'utilisations,
  • Le nombre minimal quotidien d'utilisations,
  • Le nombre minimal quotidien d'utilisations si il y a au moins une utilisation,
  • Le nombre maximal quotidien d'anomalies,
  • Le nombre moyen quotidien d'utilisations par utilisateur,
  • Le nombre minimal quotidien d'utilisations pour un utilisateur,
  • Le nombre minimal quotidien d'utilisations pour un utilisateur qui a utilisé la fenêtre,
  • Le nombre maximal quotidien d'utilisations pour un utilisateur
FAA
  • Top 10 des FAA les plus utilisées,
  • Le nombre total d'utilisations par FAA,
  • Le nombre d'utilisateurs qui l'ont utilisé au moins une fois,
  • La fréquence d'utilisation,
  • etc.
Pour plus de détails, consultez Télémétrie : Présentation.
Partagez un dictionnaire de traduction dans le cloud
Vous le savez, WINDEV, WEBDEV et WINDEV Mobile permettent de développer pour le cloud (voir www.pcscloud.net).
Les projets peuvent être sauvegardés et manipulés dans le cloud.
En version 21, il est possible de stocker le dictionnaire de traduction de WDMSG (module complémentaire) dans le cloud afin de l'alimenter en temps réel et de le partager entre plusieurs équipes ou cabinets de traduction.
La télémétrie dans le cloud
Les données de télémétrie peuvent être stockées et agrégées dans le cloud. Dans ce cas, vous n'avez rien à faire !
Support des écrans 4K en développement
Les écrans en définition 4K (ultra haute définition, 3.840 x 2.160 pixels) ont fait leur apparition.
Apple propose également sur ses matériels des définitions avancées (de 2.048 x 1.536 à 5.120 x 2.880 à la date d'édition de ce document).
L'environnement de développement de la version 21 a été adapté afin de travailler en toute ergonomie avec les écrans qui proposent cette définition.
L'explorateur de projets retrouve la mémoire !
En version 21, l'éditeur de projets conserve la mémoire des éléments utilisés lors de sa fermeture.
C'est une petite nouveauté très pratique au quotidien !
Parmi les éléments sauvegardés, vous retrouverez :
  • La mémorisation de l'état enroulé/ déroulé lors de fermeture / réouverture de projet ainsi que lors de recompilation du projet,
  • Mémorisation de l'élément sélectionné,
  • ...
Configuration de projets: les éléments affichent les configs qui les utilisent
En version 21, pour un élément donné (une fenêtre, un état, une procédure, une classe), une nouvelle option de menu permet de lister les configurations qui utilisent cet élément.
Depuis cette liste, il est même possible d'inclure ou d'exclure l'élément des différentes configurations.
Configuration de projets: des nouveautés utiles
En version 21, les configurations de projets offrent de nouvelles fonctionnalités utiles au quotidien :
  • duplication de configuration,
  • changement de type de configuration (composant, EXE, webservice, ...),
  • modification de l'ordre de présentation des configurations dans le treeview de l'éditeur.
Saisie des libellés multilangues: nouvelle interface plus claire
Vous le savez, WINDEV, WEBDEV et WINDEV Mobile permettent de développer une même application en 64 langues différentes.
La saisie des libellés et messages dans les différentes langues s'effectue soit via le logiciel complémentaire WDMSG, soit directement dans l'éditeur de fenêtres.
Parmi les nouveautés de la saisie multilangues vous bénéficiez des fonctionnalités suivantes :
  • l'interface est plus sobre : un seul ascenseur, bandeau moins intrusif, menu contextuel, ...
  • copie de toutes les langues d'un texte en une seule opération,
  • collage de toutes les langues d'un texte en une seule opération,
  • pour un champ, recopie du texte d'une des langues dans toutes les autres langues (utile pour éviter les champs vides quand tous les textes ne sont pas encore traduits); ce fonctionnement peut être un mode par défaut,
  • ne pas visualiser la zone de saisie d'une ou plusieurs langues,
  • le texte est édité automatiquement dans l'éditeur correspondant à son codage : Texte, RTF, HTML, ...
  • le texte RTF ou HTML écrit en blanc apparaît avec un fond,
  • ...
Langues personnalisées: "je ne suis pas un numéro" !
Les différents éditeurs permettent de saisir les libellés en plusieurs langues.
Les 48 langues standard sont présentées par leur nom.
Il est également possible d'utiliser 16 langues non listées.
Avec les anciennes versions, ces langues apparaissaient en "Langue1", "Langue2" etc.
Cela ne facilitait pas la lecture du code !
En version 21, il est maintenant possible de nommer une langue. Par exemple : breton, catalan, ... ou Grande Distribution, Coiffeur, Agence, ...
Car en effet la possibilité de traduire les libellés d'une application est également utilisée par des éditeurs de logiciels pour spécialiser le vocabulaire de l'interface en fonction de l'activité de l'utilisateur !
Langues : vous choisissez l'ordre d'affichage des langues
En version 21, il est possible de modifier l'ordre d'affichage des langues dans la description du projet.
Les langues apparaissent alors dans cet ordre dans tous les champs de saisie multilangues de l'environnement.
GO : refaire le même GO d'un clic
Lorsqu'un développeur effectue le GO d'un élément, il peut être amené à se déplacer dans le projet : modification d'un code d'une procédure globale, modification d'une classe, ...
Relancer le GO de l'élément initial après cette modification était fastidieux en manipulations.
En version 21, pour refaire le GO d'une fenêtre qui n'est plus affichée suite à vos déplacements dans le projet, un clic suffit !
Découvrez des raccourcis insoupçonnés: Alt Entrée, Shift F2, ...
Les raccourcis clavier (touches de fonction ou combinaisons de touches) font gagner du temps et des mouvements au quotidien.
Vos développeurs connaissent-ils Alt Entrée ? Ce raccourci ouvre la fenêtre des 7 onglets.
Et Shift F2 sur un nom de procédure ? Il ouvre une fenêtre qui liste tous les appels à cette procédure. Et ESPACE ?
En version 21, ces raccourcis sont indiqués dans tous les menus affichés.
Cela vous permettra certainement de découvrir des touches de raccourcis insoupçonnés et de gagner un peu plus de temps, ...
Vos développeurs connaissent les raccourcis

Nouveau : Diff de champs
En version 21, il devient possible de comparer 2 champs pour afficher leurs différences.
Les champs peuvent se trouver dans la même fenêtre, ou dans 2 fenêtres différentes.
Diff de projets: nouveautés
En version 21, le diff de projets liste toutes les modifications des paramètres de langues : séparateurs, format date, etc…
Les répertoires de génération des configurations sont également comparés.
La recherche encore plus puissante : composez une phrase en langage naturel!
En version 21, une nouvelle option de recherche permet de trouver tous les éléments (champs d'un type donné par exemple) ayant des caractéristiques très précises.
L'interface permet de créer une phrase en langage naturel pour lancer la recherche.
Par exemple :
"Trouve tous les traitements qui utilisent le composant FraisDePort"
ou
"Trouve les boutons qui valident la fenêtre"
Une recherche encore plus efficace

Evolution du ruban
Le ruban de l'environnement évolue.
Par exemple, le ruban propose maintenant de visualiser et sélectionner les styles applicables à un champ dans un volet de style.
Générateur de gabarits: créez vos gabarits
Les équipes de développement possédant des compétences en infographie désirent parfois créer leurs propres gabarits.
En version 21, un générateur de gabarits est livré.
Il est ainsi plus facile de créer ses propres gabarits.
Pour plus de détails, consultez Générateur de gabarit.
Meilleur stockage des gabarits
En version 21, les gabarits sont mieux organisés. Les images utilisées sont par exemple déportées dans un sous-répertoire spécifique. Le projet est plus clair.
Navigation entre les éléments ouverts modernisée (Ctrl Tab)
La combinaison de touches Ctrl + Tab permet de naviguer entre les fenêtres ouvertes.
En version 21, la visualisation est modernisée.
Centre de Suivi de Projets : organisez les tâches de vos équipes directement depuis le diagramme de Gantt
Le Centre de Suivi de Projets permet d'afficher un diagramme de Gantt des projets en cours.
En version 21, il devient possible d'interagir à la souris avec ce diagramme :
  • déplacer des tâches,
  • ajuster la durée d'une tâche (raccourcir, allonger),
  • affecter une tâche,
  • indiquer/modifier des dépendances entre tâches,
  • ...
Cela permet également d'effectuer facilement des simulations.
Un diagramme de Gantt peut concerner un projet ou un ensemble de projets.
Centre de Suivi de Projets : courbe d'avancement (Burndown Chart): estimez la date réelle de fin de projet
Le volet "Statistiques" du Centre de Suivi de Projets accueille une nouvelle information : la courbe d'avancement du projet (nommé "Burndown Chart" en méthode agile).
En tenant compte des paramètres réels, la date de fin est ici estimée au 26 avril

Il y a 1 courbe, et 2 droites de tendance dans la fenêtre.
La courbe représente la charge de travail planifiée.
Le nombre de jours planifiés évolue au fur et à mesure du projet.
La vitesse réelle de développement est impactée par la "réalité", c'est-à-dire par exemple : réunions, séminaires, formation, débogage d'anciennes applications, tâches oubliées, absences, ...
La première droite de tendance affichée représente la tendance de la courbe. Cette tendance indique donc la date théorique de fin du projet (ou de l'itération).
La deuxième droite de tendance représente la tendance en incluant l'expérience des projets précédents (vous pouvez choisir le ou les projets de référence).
Grâce à la version 21, vous estimez mieux les dates de livraison de vos projets.
Les notifications du Centre de Suivi de Projets arrivent dans votre messagerie mail
Rappel : des notifications automatiques (messages automatiques) sont générées par l'environnement sur des événements particuliers (tout est paramétrable).
  • un auteur de fiche de bogue est notifié quand la fiche est corrigée,
  • lorsqu'une tâche est terminée, une notification est envoyée à tous ceux qui ont des tâches dépendant de cette tâche terminée,
  • comptes rendus de l'intégration continue (passage des plans d'action),
  • alertes des robots de surveillance,
  • notifications des serveurs de base de données HFSQL,
  • messages du GDS : réintégration, ...
  • ...
Ces notifications sont transmises aux membres de l'équipe par messagerie.
L'environnement de WINDEV 21 propose une messagerie sécurisée et intégrée. Cette messagerie permet de communiquer en toute confidentialité (et sans spams !) entre les membres de l'équipe.
En version 21, une messagerie Internet "classique" peut également être utilisée pour recevoir les notifications.
Dépendances entre tâches
La version 21 permet de définir des dépendances entre les tâches :
  • une (ou plusieurs) tâche(s) donnée(s) indique qu'elle ne pourra débuter que lorsqu'une ou plusieurs autres tâches auront elles mêmes été réalisées.
Le diagramme de Gantt tient compte de ces dépendances et ne permet pas de planifier des tâches dépendantes avant les tâches à réaliser.
Quand une tâche qui bloquait d'autres tâches est réalisée, une notification automatique est adressée aux développeurs concernés (via la messagerie interne et par email, si ce mode a été activé).
Centre de Suivi de Projets : impression Gantt
L'impression du diagramme de Gantt est revue dans la version 21.
L'impression multi-pages est plus sophistiquée. Il est possible de spécifier la granularité du quadrillage, de la plage horaire visible, ...
Les dépendances entre les tâches sont imprimées.
Bulle des "7 onglets"
En version 21, la bulle des "7 onglets" n'a pas bullé !
La bulle est bien plus sobre, et affiche maintenant des informations supplémentaires :
  • la description de l'option,
  • la propriété correspondante à l'action en WLangage (s'il y a lieu),
  • les valeurs multilangues (s'il y a lieu),
  • pour les options inaccessibles qui apparaissent grisées, la raison du grisage de l'option (si nécessaire).
Une bulle plus informative et plus sobre

Description de table / description de colonne
Dans le menu ouvert par un clic droit sur une table il est maintenant proposé d'ouvrir les "7 onglets" de la table elle-même ou de la colonne cliquée.
Des champs et des couleurs : choisissez les couleurs du gabarit
Le sélecteur de couleurs disponible sous l'éditeur de fenêtres propose en plus des modes actuels la possibilité de choisir les couleurs parmi celles du gabarit en cours.
Cela permet de respecter une homogénéité dans l'interface.
Appliquer un style à une colonne de table de type "Interrupteur"
Une colonne personnalisée : le fond de la coche sélectionnée est verte

En version 21, il devient possible de paramétrer en détail le style des colonnes de table de type "Interrupteur", ...
Nouveautés diverses de l'éditeur de fenêtres
Un champ Image sous l'éditeur possède une "vignette" intégrée qui représente son mode d'affichage. En version 21, il est possible de ne plus afficher cette vignette (via les "7 onglets").
Pour plus de détails, consultez Le champ Image.
Créez un état personnalisé basé sur un cube rolap (TCD)
Ce nouveau type d'état en version 21 permet d'imprimer le contenu d'un champ TCD.
Un état source est généré.
Il est possible de spécifier si le cube imprimé doit représenter le cube complètement déroulé, complètement enroulé ou tel que déroulé à l'écran.
Le style des cellules est par défaut celui du champ, mais chaque cellule peut être surchargée.
L'impression multi-pages est gérée en largeur et en hauteur; les marges de recouvrement sont paramétrables.
Créez un état personnalisé basé sur une feuille de tableur
Ce nouveau champ en version 21 permet d'imprimer le contenu d'un champ Tableur ou d'un fichier .xls ou.xlsx .
Le style des cellules est par défaut celui du champ ou du fichier, mais chaque cellule peut être surchargée.
L'impression multi-pages est gérée en largeur et en hauteur; les marges de recouvrement sont paramétrables.
Il est également possible de demander une impression qui zoome automatiquement le champ pour qu'il rentre dans une seule page.
Pour plus de détails, consultez Champ Tableur dans un état.
Etat : un PDF qui s'imprimera tel quel dans 30 ans ! (PDF/A)
Le PDF/A est un format PDF standardisé par l'ISO.
Ce type de PDF embarque dans le fichier PDF tous les éléments nécessaires à son affichage ou impression : par exemple toutes les polices sont systématiquement embarquées.
Ce format est notamment utilisé pour l'archivage à long terme.
En version 21, une nouvelle option fait son apparition afin de générer des PDF/A.
Le format PDF/A est un sous-ensemble du format PDF. Par exemple la transparence est interdite.
L'éditeur d'états de WINDEV guide le développeur dans le respect des limitations du PDF/A. Si nécessaire, des erreurs de compilation indiquant ce qui n'est pas supporté dans un PDF/A sont générées.
Il est également possible de signer des PDF/A (voir nouveauté 071).
Pour plus de détails, consultez Imprimer au format PDF.
Un état pour les notaires (et pas que): signatures de PDF (RGS)
Il existe 2 types de signature pour les états PDF : les signatures pour approbation et les signatures pour certification.
La version 21 supporte ces 2 types de signature.
Un nouveau champ Signature fait son apparition pour l'approbation. Il permet d'apposer une signature numérique dans l'état, pour l'export PDF.
Il est possible de définir l'image ou texte à afficher dans ce champ Signature, qui apparaîtra dans l'état PDF.
Le choix du certificat numérique à utiliser pour la signature est réalisé en édition ou par programmation.
Il est également possible d'apposer une signature dans les impressions programmées à l'aide de la fonction iImprimeSignature.
Il est ainsi possible de générer des PDF signés respectant les règles RGS.
Pour plus de détails, consultez :
Etat avec formulaire PDF en fond: meilleure qualité (vectoriel)
La qualité du formulaire est irréprochable

Un état peut utiliser un PDF en fond.
L'exemple le plus habituel est celui d'un PDF de formulaire officiel : déclaration d'impôts, demande de papier d'identité, déclaration comptable, ...
Le PDF de fond est fourni par l'administration concernée.
En version 21, l'éditeur d'états optimise l'utilisation de ces PDF en "fond" lorsque l'état lui-même est généré en PDF (des PDF en fond de PDF !
Le PDF de fond est maintenant inclus sous forme vectorielle.
Il n'y a pas de perte de qualité lors des zooms et la taille finale est souvent réduite.
Etat : fenêtre des "7 onglets" non modale
En version 21, il devient possible d'ouvrir simultanément plusieurs fenêtres de "7 onglets" sous l'éditeur d'états.
Cela permet de comparer des champs, d'effectuer des copier/coller, ...
Le clic sur le bouton "Appliquer" permet de voir immédiatement les modifications effectuées sans refermer la fenêtre des "7 onglets".
2 fenêtres de

Etat : l'édition rapide des champs
Un menu contextuel supplémentaire permet l'édition rapide des champs dans l'éditeur d'états

Une tâche récurrente lors de la création et de la modification des états est la mise en forme des textes.
Pour faciliter cette tâche, l'éditeur d'états en version 21 propose un mode d'édition rapide des champs.
Ce mode est activé par menu contextuel ou grâce à la touche de raccourci "R" (comme Rapide).
Les actions les plus habituelles sont alors proposées dans une fenêtre contextuelle.
Etat : ascenseur visuel
Dans un état de grande taille, avec de nombreux blocs, un ascenseur vertical peut apparaître.
En version 21, la cage d'ascenseur visualise une miniature de l'état pour se positionner plus facilement.
Etat : modifier le traitement d'impression depuis l'aperçu
Un état peut être imprimé directement dans l'application (traitement sans interface ou via le clic sur un bouton par exemple).
Un état peut également être imprimé par l'utilisateur final après avoir été visualisé dans l'aperçu avant impression.
En version 21, un nouveau traitement fait son apparition dans les états : Réimpression.
Il devient possible de saisir du code qui sera exécuté avant le déclenchement d'un export ou d'une impression sur imprimante.
Ce code permet de définir des traitements personnalisés :
  • demande d'un mot de passe pour impression réelle,
  • demande du niveau de qualité d'un PDF à générer,
  • être certain que le client a imprimé pour des raisons légales,
  • suppression d'un fond noir ou d'un fond image, pour ne pas vider les cartouches de l'imprimante,
  • ...
Suite au clic sur le bouton d'export PDF, une fenêtre demande un mot de passe

Pour plus de détails, consultez :
Export HTML des états : Meilleur rendu des cadres
Un état peut être imprimé en HTML.
Le rendu de l'affichage des cadres autour des champs a été amélioré en version 21.
Le rendu prend désormais en compte de nouveaux paramètres : styles du trait, épaisseur, pointillés, ...
GDS Analyse (description des données): taille de stockage divisée par 100 !
Pour les développeurs et les équipes qui utilisent le GDS, l'occupation disque des "Analyses" et de leur historique est drastiquement réduite !
Pour les spécialistes, c'est la fin des répertoires "ANAxxx" qui étaient créés à chaque génération.
Ces répertoires servent à conserver les anciennes générations de l'analyse.
Lorsqu'une analyse est stockée à travers le GDS, ces fichiers de sauvegarde deviennent inutiles.
En effet, le GDS conserve et gère tout l'historique du projet, de manière optimisée.
En version 21, ces répertoires "ANAxxx" ne sont donc plus générés lorsque l'analyse est gérée par le GDS.
GDS étiquetage des analyses
En version 21, à chaque génération d'analyse, le GDS étiquette automatiquement la version de l'analyse correspondante dans la base.
Il est ainsi facile de savoir avec quelle version d'analyse une version de l'application a été réalisée.
Liste des connexions affichées
Pour un accès plus rapide, la liste des connexions décrites dans l'analyse apparaît dans le treeview de l'analyse.
Meilleur nommage des paramètres
Lorsqu'on définit une condition de sélection, la valeur à tester peut être fournie " en dur ", ou être un paramètre.
Le nommage par défaut de ce paramètre évolue pour reprendre le nom de la rubrique utilisée dans la condition.
Finis les "param1, param2, param3" !
Evolution de l'interface visuelle
L'éditeur de requêtes permet de visualiser graphiquement une requête.
En version 21, lors de modifications apportées à la requête, le graphe est mis à jour en conservant les modifications de présentation.
Un bouton permet de réinitialiser le graphe.
Relookage de l'administrateur pour une meilleure utilisabilité

En version 21, l'administrateur du GDS fait peau neuve et dispose d'un ruban.
Les fonctionnalités sont ainsi plus faciles à trouver et à utiliser.
GDS et composant
Afin d'augmenter la vitesse du GDS et d'alléger les manipulations lors de la mise à jour des composants, le nombre d'extractions a été réduit.
GDS: Réintégration automatique du projet
Lorsqu'un développeur effectue une modification sur le projet, WINDEV propose automatiquement d'extraire le projet pour pouvoir effectuer cette modification.
Il faut ensuite valider la réintégration lorsque l'opération est terminée.
En version 21, une option permet que la réintégration soit effectuée directement, sans confirmation.
Fabrique logicielle: en WLangage
Grâce à la nouvelle fonction WLangage PlanActionInfo, il devient possible de récupérer par programmation de nombreuses informations suite à l'exécution d'un plan d'action dans la fabrique logicielle.
Parmi les informations récupérables on trouve : compte rendu, utilisateur ayant lancé le plan d'action, machine, heure de début et de fin, avancement, ...
Couplée à la fonction PlanActionExécute, cette nouveauté rend possible le pilotage de la Fabrique Logicielle et la récupération du résultat des compilations effectuées.
Nouvelle action: génération de l'aide
L'intégration continue (la Fabrique Logicielle) permet maintenant d'automatiser la génération de l'aide de l'application.
Nommage des langues
Les langues ne sont plus des numéros !
WDMSG utilise maintenant le nommage des langues exotiques.
Code-cible conditionnel: déclarez-le directement dans le code
Le code-cible conditionnel permet de définir des parties de code dans un traitement qui seront exécutées selon la plateforme sur laquelle s'exécute l'application : sous Windows, sous Linux, sous iOS, sous Android, ...
Jusqu'à présent, un code-cible conditionnel se déclarait uniquement dans l'interface visuelle de l'éditeur de code.
En version 21, les code-cibles conditionnels peuvent également se déclarer directement en WLangage dans le code source, en utilisant la nouvelle syntaxe :
<CODE SI Système=Android>
LanceTraitementAndroid()
<SINON>
ToastAffiche("Non disponible")
<FIN>
Autre nouveauté : le code qui n'est pas concerné ne générera pas d'erreurs de compilation.
Pour plus de détail, consultez Instruction de compilation : COMPILE SI.
Nouveau code-cible conditionnel : ciblez même les configurations !
En version 21, il devient également possible d'exécuter ou non une partie de code en fonction de la configuration du projet. Il suffit d'utiliser la nouvelle syntaxe :
<CODE SI Configuration="MaConfiguration">
...
<SINON>
...
<FIN>
Pour plus de détail, consultez Instruction de compilation : COMPILE SI.
Nouveau code-cible conditionnel : variez selon les constantes directives de compilation
Autre nouveauté des code-cibles conditionnels de la version 21 : il est désormais possible de prendre en compte (ou non) une partie de code en fonction de la valeur d'une constante.
Cette nouveauté permet par exemple de paramétrer le fonctionnement d'un composant interne en fonction du projet qui l'utilise.
La syntaxe pour ce type de code-cible est :
<CODE SI CONSTANTE=Valeur>
...
<SINON>
...
<FIN>
Pour plus de détail, consultez Instruction de compilation : COMPILE SI.
Threads : protection automatique de l'accès aux variables
La programmation des threads nécessitait de prendre des précautions pour éviter que deux threads n'accèdent en même temps à la même variable.
Ce contrôle s'effectuait souvent à l'aide de "Sections critiques" et demandait beaucoup de dextérité de la part du développeur pour éviter de créer des situations d'interblocages (deadlocks).
En version 21, tout cela c'est du passé ! (toujours compatible, bien évidemment).
La protection des variables dans un thread devient automatique en version 21.
Il suffit d'utiliser le nouvel attribut lors de la déclaration des variables à protéger.
L'attribut indique au WLangage que l'accès à cette variable sera protégé contre les conflits de threads : si un deuxième thread essaie d'accéder à une variable déjà utilisée dans un thread en cours, ce thread sera automatiquement mis en attente.
Pour les "race condition" sur les tableaux et tableaux associatifs, une nouvelle syntaxe de SectionCritiqueDébut permet de prendre un accès exclusif à la variable tableau concernée.
Compression de chaînes en mémoire au format gzip
Le format "gzip" est un format de compression standard très utilisé.
Ce format est souvent utilisé pour échanger des données entre applications tierces.
En version 21, il devient possible de compresser ou décompresser un buffer de données ou une chaîne de caractères au format "gzip" (et plus seulement un fichier).
Les fonctions WLangage Compresse et Décompresse fonctionnent sur des chaînes et des buffers.
Formats d'archivage TAR et TGZ
Le format TAR (Tape Archive) est un format d'archivage de fichiers très répandu dans le monde LINUX.
Il est utilisé pour rassembler plusieurs fichiers dans une archive unique (un seul gros fichier).
Sa variante TGZ (TAR.GZ) effectue en plus une compression GZIP.
En version 21, les fonctions de compression de fichiers du WLangage (famille de fonctions zip) s'enrichissent pour supporter ces deux formats d'archives.
Pour plus de détails, consultez :
Suivez la progression des compressions et des décompressions (archives)
En version 21, toutes les fonctions qui compressent et décompressent des fichiers peuvent afficher automatiquement une jauge de progression.
L'utilisateur final voit l'avancement des opérations !
Cette jauge concerne les opérations de : compression, décompression, ajout de fichier, suppression, découpage d'archive, regroupement d'archive, ...
Lorsqu'elle sera demandée, la jauge sera affichée automatiquement.
Il est également possible de personnaliser l'affichage de la progression par une procédure.
Sélection d'images : multi sélections
Pour proposer la sélection d'une image sur le disque dans une application, la fonction WLangage fSélecteurImage ouvre une boite de dialogue qui affiche les images de la machine.
En version 21, le sélecteur visuel d'images devient multi-sélection.
Il devient ainsi possible de sélectionner plusieurs images en même temps dans une application tout en continuant de bénéficier de l'aperçu dans le sélecteur.

Requêtes HTTP : timeout de connexion
En version 21, il est possible de spécifier un timeout spécifique pour les connexions lors des requêtes HTTP.
La nouvelle propriété ..TimeOutConnexion du type avancé HTTPRequête du WLangage fait son apparition.
Requêtes HTTP : pas d'excès de vitesse
Lors de la mise au point d'une application qui effectue des requêtes HTTP, il est parfois pratique de simuler un réseau lent pour s'assurer que l'application réponde de façon optimale dans un environnement réel ou dégradé.
La nouvelle fonction WLangage HTTPSimuleRéseau permet de limiter la vitesse de transfert, en envoi ou en réception.
Formatage des numériques: choisissez les séparateurs
La fonction WLangage NumériqueVersChaîne évolue en version 21.
NumériqueVersChaîne permet désormais de spécifier le caractère de séparation à utiliser pour les milliers et les décimaux.
Les caractères proposés sont :
  • la virgule,
  • le point,
  • l'espace,
  • le caractère défini par le système d'exploitation,
  • le caractère défini dans le projet.
Associez une application à une extension de fichier
Lorsqu'un utilisateur final double-clique sur un fichier dans l'explorateur de Windows, une application pour utiliser ce fichier se lance (ou alors Windows propose de choisir une application pour ce faire).
Grâce à la nouvelle fonction WLangage SysAssocieExtension il devient possible d'associer à une extension de fichier l'application qui doit être automatiquement lancée.
Liste des pays et code ISO
La nouvelle fonction WLangage DonneListePays renvoie la liste des pays du monde ainsi que leur code ISO.
Nouveautés diverses du WLangage
La fonction TableEnumèreColonne renvoie directement un type Champ. Il n'y a plus d'indirection à effectuer. L'ancienne syntaxe est bien entendu toujours supportée.
Les nouveaux types Point et Rectangle sont disponibles.
A quoi sert iCalendar? A partager des informations de rendez-vous
iCalendar est un standard RFC (RFC5545) pour les échanges de données d'agenda et de planning.
Un fichier texte (extension .ics) contient le détail des rendez-vous.
Ce fichier permet d'échanger facilement des rendez-vous entre applications : par exemple j'exporte mon agenda d'une application WINDEV, et je l'importe directement dans Outlook (et vice versa).
La version 21 permet de lire et d'écrire facilement les données dans un fichier de type iCalendar.
Importer un ou des rendez-vous dans un champ planning
Les nouvelles fonctions WLangage iCalendarVersPlanning et iCalendarVersAgenda permettent d'afficher directement un fichier iCalendar dans un planning ou un agenda WINDEV, WEBDEV ou WINDEV Mobile, et même dans les états.
La nouvelle fonction WLangage iCalendarVersRendezVous permet de récupérer tous les rendez-vous contenus dans un fichier iCalendar.
Cette fonction lit le contenu du fichier et renvoie un tableau de type RendezVous (type natif du WLangage) rempli avec les données du fichier.
Il est ensuite facile de manipuler ce tableau de rendez-vous par programmation pour afficher les rendez-vous directement dans un champ planning, ou pour enregistrer les Rendez-vous dans une base de données.
Exporter un ou des rendez-vous depuis un champ planning
Les nouvelles fonctions WLangage PlanningVersiCalendar et AgendaVersiCalendar permettent d'exporter directement un planning ou un agenda WINDEV Mobile (ou WINDEV, WEBDEV).
La nouvelle fonction WLangage RendezVousVersiCalendar permet de générer automatiquement un fichier de type iCalendar à partir d'un tableau de RendezVous donné.
Création d'un Webservice: on vous donne le fichier WSDL, vous générez la collection de procédures en 1 clic !
Créer un Webservice en WINDEV (ou en WEBDEV) est très facile.
C'est encore plus facile en version 21, avec la génération automatique des collections de procédures depuis un fichier WSDL.
Rappel : un fichier WSDL contient la description des structures et des points d'entrée du Webservice : c'est le "cahier des charges" du Webservice.
Lorsque vous devez programmer un Webservice, demandez simplement le fichier WSDL et laissez WINDEV (ou WEBDEV) travailler pour vous !
Renvoi de valeurs multiples
Un Webservice peut renvoyer des valeurs multiples.
En version 21, ce renvoi est facilité.
tester l'appel d'un Webservice en vitesse ralentie (3G, Edge, ...)
En mode test, il est possible de ralentir le transfert de données pour simuler une connexion 3G, Edge ou un débit donné (fonction httpSimuleRéseau).
Cette fonction permet de tester un WebService dans des conditions dégradées.
Contrôlez le timeout de Requête
En version 21, il est possible de spécifier un timeout pour les requêtes lors des requêtes SOAP.
La nouvelle propriété ..TimeOut fait son apparition dans ce but.
Jouez les tests au ralenti
L'éditeur de tests permet de créer des tests automatiques et unitaires qui seront rejoués à grande vitesse.
En version 21, il est possible de demander à rejouer les tests au ralenti.
Cela permet de vérifier à l'écran le comportement de l'application et pas seulement de s'assurer du fonctionnement correct.
Ascenseur visuel : naviguez à vue !
En version 21, un nouveau mode de déplacement dans le code fait son apparition.
La partie droite (ou gauche) de l'éditeur de code affiche le code en réduction.
La fenêtre de visualisation active est matérialisée.
Et le déplacement de la petite fenêtre de visualisation déplace également le contenu de l'éditeur de code.
Ce mode de déplacement apporte précision, vitesse et confort considérable lors du scroll (du défilement).
Ce mode offre également un aperçu de tous les codes.
Par exemple toutes les procédures d'une collection de procédures ou toutes les méthodes d'une classe sont affichées.
Saisie assistée "selon" sur énumérations
L'éditeur de code de la version 21 propose maintenant la saisie assistée sur les SELON avec une variable de type ENUMERATION.
L'éditeur de code génère tous les CAS avec toutes les valeurs possibles de l'ENUMERATION.
Petite nouveauté, mais très pratique quand on manipule des ENUMERATIONS !

Eléments hors configuration : code grisé
Lors de l'ouverture d'un élément hors configuration, son code apparaît grisé.
Cela permet de comprendre qu'il n'est pas compilé et qu'il n'est pas dans la configuration courante.
Génération automatique (ou pas) de commentaires
Lors de la création d'une procédure, une option est maintenant disponible pour activer ou pas la génération automatique du commentaire du prototype de la procédure.
Cette option est mémorisée.
Cette option permet de satisfaire les "2 écoles" :
  • l'école de ceux qui ne veulent pas "l'amas" de commentaires au-dessus du prototype et donc qui laissent vide,
  • l'école de ceux qui veulent les commentaires et les remplissent.
Nouvelle fenêtre de trace
En version 21, la fenêtre de trace du débogueur évolue.
Sur chaque ligne, le type d'informations est représenté par une icône.
Il est possible de filtrer les messages selon ces puces.
Le détail des erreurs WLangage est maintenant directement affiché.

Un retour d'informations précises
Le débogueur de la version 21 affiche des informations précises sur les erreurs fatales de l'application :
  • nom et version de l'application,
  • élément et traitement ayant provoqué l'erreur,
  • ligne de code ayant provoqué l'erreur,
  • nom de la fonction ou de la propriété (si impliquée dans l'erreur),
  • pile des appels,
  • message complet de l'erreur,
  • auteur de la ligne de code,
  • ...
Mode strict
Dans le mode strict, le débogueur s'arrête systématiquement sur chaque erreur, qu'elle soit fatale ou pas.
Cela permet de détecter les erreurs fatales qui sont masquées par les Quand Exception et de détecter les erreurs non fatales silencieuses.
Affichage du contenu de l'enregistrement courant
Le débogueur peut maintenant afficher le contenu de l'enregistrement courant d'un fichier de données.
Il suffit de saisir le nom du fichier de données dans la zone d'affichage des variables du débogueur.
De plus, il est possible de sélectionner les rubriques à afficher.
Affichage des couleurs en couleur !
Le débogueur affiche le contenu des variables.
Quand ce sont des variables de type couleur, le débogueur n'affiche plus seulement les valeurs RVB, mais également un rectangle avec la couleur correspondante.
XML
Type XML: des requêtes xPath, directement
En version 21, la fonction XMLExécutexPath peut également directement accepter en paramètre une variable de type XML.
L'intérêt de la fonction native est de pouvoir traiter un document entier en un seul passage et donc d'obtenir de meilleures performances.
Audit statique
L'audit statique analyse vos projets et formule des conseils d'amélioration.
L'éditeur de WINDEV est livré en mode 32 bits et 64 bits.
Souvent, la version 32 bits de l'éditeur de WINDEV est utilisée.
Lorsqu'un projet atteint une taille conséquente (1.000 éléments), l'utilisation de la version WINDEV 64 bits permet d'améliorer les performances des éditeurs.
L'audit statique le signale en version 21.
Le répertoire .cpl contient les informations de compilation d'un projet. Lorsque ce répertoire est situé sur un disque réseau les performances de l'éditeur peuvent être ralenties.
L'audit statique de la version 21 signale ces répertoires et conseille de les stocker sur un disque local.
Rubriques calculées
La version 21 de HFSQL permet de définir des rubriques calculées.
Une rubrique calculée est une rubrique "virtuelle" d'un fichier de données.
Par exemple, un fichier de données CLIENT peut contenir des rubriques NOM et PRENOM.
En version 21, il est possible de déclarer une rubrique calculée NOM_COMPLET correspondant à la concaténation de NOM et PRENOM.
Un autre exemple utile : un fichier de données contient une date de naissance. Une rubrique calculée "AGE" peut être définie pour simplifier les traitements.
Une rubrique calculée peut ou non être présente physiquement dans le fichier de données, à votre choix.
Des valeurs par défaut définies par du code SQL
Lors de la définition d'un fichier de données (table) dans l'éditeur d'analyses (description des données), il est possible d'indiquer une valeur par défaut pour chaque rubrique (colonne) du fichier de données (table).
Jusqu'à présent, les valeurs par défaut possibles étaient :
  • NULL,
  • une constante (entier, réel, chaîne, ...).
En version 21, il devient possible de spécifier une formule SQL comme valeur par défaut. Il est ainsi possible d'initialiser une rubrique avec la date du jour ou le nom de l'utilisateur connecté.
Cette nouveauté est également très utile pour la compatibilité avec les bases de données tierces.
Rubrique DateHeure automatique: horodatez les enregistrements
La version 21 propose un nouveau type de rubrique pour les fichiers de données (tables) HFSQL : les rubriques DateHeureAutomatique.
Une rubrique (colonne) DateHeureAutomatique est initialisée automatiquement par le moteur de base de données HFSQL avec la date et l'heure de création de l'enregistrement (la ligne) (ou, au choix, avec la date et l'heure de dernière modification).
Il est possible de filtrer ou d'effectuer des recherches sur une rubrique DateHeureAutomatique.
HExécuteRequêteSQL avec paramètres sécurisés
L'éditeur de requêtes de WINDEV permet de définir graphiquement des requêtes sur les bases de données.
Il est également possible de saisir directement des requêtes en langage SQL dans le code, avec la fonction WLangage HExécuteRequêteSQL.
En version 21, la requête saisie directement accepte des paramètres.
Ces paramètres sont simplement passés à la fonction HExécuteRequêteSQL.
Pour protéger l'application contre les attaques de type "injection SQL", WINDEV formate automatiquement les paramètres en syntaxe SQL.
Il n'est donc plus possible à un "pirate" d'utiliser un champ de saisie pour modifier le sens du code SQL.
Performances: gestion des fichiers de cache optimisée
Lors de l'arrêt d'un serveur HFSQL ou après une période de longue inactivité, les caches du moteur de base de données sont vidés.
Or ces caches ont une grande utilité pour améliorer les performances d'accès à la base de données.
En version 21, le moteur HFSQL initialise automatiquement les caches et les maintient afin d'assurer une continuité de performances.
Une nouvelle fonction permet de vider les caches à la demande.
Des fenêtres d'assistance automatique plus claires
HFSQL propose en standard des fenêtres d'assistance automatique pour l'utilisateur final.
Ces fenêtres d'assistance permettent à l'utilisateur final de traiter des cas d'erreur non prévus dans l'application : erreur de doublon ou d'un conflit de modification par exemple.
En version 21, les messages de ces fenêtres d'assistance automatique ont été simplifiés.

Centre de Contrôle HFSQL: un "explain" visuel
La fonctionnalité EXPLAIN sur une requête SQL permet de connaître le fonctionnement (le parcours) précis du moteur de la base de données sur la requête analysée, et avec les données réelles utilisées.
Le EXPLAIN indique par exemple les index utilisés, et l'ordre de lecture des données.
Cela permet par exemple de comprendre pourquoi dans certains cas particuliers une requête n'est pas aussi rapide que prévue et aide à définir de nouveaux index.
En version 21 le résultat d'un Explain est présenté visuellement.

Cela permet de comprendre sans effort le parcours détaillé de chaque requête.
Centre de Contrôle HFSQL: mode 64 bits
Le mode 64 bits du Centre de Contrôle HFSQL permet d'exploiter pleinement la mémoire des machines.
Dans ce mode 64 bits, par exemple, la réindexation d'un fichier de données en mode classique est plus rapide.
L'utilisation des bases tierces en mode 64 bits est également possible.
Centre de Contrôle HFSQL: Accès natif SQL Server
Le type d'accès à SQL Server (Dblib, SQLnCli ODBC, SQLnCli OLE DB) est spécifiable dans le Centre de Contrôle.
Jauge de synchronisation
Lorsqu'une nouvelle machine est ajoutée à un cluster existant, celle-ci doit bien entendu se synchroniser.
Cette synchronisation est entièrement automatique.
En version 21 une jauge permet de suivre l'état d'avancement de la synchronisation.
Des informations sur l'avancement de la synchronisation sont également consultables en temps réel dans le Centre de Contrôle HFSQL.
Pour plus de détails, consultez :
Libération de transactions à la demande
HFSQL Cluster s'occupe de tout !
Mais un administrateur de données peut vouloir libérer à la demande et immédiatement une transaction en cours, surtout pendant les phases de tests : cette possibilité est maintenant offerte en version 21 de HFSQL Cluster.
Pour plus de détails, consultez la documentation de la fonction HTransactionLibère.
Envoi automatique de message aux clients
La fonction WLangage HEnvoieMessageVersClient permet d'envoyer un message à tous les clients connectés à un serveur HFSQL.
Cette fonction peut servir à avertir les utilisateurs avant une interruption de service (maintenance du cluster par exemple) ou être gérée par les applications et servir de mécanisme de communication entre applications.
A partir de la version 21, cette fonction WLangage est également disponible pour les utilisateurs du cluster HFSQL.
Pour plus de détails, consultez la documentation de la fonction HEnvoieMessageVersClient.
Réindexation de fichier de données à la demande
Vous le savez, HFSQL Cluster s'occupe automatiquement de la gestion des index.
Mais un administrateur de données peut vouloir ré-indexer un ou plusieurs fichiers de données : cette possibilité est maintenant offerte en version 21.
Pour plus de détails, consultez la documentation de la fonction HRéindexe.
Augmentation de la vitesse de la base à la demande (par optimisation des index)
HFSQL Cluster s'occupe de tout.
Mais un administrateur de données peut vouloir lancer une optimisation des index pour accélérer les vitesses de lecture et d'écriture : cette possibilité est maintenant offerte en version 21.
Pour plus de détails, consultez la documentation de la fonction HStatCalcule.
Hadoop: architecture distribuée
Hadoop est un ensemble de technologies (framework) permettant le traitement de volumes de données massifs en utilisant des clusters de serveurs.
Hadoop en soit n'est pas un logiciel, c'est un "concept".
Parmi les logiciels composant Hadoop on trouve Hbase (la base de données elle-même), Hive (le langage de requêtage) et HDFS (couche bas niveau de stockage des fichiers, qui sont forcément distribués).
Le concept essentiel dans le domaine du "big data" est que l'architecture de stockage est massivement distribuée, en général sur des centaines ou des milliers de serveurs.
Cinq machines (qui peuvent être des machines virtuelles) minimum sont nécessaires pour mettre en place une base Hadoop.
Les architectures Big Data sont "échelonnables" (ou scalables), c'est-à-dire qu'il est possible d'ajouter des serveurs supplémentaires pour absorber la montée en charge des applications.
Les applications développées avec la version 21 accèdent nativement aux clusters de données Hadoop.
Hadoop, NoSQL: bases de données non relationnelles
Les bases de données Hadoop sont dénommées bases "NoSQL".
Ce terme est galvaudé, car ils s'agit en réalité de bases "non relationnelles".
Une base NoSQL est une base qui s'affranchit des limites des bases de données relationnelles (scalabilité), mais en s'affranchissant également de certaines de leurs fonctionnalités : atomicité, cohérence, intégrité référentielle, persistance (les données ne se perdent pas!), temps réel, ...
Connecteur natif à Hadoop: Hbase, Hive, HDFS
La version 21 propose un accès natif à Hadoop.
Hadoop permet l'écriture et l'accès aux données selon 3 niveaux hiérarchiques :
  • soit au niveau colonne (HBASE),
  • soit au niveau "requête", car finalement les concepteurs de bases NO SQL se sont aperçus que de temps en temps une requête était nécessaire (Hive),
  • soit au niveau "fichier" entier (ou bloc de fichier) (HDFS).
HBase
HBase est une base de données non relationnelle (NoSQL) distribuée, orientée colonne disposant d'un stockage non structuré pour les grandes tables.
HBase est une composante essentielle de Hadoop.
HBase est conçue pour traiter des données aux volumes importants (plusieurs milliards de lignes, plusieurs millions de colonnes par ligne) et non uniformes (chaque ligne peut avoir une structure différente des autres lignes).
Dans une base HBase, les données sont stockées dans une table, de manière dé-normalisée.
Une table est découpée en familles de colonnes, qui contiennent elles-mêmes des colonnes.
Chaque ligne ("row", équivalent d'un enregistrement dans un SGBD traditionnel) est identifiée par un et un seul "rowKey".
Le "rowKey" est la seule clé de la table.
Une cellule est l'intersection d'une ligne et d'une colonne (rien de neuf là-dedans !).
L'historique du contenu d'une cellule est conservé de façon horodatée (avec la date/heure d'écriture).
On peut poser des filtres sur une table HBase (un peu à la manière d'un filtre sur HFSQL).
Pour plus de détails, consultez Gestion des bases HBase.
HBase : programmation
La version 21 propose une nouvelle famille de fonctions WLangage pour accéder aux bases HBase.
Ces nouvelles fonctions WLangage permettent de créer une table, d'ajouter des lignes "row", de lire des données et de supprimer des données : hbCréeTable, hbEcrit, hbListeTable, hbLit, hbRécupèreDescriptionTable, hbSupprime, hbSupprimeTable.
De nouveaux types natifs font leur apparition : hbCellule, hbColonne, hbConnexion, hbDescriptionColonne, hbDescriptionTable, hbEcriture, hbLecture, hbParamètreScan, hbRésultatScan.
Pour plus de détails, consultez Gestion des bases HBase.
Hive : interrogez les bases Hadoop
Hive est une couche logicielle de Hadoop permettant d’exécuter des requêtes.
Hive utilise le langage HiveQL; qui est un langage proche du SQL.
(Les bases sont NoSQL, mais au final, ils ont recréé quand même un SQL ! Ils se sont rattrapés en indiquant que le "No" signifiait en fin de compte "Not Only")
Le développeur spécifie sa requête en utilisant le HiveQL (une syntaxe dérivée du SQL) et le moteur Hive traduit cette requête pour interroger nativement la base de données.
En version 21, il est possible d’exécuter des requêtes HiveQL sur une base HBase en utilisant la famille de fonctions habituelles WLangage SQLExec.
En version 21, il est possible de créer des requêtes de sélection et d'ajout de données.
Pour plus de détails, consultez Gestion des bases Hive.
HDFS : Hadoop Distributed File System
HDFS est une des composantes du framework Hadoop.
HDFS est un système de fichiers distribué, c'est-à-dire qu'il utilise un cluster de serveurs pour constituer un espace de stockage.
HDFS est capable de stocker un nombre quelconque de fichiers. Les fichiers stockés dans le cluster sont découpés en blocs de données et répartis sur les différents nœuds du cluster HDFS.
Pour garantir la résilience des données, chaque bloc de données est dupliqué sur plusieurs noeuds (trois par défaut).
Ainsi, si un nœud tombe en panne, le système de fichier n'est pas affecté.
HDFS permet par exemple de copier des fichiers.
Les applications WLangage en version 21 disposent d'une nouvelle famille de fonctions WLangage pour accéder et gérer les fichiers stockés sur un cluster HDFS : hdfsListe, hdfsCopieVers, hdfsCréeRépertoire, ...
Pour plus de détails, consultez Gestion du système HDFS.
Transactions en SQL
La version 21 de HFSQL supporte 8 nouvelles syntaxes pour permettre la gestion des transactions dans les requêtes SQL :
  • BEGIN [ WORK ]
  • BEGIN TRANSACTION
  • START TRANSACTION [ ISOLATION LEVEL … ]
  • COMMIT [ WORK ][ AND CHAIN ]
  • COMMIT TRANSACTION [ AND CHAIN ]
  • ROLLBACK [ WORK ][ AND CHAIN ]
  • ROLLBACK TRANSACTION [ AND CHAIN ]
  • SET ISOLATION LEVEL
Grâce à ces nouvelles syntaxes, il devient possible de manipuler les transactions et le niveau d'isolation directement en SQL.
Plusieurs commandes SQL dans une seule requête
En version 21, plusieurs commandes SQL peuvent être envoyées au serveur en une seule opération : par exemple un ensemble d'INSERT, ou une séquence BEGIN - UPDATE - COMMIT.
Il suffit de séparer les commandes par ; (point virgule).
Ordre SQL CONVERT
L'ordre SQL CONVERT (tel qu'il est décrit dans la norme ISO du SQL) permet la conversion d'une chaîne de caractères d'un charset vers un autre.
Par exemple, il permet de convertir une chaîne en ISO-8859-1 (jeu de caractères français utilisé par Windows) en UTF-8.
Il fait son apparition en version 21.
Ordres SQL DAY, DAYOFMONTH, DAYOFWEEK et DAYOFYEAR
Avec les quatre nouveaux ordres SQL : DAY, DAYOFMONTH, DAYOFWEEK et DAYOFYEAR, la manipulation des jours dans les requêtes SQL est plus sophistiquée.
Voir également nouveauté 124 (valeur par défaut SQL).
Ordre SQL EVERY
L'ordre EVERY du SQL est une fonction d'agrégation (comme l'ordre SUM par exemple), c'est-à-dire qu'il agit sur un groupe de données et retourne une valeur unique.
L'ordre EVERY retourne vrai si tous les arguments qu'il a reçus sont vrais, et faux sinon.
Ordre SQL CURRENT_USER
La version 21 de HFSQL supporte l'ordre SQL CURRENT_USER. Cet ordre SQL renvoie le nom de l'utilisateur de la connexion en cours.
Cette valeur peut être utilisée, par exemple, pour enregistrer automatiquement l'auteur d'une modification.
Récapitulatif des nouveaux ordres SQL
La version 21 propose donc 18 nouvelles fonctions SQL :
BEGIN / BEGIN WORK
BEGIN TRANSACTION
START TRANSACTIONPermet de débuter une transaction.
COMMIT
COMMIT WORK
COMMIT TRANSACTIONPermet de valider une transaction.
CONVERTConvertit une chaîne de caractères d'un charset vers un autre
CURRENT_USERRenvoie le nom de l'utilisateur de la connexion en cours.
DAY / DAYOFMONTHRenvoie le numéro du jour dans le mois.
DAYOFWEEKRenvoie le numéro du jour dans la semaine.
DAYOFYEARRenvoie le numéro du jour dans l'année.
EVERYRenvoie Vrai si l'argument est vrai pour tous les enregistrements.
ROLLBACK / ROLLBACK WORK, ROLLBACK TRANSACTIONPermet d'annuler une transaction.
SET ISOLATION LEVELFixe le niveau d'isolation de la transaction.
Connecteur natif (accès natif) à Oracle en Linux
Le connecteur natif à Oracle était déjà disponible en 32 et 64 bits pour Windows.
En version 21, ce connecteur natif devient également disponible pour Linux 32 bits et en 64 bits.
(module disponible en option)
Connecteur natif SAP 64 bits
Le connecteur natif à SAP est disponible en mode 32 bits et 64 bits.
Connecteur natif (Accès natif) : Formule pour les valeurs par défaut
La description d'une base de données utilisée à travers un accès natif (connecteur natif) peut maintenant utiliser des rubriques initialisées à l'aide de code SQL (voir nouveauté 124).
Version minimum requise
  • Version 21
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire