Bonjour, Sous windev, j'ai toujours travaillé avec des vues. C'était très rapide et surtout très souple à créer. Avec mon passage à la V27, je dois adapter quelques applis pour transformer des vues "paramétrables" en requêtes. ////// VOILA UN EXEMPLE DE MON CODE POUR CREER DES VUES /////// Dans ce code, les différents critères d'extraction des données (Param_1,etc..) sont optionnels (au choix de l'utilisateur) S'ils sont à VRAI ou renseignés, ils sont intégrés au filtre d'extraction, sinon, on n'en tient pas compte du tout. //-------------- //--- VARIABLES //-------------- xFiltre est une chaine = "" NB_ITEMS est un entier = 0 //------------------------------------------------ //--- SELECTION DE LA RUBRIQUE DE TRI POUR LA VUE //------------------------------------------------ SELON SELECTEUR_Rubrique CAS 1 : xTRi = "RUB1" CAS 2 : xTRi = "RUB2" FIN //----------------------------------- //--- CREATION DU FILTRE POUR LA VUE //----------------------------------- //--- AMORCE DU FILTRE = TOUS LES ENREGISTREMENTS xFiltre = "V_ID>0" //--- AJOUT DES CRITERES AU FILTRE, SI ILS SONT SELECTIONNES SI Param_1 = Vrai ALORS xFiltre+=" et V_CHAMP1=''" SI Param_2 <> "" ALORS xFiltre+=" et V_CHAMP2=''" SI Param_2 > 0 ALORS xFiltre+=" et V_CHAMP3=''" SI Param_4 = Vrai ALORS xFiltre+=" et V_CHAMP4=''" //--- CREATION DE LA VUE HcreeVue(MaVue,MonFichierHF,"*",xTRi,xFiltre) Je souhaite reproduire la même chose avec le requêtage. Je sais construire une requête paramétrée avec l'éditeur de requête ou une requête SQL Est-ce que c'est possible ? Quelle technique sera la meilleure : Souplesse, rapidité d'extraction des données ?
Bonjour, Une solution est d'utiliser ChaineConstruit associé à HExécuteRequêteSQL. Un truc du style Code (Windev): REQ_MaRequête est Source de données saCodeMaRequête est chaine saFiltre est chaine saTri est chaine saCode=[ SELECT * FROM MaTable WHERE %1 ORDER BY %2 ] SELON SELECTEUR_Rubrique CAS 1 : saTRi = "RUB1" CAS 2 : saTRi = "RUB2" FIN //Idem pour la condition saCodeMaRequête=Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(saCodeMarequête,saFiltre,saTri) Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!(REQ_MaRequête,saCodeMaRequête Note la coloration syntaxique m'a boufé des caractères dans le code de la requête: En ligne 2 il faut lire * et lire "%1" au lieu de "1"
Merci encore une fois... Donc, la solution consiste à passer par une Requête SQL. On écrit d'abord sa requête SQL en tant que chaine de caractères et on l'envoie ensuite avec le HexecuteRequete Je ne comprends vraiment pas cette sale habitude qu'on les développeurs d'outils de développement ou de langages de prog, de régresser ainsi. Je viens de recoder toute une appli "VUES" en "REQUETES", et on ne gagne vraiment pas au change. Le gain en vitesse est ridicule, la perte en souplesse pour l'utilisateur final est importante. Bonne journée en France
Je viens de tester les 3 méthodes d'extraction de données sur environ 6000 enregistrements en windev 27 Avec une VUE "à l'ancienne" , j'ai un temps de latence d'affichage des images dans la liste image d'environ 7 secondes Avec une Requete SQL (celle que tu m'as suggéré), le temps de latence d'affichage est toujours là mais tombe à 5 secondes Avec une requête paramétrée, il n'y a aucun temps de latence à l'affichage mais la construction de la requête est plus restrictive
C'est logique, la règle numéro 1 est de toujours récupérer uniquement ce dont on a besoin. 6000 enregistrement en même temps je ne pense pas que tu puisses tous les afficher en même temps.