12 questions pour valider le niveau 2 avec Yacine, développeur WinDev dans une PME de négoce de matériel électrique à Oran : HFSQL, requêtes SQL, états et reporting, parcours d'enregistrements et événements WLangage.
Répondez à tout, puis cliquez sur Corriger : score et explications s'affichent.
2 · Rappel
1. Quelle est la différence entre HFSQL Classic et HFSQL Client/Serveur ?
Classic stocke les données dans des fichiers sur disque local ou partage réseau (monoposte/petit réseau) ; Client/Serveur installe un vrai serveur qui traite les requêtes (multi-utilisateurs, volumes, sécurité, accès distants).
2 · Application
2. Yacine doit accélérer les recherches de produits par CodeProduit. Quelle est l'action la plus rentable ?
Indexer une rubrique fréquemment recherchée est l'optimisation la plus rentable : l'index accélère fortement recherches et tris sur cette rubrique.
2 · Rappel
3. Dans une requête SQL, à quoi sert la clause WHERE ?
WHERE applique les conditions de filtrage : on ne garde que certaines lignes. Posée côté base, elle laisse le moteur utiliser ses index et ne transmettre que l'utile.
2 · Application
4. Yacine veut afficher le nom du client à côté de chaque commande. Quel élément de la requête utilise-t-il ?
La jointure combine plusieurs fichiers liés : elle est indispensable pour afficher le nom du client à côté de sa commande au lieu de son seul identifiant.
2 · Arbitrage
5. Yacine hésite entre tout ramener puis trier en WLangage, ou filtrer dans la requête. Que privilégie-t-il ?
Le filtrage côté base est infiniment plus rapide : le moteur utilise ses index et ne transmet que l'utile, alors que tout ramener sature réseau et mémoire pour jeter la majorité des lignes.
2 · Rappel
6. Dans un état, que contient le bloc « corps » ?
Le bloc corps se répète pour CHAQUE enregistrement : c'est le cœur de l'état. Le début de document s'imprime une fois, le haut et le bas de page à chaque page.
2 · Application
7. Yacine veut des sous-totaux par client dans sa facture récapitulative. Comment procède-t-il ?
Les ruptures sont le mécanisme du reporting : un regroupement par client crée un bloc de début et un bloc de fin de rupture où se placent les sous-totaux — à condition que les données soient triées sur cette rubrique.
2 · Arbitrage
8. Pour produire des totaux fiables dans un état, quelle est la meilleure pratique ?
La bonne pratique est de préparer les données via une requête (filtrée, triée) plutôt que de multiplier les calculs dans l'état : l'état devient plus simple, plus fiable et plus réutilisable.
2 · Rappel
9. Quelle boucle WLangage parcourt automatiquement tous les enregistrements et gère la fin du parcours ?
La boucle POUR TOUT est la forme moderne et recommandée : concise, lisible, elle parcourt tous les enregistrements et gère automatiquement la fin du parcours.
2 · Application
10. Yacine affiche son catalogue (des milliers de références) à l'écran. Quel type de table privilégie-t-il ?
Pour des données venant de la base et de gros volumes, la table fichier liée à un fichier ou une requête se remplit automatiquement et ne charge que les lignes affichées : c'est le mode à privilégier en gestion.
2 · Rappel
11. Dans quel traitement d'une fenêtre WinDev charge-t-on les données et prépare-t-on l'écran ?
L'initialisation s'exécute à l'ouverture de la fenêtre : c'est là qu'on charge les données et prépare l'écran. Les déclarations globales ne font que déclarer les variables communes.
2 · Application
12. Yacine veut contrôler immédiatement la quantité saisie dans un champ de commande. Où place-t-il ce contrôle ?
Le contrôle de saisie se place dans la sortie du champ concerné : l'utilisateur obtient un retour immédiat en quittant le champ, plutôt que d'attendre le clic du bouton Valider.
Et après ?
Score ≥ 80 % : passez au Niveau 3 — procédures, collections, POO et gestion des erreurs avec Yacine.
Score entre 50 % et 80 % : reprenez la ou les sections ratées (2.1 HFSQL, 2.2 requêtes & SQL, 2.3 états, 2.4 parcours & tables, 2.5 événements), relisez le cours, puis refaites le test.
Score < 50 % : relisez tout le niveau 2 en appliquant chaque défi 48h (indexer une rubrique, écrire une requête paramétrée, éditer un état avec ruptures, parcourir en POUR TOUT, placer un contrôle en sortie de champ) avant de retenter.
Et après ? Gardez le socle HFSQL, les requêtes paramétrées, les états et les parcours de Yacine : le niveau 3 les branche sur les procédures, les collections et la POO en WLangage.