PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Création d'un fichier local HyperFile par programmation
Création d'un fichier local HyperFile par programmation
Iniciado por Manu MC, 15,jun. 2015 14:41 - 6 respuestas
Miembro registrado
36 mensajes
Publicado el 15,junio 2015 - 14:41
Bonjour

L'application que j'ai créé est sur un disque réseau avec une base HFSQL sur un serveur Hyperfile distant. Chqaue utilisateur dans l'entreprise peut créer sur son bureau un raccourci vers l'exeécutable de l'application et la lancer depuis son poste (pour éviter les copies multiples sur chaque poste et simplifier les mises à jours).

Par contre l'application a dans son analyse un fichier local utilisable pour faire un calcul des besoins. A chaque calcul de besoin l'application va vider ce fichier local, y entrer les données de sa requete et afficher le contenu à l'utilisateur. Mais le problème est que si deux ou trois utilisateurs lancent un calcul de besoins en même temps ils seront les trois sur le même fichier et ça va faire des conflits !

Je souhaite donc trouver une solution pour créer ce fichier en local sur le PC de l'utilisateur dans le dossier C:\TEMP par exemple à l'ouverture de la fenêtre de calcul des besoins. Est ce que c'est possible de faire ça par programmation ?

Dans la doc j'ai trouvé : HdécritFichier
si j'essaye ça pourrait peut-être fonctionner :

UnFichier est une Description de Fichier
UnFichier..Nom = "CalculBesoins"
UnFichier..Type = hFichierNormal
UnFichier..CryptageFic = hCryptageStandard
Unfichier..Répertoire = "C:/TEMP"

HDécritFichier(UnFichier)
HCreation(CalculBesoins)


Mais comment lui envoyer toutes les rubriques de celui de l'analyse ?

Merci d'avance.

--
Manu M.C
Windev 19
Publicado el 15,junio 2015 - 15:11
Tu n'as pas besoin de hdécrit, un hchangeconnexion va te suffir pour ce que tu souhaites faire.
ou tu peux mettre la ligne suivante :
HConnecte(FichierLocal,"","",sRepLocal,hAccèsHF7,hOLectureEcriture)

Cette ligne doit, bien sur, apparaitre après la ligne hchangeconnexion("*",cnx) si tu utilises cette commande.
Miembro registrado
186 mensajes
Publicado el 15,junio 2015 - 15:24
Salut,
Tu peux faire un truc du genre :

UnAlias est une Source de Données
NomFichierest une chaîne=ComplèteRep(fRépertoireTemp) + "CalculBesoin"
//Si le fichier existe, on le déclare
SI fFichierExiste(NomFichier + ".FIC") ALORS
SI PAS HDéclareExterne(NomFichier + ".FIC", UnAlias) ALORS
Erreur(ErreurInfo(errComplet))
FIN
SINON
//Le fichier n'existe pas, on le crée à partir du fichier d'origine (attention ça copie son contenu)
SI PAS HVersFichier(CalculBesoin, NomFichier + ".FIC") ALORS
Erreur(ErreurInfo(errComplet))
SINON
//Puis on le déclare
SI PAS HDéclareExterne(NomFichier + ".FIC", UnAlias) ALORS
Erreur(ErreurInfo(errComplet))
FIN
FIN
FIN


--
Seb
Miembro registrado
186 mensajes
Publicado el 15,junio 2015 - 15:25
Ensuite tu le manipule en utilisant UnAlias.NomRubrique et tu peux utiliser les fonctions H... dessus.

--
Seb
Miembro registrado
186 mensajes
Publicado el 15,junio 2015 - 15:31
Bon c'est clair que la solution de Franck est bien plus simple que la mienne.
Merci pour la leçon :)

--
Seb
Miembro registrado
36 mensajes
Publicado el 16,junio 2015 - 07:32
Merci pour vos réponses Sebinc et Franck, je vais essayer les deux solutions.

--
Manu M.C
Windev 19
Publicado el 19,febrero 2020 - 10:48
Salut,
Pour créer une vue matérialisée dans un fichier plat local HFSQL. On peut créer un fichier plat JSON dans lequel on copie les données extraites de la base de données via une requête SQL, puis on charge ce fichier JSON dans un fichier HFSQL local (le fichier HFSQL doit avoir été rajouté dans l'analyse au préalable .

sPathFileTemps est une chaîne = fRépertoireTemp()+"fichierPlatTemps.json"
cnxLocal est une Connexion
cnxLocal..Libellé = "local"
cnxLocal..Provider = hAccèsHF7
cnxLocal..Accès = hOLectureEcriture
HOuvreConnexion(cnxLocal)
HChangeConnexion(HVueFichierPlatDansAnalyse,cnxLocal)
HExécuteRequête(HVueFichierPlatDansAnalyse, gcnxPrimary)
HExporteJSON(HVueFichierPlatDansAnalyse, sPathFileTemps, hExpCreation)
HImporteJSON(HVueFichierPlatDansAnalyse,sPathFileTemps)
fSupprime(sPathFileTemps)