Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

WinDev 21 : La gestion des bases de données HFSQL

Coder à l'aide des procédures stockées

Testez gratuitement nos 1340 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Vous allez vous intéresser à un peu de codage. Il s'agit de créer un exemple simple de procédure stockée.
06:29

Transcription

Nous allons donc maintenant créer notre procédure stockée. Alors pour faire ça, il faut aller ici dans l'Analyse à droite dans la partie Procédures stockées faire un Clic droit et créer une nouvelle collection de procédures stockées. Donc ça c'est un fichier tout simplement qui va contenir les différentes procédures. On va l'enregistrer, donc il compte l'appeler Collection_Mon_Projet_procédures_stockées ça me va bien pour la démo. Maintenant qu'il est enregistré, je vais pouvoir créer donc à l'intérieur une nouvelle procédure globale. Cette procédure donc sera présente sur le serveur de base de données pour être exécutée depuis le client. Je vais l'appeler par exemple Calcule_Moyenne alors c'est un exemple comme un autre, on va calculer la moyenne des commandes. L'idée, encore une fois, c'est de faire des calculs qui à priori pourraient se faire depuis le client, bien entendu, mais seraient peut-être un petit peu long, ou pourraient générer du traffic sur le réseau, etc. Évidement ce genre de chose on peut aussi le faire avec une requête SQL la question n'est pas là. C'est un exemple de comment fonctionne une procédure stockée sur le serveur et qui fait tout un tas de calculs un petit peu compliqués ou longs sur les données. Alors je vais enlever les commentaires pour simplifier l'affichage de l'écran ici, Contrôle + w, voilà on va donc calculer cette moyenne en d'abord passant quelques paramètres à la procédure donc à priori ça serait intéressant de lui passer le numéro de client, tout simplement. Et à partir de ce numéro de client on fera le calcul nécessaire. Donc on va prévoir un paramètre qui va s'appeler NumClient de type entier, je crois que c'est un entier mais il faut faire attention parce que là en l'occurrence, c'est un champ qui sert de clé et il doit être sur 8 octets je pense, donc il vaut mieux lui donner la même taille. Sinon ça risque de poser des problèmes de conversion enfin il y a toujours moyen de passer outre mais ça évite les problèmes plus tard. Donc ensuite on va définir une variable qui va contenir le total, Et puis là [...] après donc là on va faire quelque chose qui va s'appeler TotalCommande est un monétaire puisqu'à priori c'est plutôt de la monnaie, donc là on a des variables soulignées parce qu'évidemment, elles ne sont pas utilisées, puis on va faire un HLitRecherchePremier pour parcourir pour parcourir notre fichier COMMANDE. On va le parcourir sur le numéro du client, puisque c'est ce qui nous intéresse évidemment, et la valeur recherchée, ça va être donc la variable NumClient. Donc là partant du principe qu'on a trouvé le premier, on va faire une petite boucle avec un TANTQUE par exemple. donc TANTQUE HTrouve(COMMANDE) tant qu'on a trouvé une commande correspondant aux critères donc ici au numéro de client qu'on a passé en paramètre, eh bien on va totaliser donc le montant, j'ai mis un "m" en trop, le montant donc de la commande. En utilisant += donc on ajoute à la variable TotalCommande, le montant de, alors je sais pas, on va choisir un champ, on a plusieurs champs qui sont intéressants, en l'occurrence tout dépend de ce que vous cherchez, est-ce que c'est le total HT, TTC, etc. On va partir sur le hors taxe par exemple, et on va passer au client suivant donc HLitSuivant toujours sur COMMANDE, toujours sur la clé NumClient. Donc ici, arrivés à la fin de cette boucle on devrait avoir le total de la commande, qu'on peut éventuellement renvoyer, parce que c'est le but, au programme appelant. Le problème c'est que c'est pas tout à fait le total que je vais renvoyer c'est la moyenne, donc il faudrait le diviser par le nombre d'enregistrements trouvés que je n'ai pas ici, donc on va ajouter un petit compteur, on va l'appeler NbCommandes, par exemple, nombre de commandes, est un entierdonc je pense que l'arrondi ça devrait aller. Et on va l'incrémenter à chaque fois qu'on passe dans la boucle, on va le faire ici par exemple, NbCommandes++. Donc ça sert à incrémenter et bien sûr au retour je vais diviser par NbCommandes. On va faire attention à ce qu'on écrit parce que NbCommandes au début va être égal à 0 d'ailleurs on peut le préciser, c'est la valeur par défaut mais c'est bien de le préciser. Si par hasard il n'y avait pas de commande pour ce client, on va retourner à une division par 0 et ça ne marchera pas bien. Donc ici on va juste faire un petit test, Si NbCommandes = 0, dans ce cas-là on va RENVOYER 0 SINON on va renvoyer donc la moyenne. Donc ça, ça devrait fonctionner. On peut normalement tester ce genre de fonction, de procédure, en faisant un groupe tout simplement dessus. Voilà il me demande sur quelle connexion je veux la tester, parce que c'est une procédure stockée donc elle doit être sur le serveur. Bon c'est bien MaConnexion1, je clique ici sur le bouton Valider, je vais donner une valeur pour les paramètres donc NumClient, on a vu tout à l'heure en parcourant le fichier qu'il y avait par exemple un client qui avait pour numéro 100, Tester la procédure donc là il me propose d'envoyer la procédure sur le serveur pour tester, Mettre à jour ou Test, ici ça change pas grand chose, et il me renvoie donc une valeur pour laquelle je vais lui faire confiance je me suis pas amusé à vérifier mais enfin ça semble être un chiffre cohérent par rapport à ce que j'ai vu dans le fichier donc à priori ça fonctionne. Donc voilà pour le codage, il ne nous reste plus qu'à enregistrer cette procédure, et à mettre à jour l'analyse, de manière à ce qu'il envoie la procédure stockée sur le serveur, c'est ce qu'il va faire ici, notamment à ce niveau-là voyez, il va se connecter à la base de données du serveur. On va lui demander de mettre à jour le fichier COMMANDE il a dû faire des modifications dessus ne serait-ce qu'au niveau structure, donc allons-y, pas de problème, il n'y a pas de mot de passe, on continue. Voilà c'est encore des modifications, le fichier est un petit peu gros donc il fait de la manip dessus, ok on va le laisser faire. C'est terminé. Donc à priori, je le refais une deuxième fois au cas où, non c'est bon. On enregistre, voilà la procédure a dû être envoyée sur le serveur. Donc il ne nous reste maintenant plus qu'à la tester, à l'appeler depuis un programme, ce que l'on va faire dans la prochaine vidéo.

WinDev 21 : La gestion des bases de données HFSQL

Découvrez les manipulations, les outils et les possibilités intéressantes des bases de données HFSQL dans WinDev. Installez, utilisez, et gérez le serveur HFSQL client/serveur.

2h03 (23 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
WinDev WinDev 21
Spécial abonnés
Date de parution :23 févr. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !