-1- WinDev, quoi qu'est-ce donc ?

PC SOFT WinDev est ce qu'on appelle un Atelier de Génie logiciel (AGL). Alors que certains environnements ne proposent qu'une interface graphique pilotant un simple compilateur, avec WinDev vous avez un gros logiciel permettant d'assurer la conception d'un logiciel de A à Z :

  • L'étude : des outils MERISE (MCD ET MLD) ET UML (diagrammes de classes, statecharts, de collaboration, etc), de quoi générer les bases et le code via les diagrammes, ainsi que l'ingénierie inverse, comme par exemple : reconstruire un diagramme de classes à partir du code.
    En plus de cela, l'accès aux bases de données est simplifié grace aux accès natifs (ou non) à une grande partie des bases de données actuelles (Access, Oracle, etc).
  • La réalisation via des RAD : des assistants puissants et faciles à utiliser pour réaliser des IHM, des requêtes, des états, des services Web, etc.
    WinDev bénéficie aussi d'une important collection de procédure : on a tout sous la main. Le revers de la médaille est que si l'on ne trouve pas son bonheur, on est facilement bloqué et contraint à utiliser une solution peu élégante.
    A noter que l'aide est relativement complète et de bonne qualité, même s'il manque parfois des détails assez importants.
  • Le déploiement : la gestion des tests et la création de paquetages d'installation automatisée. Selon le code utilisé, il est possible de générer - en plus d'une application binaire Windows - du Java (1.4), du DotNET (2.0), et éventuellement des binaires Linux, même si cela est TRES limité (en terme de fonctionnalités supportés dans ces langages, on ne peut pas faire grand chose, par exemple point de sockets).
