PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → hListeFichier() et procédures stockées
hListeFichier() et procédures stockées
Started by Simon, Feb., 21 2018 2:27 PM - 6 replies
Posted on February, 21 2018 - 2:27 PM
Bonjour à toutes et à tous,

J'ai besoin de lister tous les fichier de ma BDD HFSQL depuis une procédure stockée, mais malheureusement, cette fonction n'est pas disponible dans ces dernières. Quelqu'un connait-il une solution alternative ?

Merci par avance
Registered member
165 messages
Popularité : +12 (12 votes)
Posted on February, 21 2018 - 6:29 PM
Bonjour;
En dur sous windows 7 : en remplaçant

- MonServeur par le nom de ton serveur
- MaBaseDeDonnées par le nom de ta base de données
dans le code de la procédure stockée suivant :

Procedure ListeFichiersHF()

RENVOYER fListeFichier("C:\ProgramData\PC SOFT\ServeurHFSQL_MonServeur\BDD\MaBaseDeDonnées\*.FIC",frNonRécursif)


l'appel à la procédure : en remplaçant
Maconnexion par le nom de ta connexion

Info(HExecuteProcedure(Maconnexion,ListeFichiersHF))


Bon Dev.
Posted on February, 22 2018 - 9:16 AM
Bonjour Fouedusa et merci pour ta réponse.

HExecuteProcedure() n'est pas disponible en code PS, tout comme la gestion de la connexion.

En fait je cherche à créer une tâche dans le CC HFSQL pour exécuter une PS tous les soirs à 0h01 qui va chercher la liste de tous les fichiers de ma BDD (fic/ndx/mmo/ftx) afin de stocker la volumétrie de chaque table au quotidien (taille + nb enregs) à des fins statistiques. Le gros problème, c'est que la plupart des fonctions dont j'ai besoin ne sont pas disponibles dans les procédures stockées...

Je cherche un peu l'équivalent de ce code que j'ai côté ERP pour surveiller mes volumes en temps réel :

sNomFichierSansExt est une chaîne
sListeFichier est une chaîne
bFichierRacine est un booléen
nTailleFichier est un entier
nTailleIndex est un entier
nTailleFic est un entier
nTailleMmo est un entier
nTailleFtx est un entier
xTailleDec est un numérique
xTailleDecIndex est un numérique
xTailleDecFic est un numérique
xTailleDecMmo est un numérique
xTailleDecFtx est un numérique

sListeFichier = HListeFichier(gmodXXX.gcnxConnexionServeur,hLstTable)

POUR TOUTE chaîne sFichier de sListeFichier SEPAREE PAR RC
bFichierRacine = ChaîneCommencePar(sFichier,"_")

SI PAS bFichierRacine ALORS
nTailleFichier = HInfoFichier(gmodPhoenix.gcnxConnexionServeur,sFichier, hTailleTotale)
nTailleIndex = HInfoFichier(gmodPhoenix.gcnxConnexionServeur,sFichier, hTailleNdx)
nTailleFic = HInfoFichier(gmodPhoenix.gcnxConnexionServeur,sFichier, hTailleFic)
nTailleMmo = HInfoFichier(gmodPhoenix.gcnxConnexionServeur,sFichier, hTailleMmo)
nTailleFtx = HInfoFichier(gmodPhoenix.gcnxConnexionServeur,sFichier, hTailleFtx)
xTailleDec = nTailleFichier/1000000
xTailleDecIndex = nTailleIndex/1000000
xTailleDecFic = nTailleFic/1000000
xTailleDecMmo = nTailleMmo/1000000
xTailleDecFtx = nTailleFtx/1000000
sNomFichierSansExt = ExtraitChaîne(sFichier,1,".",DepuisDébut)

TableAjouteLigne(TABLE_Fichiers,sFichier, HNbEnr(sNomFichierSansExt), xTailleDec, xTailleDecFic, xTailleDecIndex, xTailleDecMmo, xTailleDecFtx)
FIN
FIN
Registered member
3,881 messages
Popularité : +227 (347 votes)
Posted on February, 22 2018 - 1:44 PM
Bonjour,
As tu essayé de regarder du côté de HlisteBase avec l'option hListeFichier ?

--
Il y a peut être plus simple, mais, ça tourne
Registered member
165 messages
Popularité : +12 (12 votes)
Posted on February, 22 2018 - 6:18 PM
Bonjour;
Je propose d'ajouter un fichier dans la base de données, qui contiendra la liste des fichiers de cette BDD, et mis à jour par les différents modules de l'ERP quand il faudra, c.à.d. en cas d'ajout d'un nouveau fichier ou suppression d'un fichier.

enlever de la PS la ligne :
sListeFichier = HListeFichier(gmodXXX.gcnxConnexionServeur,hLstTable)


et le parcours dans la PS :
POUR TOUTE chaîne sFichier de sListeFichier SEPAREE PAR RC

sera basé sur les enregistrements de ce fichier.

Bon Dev.
Registered member
21 messages
Popularité : +1 (1 vote)
Posted on February, 23 2018 - 9:31 AM
Bonjour,

je te propose d'utiliser les tâches planifiées du serveur d'application webdev.
A voir avec le serveur 10 connexions si il n'y a pas de limitation de ce coté.

https://doc.pcsoft.fr/?1000019455

Tu pourras exploiter Hlistefichier et pleins d'autres fonctions non utilisable en procédure stockée.

Bon dev.

--
MJFORUM_NOR
Posted on February, 23 2018 - 1:08 PM
Pour le moment j'ai fait une fenêtre qui gère les tâches planifiées Windows et me permet de les exécuter soit en manuel, soit à la date prévue en lançant l'erp en lignes de commande et en switchant sur une collection de procédures globales dédiée au traitement des automatismes. L'erp ajoute automatiquement à sa bdd les tâches commençant"par WD" pour ne pas se mélanger les pinceaux avec les tâches système.
Je stocke donc dans ma BDD la liste des tâches Windows ainsi qu'une historisation de chaque exécution avec la durée de traitement, un fichier de log joint...

Tout va passer dans ce traitement : génération de factures, mailing, reindexation de la BDD, récaps du CA...

Ces limites techniques des PS m'ont donc poussé à développer du tout fait maison mais au final qui correspond bien plus à mes attentes.

Merci à tous pour vos réponses.