Vous trouverez quelques infos sur Wikipedia : fr.wikipedia.org/wiki/Windev (ici l'avis reste objectif), mais aussi sur le site de PC Soft : www.pcsoft.fr (là on croule sous la publicité ultra-agressive un brin malhonnête).

-2- Pourquoi passer à WinDev ?

WinDev est une excellente solution pour développer rapidement des applications de gestion de données. En plus d'être rapide, la conception et le déploiement de bases de données est un jeu d'enfant. Le RAD permet de concevoir facilement des vues sur fichiers, des états, etc.

Bref, via une formation très courte, WinDev permet un développement rapide et complet, de quoi booster la réactivité de votre service ou entreprise.

-3- Différences à vue d'œil entre les versions 10 et 11, laquelle choisir ?

A vrai dire, si je devais conseiller une version, j'opterai pour la 10, pour les mêmes raisons qui me pousseraient à conseiller Windows XP plutôt que Windows Vista :

  • WinDev 11 apporte de nouveaux looks, dont les fenêtres transparentes même sous XP.
    Le soucis est que cela demande une machine puissante, un peu trop même lorsqu'il sagit d'une simple application bureautique.
  • Windev 11 est assez stable, Windev 10 l'est tout autant, voire (beaucoup !) plus. A vrai dire ils sont tous les deux instables !
  • Windev 11 propose de nouveaux champs tels que le carrousel. C'est bien, mais cela vaut-il vraiment le coup ?
  • Windev 11 et 10 occupent à peu près la même place sur un disque dur : match nul.
Bref, avec Windev 11 - même s'il apporte 111 nouvelles fonctions - on se rend vite compte à quel point on était bien sous Windev 10.
D'autant qu'un projet Windev 11 n'est pas réutilisable en version 10. Faites donc attention si vous migrez un projet de Windev 10 vers 11 : pensez à la sauvegarde !

-4- WinDev & W-Langage contre Java, NetBeans, Eclipse

Comparons WinDev 11 avec un ensemble d'outils Java comme par exemple NetBeans et Eclipse (que nous abrègerons en N&E) :
  • L'outil, l'installation, la compilation et le coté multi-plate-forme :

    • WinDev propose une solution tout en un. N&E ont besoin de plugins pour en faire autant. Avantage WinDev.
    • WinDev ne s'installe que sous Windows. N&E sont multi-plate-forme : ils s'installent sous Windows, Linux, BSD, etc. Avantage N&E.
    • WinDev génère du code pour Windows. On va oublier les compilations pour Linux, Java et DotNET tellement elles sont lamentables. N&E, de par le code Java, sont multi-plate-forme. Avantage N&E.
    • WinDev prend très bien charge les pockets PC et autres PDA, et aucune compétence supplémentaire n'est demandée. N&E ont besoin de packs additionnels et cela reste compliqué. Avantage WinDev.
    • WinDev est disponible en plusieurs langues, et la gestion des langues est simplifié, quoi que peu flexible. N&E ne sont pas aussi simples, à défaut d'être plus puissants. Avantage WinDev sur la simplicité, et N&E sur les possibilités.
    • WinDev n'est pas extensible, il faut se contenter du gros pack. N&E sont réputés pour leur nombre considérable d'extensions, en plus de la facilité d'en concevoir. Avantage N&E.
    • WinDev propose directement un support de l'analyse UML et Merise. N&E le font pas nativement. Avantage WinDev.
    • WinDev, jusqu'à sa version 11, ne génère pas du code machine, ce dernier est interprété par le framework WinDev. Java fait pareil, mais propose un compilateur JIT (Just In Time). Avantage Java (note pour plus tard : WinDev 12 semble être parti pour proposer lui aussi un compilateur JIT).
    • WinDev embarque depuis longtemps une base de données disponible aussi bien en local qu'en client-serveur : HyperFile. Cette dernière a le mérite d'être simple à déployer (en local : il n'y a absolument rien de spécial à faire) et à utiliser. Elle est maintenant reconnue et suffisamment efficace pour être utilisée en production. Bien que les performances n'atteignent pas les chiffres vantés dans les publicités, et que HyperFile cohabite très mal avec certains antivirus un peu trop portés sur le scan à l'accès (comme Norton Antivirus), c'est un bon moteur de base de données. La concurrence propose aussi ce genre de base de données embarquée, tels Borland avec son BlackFishTM SQL ou Java avec JavaDB, mais WinDev reste un exemple en la matière. Avantage WinDev.
  • Le cout et le temps de formation :

    • WinDev n'est pas un outil gratuit, loin de là. Voyez les tarifs sur le site de PC Soft à www.pcsoft.fr/pcsoft/tarifs.htm. N&E sont gratuits, et les extensions payantes ne sont vraiment pas chères. Avantage N&E.
    • WinDev a le mérite d'être un AGL simple et extrêmement rapide à maitriser. Le manuel de formation fournit est un exemple en la matière. Bref, le cout de formation est proche du zéro, idem pour le temps de formation. Coté N&B et Java, ça se gate ! Net avantage WinDev.
    • WinDev est une technologie très abordable et rapidement opérationnelle : l'initiation ne demande que peu de pré-requis, et on arrive très vite à un niveau acceptable; sans aucun doute grâce à l'excellent manuel d'auto-formation. Java ,lui, n'est pas aussi simple. Avantage WinDev.
    • Dans les publicité de PC Soft sur WinDev, on nous montre des applications aux graphismes époustouflants. On nous certifie aussi que ces logiciels ont été réalisés rapidement. Notez que ce genre de performance fait appel à des experts WinDev : un novice n'a strictement aucune chance d'arriver à un tel résultat aussi vite ! C'est ce qui nous amène à penser que des experts Java (ou DotNET, etc) en feraient autant. Match nul sur les possibilités, et carton jaune pour WinDev à propos de sa publicité ultra-agressive.
  • La communauté, les livres :

    • WinDev étant moins utilisé que Java, on trouve beaucoup plus de livres, de tutoriels, de certifications, de forums et de documentations sur Java et ses outils. Avantage N&E.
  • La puissance du langage :

    • Le langage de WinDev, le W-Langage, est appelé par PC Soft langage de cinquième génration : L5G. Java est un simple langage orienté objet. Avantage WinDev pour le nom plus fun ? Regardez la suite pour découvrir ce qu'est ce fameux L5G.
      On entre donc dans la comparaison L5G VS Java :
    • Le L5G est peut être utilisé en français et en anglais. Java reste en anglais. Avantage WinDev.
    • Le L5G ne connait pas la surcharge de fonctions ou de méthodes, et ça fait tache (on ne peut que redéfinir les procédures fournies avec WinDev, c'est tout). Java connait la surcharge. Avantage Java.
    • Le L5G propose un modèle objet extrêmement limité. Java l'écrase. Avantage Java.
    • Le L5G propose des opérateurs logiques pas très logiques : les opérateurs classiques ET, OU, etc, ne connaissent pas par défaut l'évaluation paresseuse (il faut utiliser _ET_, _OU_, etc). Java se porte mieux. Avantage Java.
    • Le L5G propose de nombreux opérateurs tels que POUR TOUT, AVEC, DANS, etc. Java en connait un peu moins. Avantage WinDev.
    • Le L5G ne connait pas de véritable syntaxe de documentation. On a droit à quelques informations basiques pour les procédures et objets, et c'est tout. Java connait par exemple la puissante syntaxe JavaDoc. Avantage Java.
    • WinDev n'utilise pas assez l'objet, à vrai dire le seul endroit où vous en verrez, c'est dans votre code via les classes que vous aurez créé. Ainsi, tout n'est pas objet : impossible de passer facilement une fenêtre à une autre, etc. A vrai dire, il est un peu mensonger de dire que WinDev connait l'objet tellement son implémentation est limitée. Java, lui, a l'énorme avantage de tout voir comme étant des objets, et de travailler avec de véritables objets : interfaces, classes abstraites, etc. Net avantage Java.
    • Les fichiers de code de WinDev ne sont visibles qu'avec WinDev : ce ne sont pas des fichiers textes ! Les codes source Java sont réutilisables avec n'importe quel éditeur. Gros avantage pour Java.
  • Le travail en équipe :

    • WinDev propose le travail en équipe via Groupware ou via l'outil GDS, certes faciles à utiliser mais hélas trop limités et sujets à quelques bugs assez embarrassants (et dramatiques si aucune sauvegarde n'est faite). N&E proposent au moins CVS et Subversions, deux outils reconnu pour leur efficacité et stabilité. Avantage N&E pour les fonctionnalités.
    • Le GDS est installé avec WinDev, son utilisation est intuitive, et il est très simple à configurer : en 2 minutes le tour est joué. On ne peut pas en dire autant de CVS ou de Subversion. Avantage WinDev pour la simplicité.
  • Le RAD :

    • WinDev est très doué pour générer des fiches et états sur des fichiers de bases de données, des requêtes. Il n'y a donc pas d'aide ou d'assistant, de framework chez WinDev. Tout est intégré dans WinDev. N&E ne proposent pas telle simplicité. Avantage WinDev.
    • WinDev, hélas, ne connait pas le MVC : Modèle Vue Contrôleur, qui a pour principal but de bien séparer le modèle des données. N&E, grâce à Java, permet de très bien implémenter ce principe. Avantage N&E.
  • La réutilisabilité :

    • WinDev propose la gestion de composants, des caisses à outils réutilisables dans toute application WinDev de même version ou supérieure. Bref, le seul hic : impossible d'utiliser un composant à la manière d'une DLL. Java a la même limitation, mais pas d'autres langages (C, C++, etc). On dira match nul.
    • WinDev, même s'il l'appelle autrement, connait le refactoring. Ce dernier peut être appelé automatiquement. Il a le mérite d'être simple d'utilisation, mais reste trop léger et peu personnalisable. Le refactoring de N&E est bien plus puissant, entièrement contrôlable, tout en restant simple d'utilisation. Avantage N&E.
  • La sécurité et l'ouverture :

    • Les applications développées avec WinDev contiennent-elles nativement des failles de sécurité ? Il est pour l'instant impossible de le savoir. C'est un plus dans le sens où le code WinDev n'est pas répandu, mais on en vient vite au soucis suivant : la sécurité des applications WinDev dépendent directement de WinDev, on ne peut le contrôler et le corriger. Java, lui, a l'avantage d'être reconnu pour son soucis de sécurité. Avantage Java.
    • Les applications WinDev se basent sur un jeu de librairies fournies avec WinDev, que ce soit du code Win32, du Linux, Java ou DotNET. Le code est totalement fermé. De son coté, Java est une technologie ouverte, on connait le code source des SDK de SUN, on peut l'étudier et le corriger si besoin est. Avantage Java.
    • WinDev, dans son soucis de simplicité, propose des procédure de cryptage rapides à mettre en Å“uvre. A vrai dire, coder un flux de données avec divers algorithmes (reconnus et proposés par WinDev) est un jeu d'enfant. Java met aussi ce genre de fonctions à votre disposition, mais sur le plan de la simplicité, WinDev est un cran au dessus. Avantage WinDev.
Bref, WinDev est un outil simple d'utilisation - un peu trop parfois, vite opérationnel, prenant bien en charge les projets, mais hélas un brun léger sur le plan des fonctionnalités, de la stabilité (je n'ai jamais vu un outil de développement planter autant de fois que WinDev) et de la portabilité. Notez aussi qu'une fois sous WinDev, vous y êtes pour de bon et vous dépendez en quelque sorte du bon-vouloir de PC Soft.
Mon conseil : si vous avez du personnel qualifié et efficace en Java, DotNET, C/C++ ou autres technologies de pointe alors oubliez vite WinDev, sinon foncez voir PC Soft !

-5- Retour d'expérience : 6 mois de WinDev

  • 3 mois de stage sous WinDev 10 : l'apprentissage

    Ca va être expéditif : après une semaine devant le manuel d'auto-formation, on m'a confié la réalisation d'un composant planning. Ce fut une réussite malgré des maladresses dans mon style de codage, et la méconnaissance de certaines fonctions intégrées à WinDev (comme le Drag&Drop). Ont suivis migration d'applications, importations de données, composants, etc, le tout s'étant assez bien passé si l'on oublie la découverte de bugs dans les procédures WinDev, ainsi que quelques limitations gênantes. Mon stage se termina par la réalisation d'un logiciel de sauvegardes de masse. J'ai fait un premier essai en utilisant les procédure de gestion du format ZIP de WinDev, mais ce fut un lamentable échec. Je me suis donc tourné vers le pilotage d'un logiciel externe d'archivage : 7Zip, une merveille.

  • 3 mois de travail sous WinDev 11 : la pratique

    Je placerai ces 3 mois de travail sous le signe des Web Services, ce que j'ai le plus apprécié. Mais commençons par le grand classique :

    • Pas mal de projets étaient gérés par Groupware, un moyen limité mais simple de travailler en équipe sur un même projet, de mêmes sources. Ayant déjà utilisé le GDS, nous avons tenté la migrations Groupware vers GDS, opération normalement simple et rapide.
      Bilan : une catastrophe : impossible de travailler à plusieurs, cela s'est conclut par l'impossibilité de manipuler le projet. Par chance, nous avions procédé à une sauvegarde brute des projets, ce qui a permis de tout restaurer, sans quoi tout le travail aurait été définitivement perdu.
    • Une impression : WinDev 10 plantait un peu, mais là WinDev 11 c'est une catastrophe !
    • Je ne comprends pas WinDev : quelle configuration matérielle faut-il pour s'en servir correctement ? Je disposait d'un processeur à environ 2 GHz et de 1 GB de RAM, mais la chose restait incroyablement lente au démarrage, à la compilation, etc. Peut être une carte graphique ?
    • Je découvre certaines procédures très bien réalisées qui facilitent la vie du programmeur : le Drag&Drop est un jeu d'enfant, de même que les transactions et la création de requêtes (il faut être honnête : l'assistant est quand même génial).

    Concernant les Web Services :

    • WinDev propose d'excellents assistants pour la création de Web Services, que ce soit côté Client ou Serveur.

    Enfin, quelques petites impressions à chaud tirées de mon journal de bord :

    • Mercredi 11 juillet
      Jour ++. Le bonheur est dans le clavier.

      9h-18h : Pas de gros plantage à l'horizon, juste 6 ou 7 redémarrages de WinDev, sans quoi il m'envoyait balader. Je note aussi un merdier sympa : je travaille une bonne heure sur une fenêtre dont le nom est du genre « Fiche_NomDuFichier », et voilà que m'sieur WinDev me dit que la fenêtre a été renommée en «  Fiche_NomDuFichier1 », et pas moyen de retrouver l'ancienne version. J'accepte le nouveau puis le renomme convenablement. Sympa, non ?
      A part ces petits tracas, tout est beau au pays de PC-SOFT :) Le développement avance, et c'est bien.

    • Jeudi 12 juillet
      Panne dépannée et WinDev dans tous ses états.

      9h-16h : Pas grand chose à dire, la petite routine quoi. Ha si, moins de plantages, mais pourquoi ?! On apprend à manipuler les ancrages et redimenssionnements de champs histoire d'avoir des interfaces très soignées, et là il faut l'avouer : c'est un jeu d'enfant, quatre options font presque tout le travail.
      On apprend aussi à éviter une panne sous WinDev : en Groupware, les éléments du projets qui sont ouverts (par un développeur) sont présents dans le dossier « groupware ». Or, il arrive qu'un élément, après avoir été édité et réintégré, ne quitte pas ce dossier. Le fichier correspondant avant édition occupant l'espace magique de 1KB (celui dans le dossier « groupware » : beaucoup plus). Pour s'en sortir, la manipulation est simple : on quitte tous WinDev, on supprimer l'élément se trouvant dans le dossier racine du projet, et on le remplace par celui situé dans le dossier « groupware » . On vide le dossier « groupware ». It's magic !
      16h-18h : WinDev facilite énormément la conception d'états (documents à imprimer, reliés à des données). Très sympa et puissant, bien que pas toujours évident.

    • Vendredi 13 juillet
      Tiroirs qui déménagent et images.

      9h-18 : On découvre le champ « tiroir » : vous savez, le menu déroulant que l'on trouve un peu partout dans Windows XP, sur la gauche. Ce champ se comporte bien s'il n'est pas ancré en hauteur par rapport à la fenêtre, sinon son rabattement provoque un redimensionnement de la fenêtre ! Imaginez le cas où le « tiroir » une fois déroulé est aussi haut que la fenêtre : la réduction du « tiroir » rabat toute la fenêtre, au point de masquer les boutons systèmes (fermer, restaurer et réduire). On note aussi des bugs graphiques (éléments qui disparaissent pour ne jamais refaire surface). A par ça, c'est sympa. Effet « Vendredi 13 » ?
      Afficher des images dans un champ avec WinDev ? Rien de plus facile : prenez un champ  « image » et affectez lui l'adresse d'une image (bitmap, PNG, JPEG, GIF, aucune importance !), et c'est tout ! J'adore.
      Sinon, un écho sur la découverte de l'interface de Microsoft Office 2007 : « POUAH », ben oui.

    • Du 9 au 13 juillet, mon bilan de la semaine
      "Grunt !", qu'il disait derrière.

      Si l'on oublie le démarrage difficile, les quelques bugs et autres créatures fantastiques, WinDev 11 est un environnement facile à prendre en main, et la transition entre les versions 10 et 11 ne pose absolument aucun problème (à vrai dire, je préfère encore un peu WinDev 10).
      Il me tarde de maîtriser davantage cet AGL, et surtout de programmer « 10 fois plus vite » (c'est marqué sur la boîte, si si, bien que logiquement, pour cette version ça devrait être « 11 fois plus vite ») !

    • Mardi 17 juillet
      Une boule de feu et on n'en parle plus.

      9h-17h : J'oublie de vous faire part d'un petit conseil : si vous développez une application WinDev avec le modèle Client/Serveur, vous avez tout intérêt à privilégier les « hLitRecherche » plutôt que les « hRecherche ». Le deuxième permet de trouver un élément dans une base de données sans pour autant charger en mémoire les informations du tuple (tuple : enregistrement dans une table), le premier charge le tuple (perte de temps si vous n'avez pas besoin de lire le contenu du tuple). Pourquoi ? Et bien parce qu'on a constaté des soucis avec le « hRecherche » en Client/Serveur, et pas avec le « hLitRecherche ». Rien à signaler en local. A part ça, ça code sec.

    • Mercredi 18 juillet
      SI hTrouve() ALORS trace("yes!!") SINON trace("rhaaaa!!") FIN.

      9h-18h : Petite information : peut être avez-vous essayé de générer du Java, du DotNET ou encore des binaires pour Linux avec WinDev 10 ? Si tel est le cas, vous avez alors vite constaté les titanesques limitations (pas de support réseau : sockets, et j'en passe ...).
      A par ça, petit bug que je ne saurais expliquer : j'ai une base de données et une table avec une clef unique composée de deux champs « A » et « B ». Et bien j'arrive sans problème à enregistrer des doublons sur cette clef pourtant unique ! Vraiment, là je ne comprends pas.
      Point positif du jour : les fichiers INI avec WinDev, c'est trop facile !

    • Jeudi 19 juillet
      Drag & drop, préfixes.

      9h-12h : A propos des requêtes auxquelles vous passez des paramètres de sélection, sachez que vous pouvez court-circuiter ces conditions de sélection en passant la valeur « Null ». Sympa si on ne veut pas déclarer trente fois la même requête.
      14h-18 : Le drag and drop (glisser déposer) est très facile sous WinDev, une fois que vous avez compris son fonctionnement. Le drag & drop automatique n'est pas vraiment puissant et on ne trouve pas beaucoup de situations où l'utiliser. Mieux vaut passer par le drag & drop programmé. Pour ce faire, il suffit de déclarer l'élément « source », l'élément « cible », et les fonctions lancées lors des divers évènements d'un drag & drop, comme le début du « glisser », le survol d'un champ, la fin du « déposer », etc.
      Enfin, chose très appréciable, toutes les fonctions WinDev sont correctement préfixées. Par exemple, tout ce qui touche au drag & drop commence par « dnd », la gestion des fichiers HyperFile donne lieu à des fonctions commençant par « h », les fichiers par « f », etc.

    • Lundi 23 juillet
      Combos.

      9h-18h : A vouloir faire trop simple, on en arrive à sacrifier (ou oublier ?) des fonctionnalités pourtant basiques. Sous Clarion, nous pouvions avoir une colonne de type Combo (« Combo List », une petite liste déroulante) dans une table, et le contenu de cette Combo pouvait être modifié sans pour autant affecter le reste de la colonne. Et bien sachez que ce n'est pas le cas sous WinDev ! Du moins pour les Combos en affichage simple. Pour avoir un comportement sympa, on est obligé de passer par une Combo en saisie, et de programmer quelques-unes de ses réactions.
      WinDev c'est sympa, super-pratique, mais des fois ... ça énerve ! Enfin bon, on est quand même bien content de l'avoir.

    • Mardi 24 juillet
      {sNomChamp}.EtatInitial=Actif.

      9h-18h : Un petit rappel sous WinDev; vous pouvez construire dynamiquement le nom d'un champ, quel qu'il soit. On utilise l'opérateur d'indirection (les accolades ouvrantes et fermantes). Très utile parfois, par exemple pour rendre un bout de code un peu plus générique.

    • Mercredi 25 juillet
      La mise à jour attitude.

      9h-18h : Ce que je retiendrai de cette journée ? Les mises à jour pour WinDev ont beau être volumineuses, elles ont le mérite d'apporter de réelles améliorations. Ça ne se résume pas à quelques simples corrections de bugs et optimisations, choses souvent en abondance chez la concurrence, mais totalement invisibles lors de l'utilisation du logiciel.
      Cette fois ci la mise à jour s'est faite via un DVD de la LST (Lettre du Support Technique de PC-Soft), média sur lequel on retrouve en plus des mises à jour, des exemples de codes, des vidéos, etc. Nous avons noté ici de très agréables améliorations sur la gestion des « règles » (ensembles de consignes à respecter sur les éléments qu'elle visent). On retient aussi que le champ « Carrousel » voit sa compatibilité améliorée (il avait besoin du « Framework Microsoft .NET 3.0 »).

    • Jeudi 26 juillet
      W-Langage, SQL, français, etc.

      9h-18h : On commence avec un bon point, à savoir les requêtes sur les bases de données. On a l'habitude d'utiliser le langage SQL, standard facile à maîtriser. Sachez que WinDev, en plus de supporter SQL dans ses requêtes, propose aussi la rédaction de requêtes en bon vieux français. Sympa, non ?
      Le mauvais point du jour : le W-Langage (langage de programmation proposé par WinDev) a beau être un « langage de cinquième génération » (L5G, enfin ... d'après PC-Soft), il reste extrêmement limité ! Exemple : point de surcharge d'opérateur; le polymorphisme semble très limité; le symbole « = » joue tantôt le rôle d'affectation, tantôt de comparaison;  etc. C'est bien dommage, même si c'est assez bien compensé par la très riche bibliothèque de procédure (fonctions, par contre n'espérez pas voir le moindre objet dans cette bibliothèque).

    • Lundi 30 juillet
      Filtre et jointure, gros problème.

      9h-18h : Une fonction sympa : le filtre. Un filtre permet de ne regarder qu'une portion du résultat d'une requête ou d'un fichier. Utile pour ne pas avoir à effectuer des recherches sur 14 000 000 enregistrements alors que seulement 1 000 vous intéresse !
      Seul soucis, nous ne sommes, pour l'instant, pas parvenu à appliquer un filtre sur une requête avec jointure.
      C'est d'autant plus dommage que le composant que j'ai réalisé est un véritable éditeur de filtres : vous voulez appliquer un filtre sur la vue d'un fichier ou une requête, avec un simple « glisser – déposer » vous sélectionnez les colonnes à conditionner, les conditions, les valeurs, et hop par ici la condition SQL à mettre dans le filtre. Alors si le filtre ne marche pas sur les jointures ... tout tombe à l'eau !

    • Mardi 30 juillet
      Rédaction de documentation, commentaires. Fichiers binaires.

      9h-18h : Une chose qui me déplaît chez WinDev, la rédaction des commentaires et accessoirement de la documentation.
      Là où la plupart des langages permettent les commentaires multi-lignes (« /* .... */ »), WinDev n'autorise que les commentaires mono-ligne (« // »).
      Là où beaucoup de langages disposent  de bons outils de documentation de code, comme la JavaDoc (une merveille), WinDev se cantonne  à quelques commentaires basiques : rien de puissant (description du rôle de la procédure, rapide description des paramètres et du type de retour, et c'est tout; même pas de système de tags, de références, de mise en forme, etc), et c'est vite agaçant lorsque l'on a déjà touché à des outils évolués.

    • Mercredi 1 août
      Filtre : avant ou après une requête ? Et la rubrique de parcours ?

      9h-18h : Un filtre permet de ne pas travailler sur l'intégralité d'un fichier ou d'une requête, mais à quel moment l'appliquer : avant ou après l'affichage du fichier ou l'exécution de la requête ? Les deux solutions semblent logiques, mais sachez qu'un filtre s'applique après avoir ouvert un fichier de base de données ou exécuté une requête. On filtre que le résultat.
      Autre soucis sur les filtres : il est possible de leur spécifier la rubrique de parcours, mais cela est optionnel. La « rubrique de parcours » est la rubrique du fichier de base de données qui sera utilisé pour parcourir le fichier, du premier eu dernier. Sachez que pour appliquer un filtre dans une fenêtre, il n'est pas nécessaire de spécifier la rubrique de parcours, mais il faut absolument le faire s'il sagit d'un état, sans quoi – si la condition du filtre n'agit pas sur une rubrique « clef » – le filtre sera ignoré ! Voilà un détail très important mais pas forcément évident.

    • Jeudi 2 août
      Mise en page : ancrages, que du bonheur.

      9h-18h : Certains environnements de programmation, lorsqu'ils offrent un éditeur d'interfaces graphiques, ne proposent pas de système évolué de mise en page (sur les ancrages), tandis que d'autres sont très complexes et peu intuitifs. Sur ce point, WinDev m'a vraiment étonné : avec un système d'ancrage automatique mais personnalisable et simple tout en restant puissant, on ne perd plus de temps à se demander comment rendre une fenêtre agréable. Des ancrages automatiques et visibles sont proposés lorsque l'on bouge les champs, et il est possible de joueur sur quatre valeurs : deux pour l'étirement des champs, et deux autres pour leur positionnement. C'est extrêmement simple et le résultat est là.
      Vraiment, WinDev est un champion de la mise en forme, et peu d'environnements lui arrivent à la cheville (je pense aux éditeurs d'IHM de  Visual Studio, Eclipse, NetBeans qui utilise Matisse : ultra-complet mais pas assez intuitif, Borland, etc).

    • Vendredi 3 août
      Requêtes et paramètres optionnels.

      9h-18h : Les requêtes créées sous WinDev acceptent des paramètres permettant de joueur sur leur clause «WHERE» (la partie condition). Et bien sachez qu'il est possible de cour-circuiter (ignorer) des paramètres en leur passant la valeur « Null ». Exemple avec une requête renvoyant tantôt les tuples dont la date est vide, tantôt les tuples où la date est renseignée, la partie condition ressemble à :
      « laRubriqueDate = {paramDate1} ET laRubriqueDate <> {paramDate2} », où le symbole « <> » signifie « différent de ». Pour avoir les tuples de date vide, on met le paramètre 2 à Null, et le paramètre 1 à « chaine vide ». Pour avoir les tuples de date non vide, on inverse !

Conclusion :

LE PLUS : WinDev 11 (ou 10) est un outil extraordinaire dans le sens où il permet à tout informaticien non expérimenté de développer rapidement une application qui fonctionne.
LE MOINS : Ce qui me gène, ce sont les limitations et surtout la publicité qui, en plus d'être ultra-agressive, est mensongère.

C'est ainsi que je garde WinDev sous le coude car il me permettra surement de trouver du travail, mais j'avoue voir mon avenir dans des technologies telles que Java, DotNET ou encore CAML.

Ou pas ;)