OVH Cloud OVH Cloud

Configuration multiple HyperFile C/S et Hyperfile Classic

38 réponses
Avatar
Vincent
Bonjour,

J'ai une appli basée sur Hyperfile classic.
Pour certain client, je dois migrer en HF C/S. Est-ce que dans ce cas,
Mon appli peut choisir au lancement entre une connexion HF classic ou
une connexion HF C/S, pour ne pas imposer au client existant
l'installation du serveur Manta ?

Je ne veux surtout pas avoir 2 versions à maintenir.

10 réponses

1 2 3 4
Avatar
Vincent
Arnaud Trotignon a écrit :
Arnaud Trotignon a écrit :

Quand à l'utilisation au choix sur HF Classic ou HF C/S, nous avons
implémenté cette possibilité sans grosses difficultés dans nos applis.
Nous n'avons pas changé le source dans toute l'appli, mais juste les
procédure de connexion aux bases, et c tout bon...




Juste une précision : Le truc, pour gérer la double possibilité de
connexion, c'est de garder l'analyse en mode Classic, et de gérer une
connexion C/S avec HdecritConnexion, puis les HOuvreConnexion, et
hchangeconnexion.



Donc dans l'éditeur d'analyse, les fichiers sont toujours du type
"Hyperfile classique" et non "Hyperfile Client/Serveur" ?
Avatar
Jennyfer
Merci Arnaud pour ces précisions utiles et constructives.
Sauf erreur de ma part, il me semble bien que les problèmes de vue en
HF C/S ont disparu avec la 34.
Le travail que tu a fait c'était en 34 ou avant ?
Jennyfer


Arnaud Trotignon wrote:
Arnaud Trotignon a écrit :

> Quand à l'utilisation au choix sur HF Classic ou HF C/S, nous avons
> implémenté cette possibilité sans grosses difficultés dans nos applis.
> Nous n'avons pas changé le source dans toute l'appli, mais juste les
> procédure de connexion aux bases, et c tout bon...

Juste une précision : Le truc, pour gérer la double possibilité de connexion, c'est de garder
l'analyse en mode Classic, et de gérer une connexion C/S avec HdecritCo nnexion, puis les
HOuvreConnexion, et hchangeconnexion.

Tiens, voilà le bout de source que j'utilise:

SI ModeClientServeur ALORS // Si on est en mode C/S

// On crée la connexion
SI
HDécritConnexion(MaConnexionCS,HFCS_NomUtil,HFCS_PassWord,HFCS_IPServeu r,HFCS_NomBase,hAccèsHFClientServeur)
ALORS

// Connexion au serveur HF C/S
SI PAS HOuvreConnexion(MaConnexionCS) ALORS
Erreur(HErreurInfo())
SINON

// On passe l'ensemble des fichiers de l'analyse sur la connexion C/S
HChangeConnexion("*",MaConnexionCS)
// on annule cette connexion sur les fichiers locaux
HChangeConnexion(P_DocStd,"")
HChangeConnexion(stock,"")
HChangeConnexion(pros,"")
HChangeConnexion(photos,"")

FIN

SINON
Erreur(HErreurInfo())
FIN

SINON
// mode Classic : on parametre juste le répertoire des données
HSubstRep("?",RepBdd)

FIN


Avatar
mat
Jennyfer wrote:
Merci Arnaud pour ces précisions utiles et constructives.
Sauf erreur de ma part, il me semble bien que les problèmes de vue en
HF C/S ont disparu avec la 34.
Le travail que tu a fait c'était en 34 ou avant ?
Jennyfer




Et si tu nous montrais un bout de code comment créer un fichier dans le
répertoire temporaire lorsqu'on travaille sous HF C/S, ce qui est le
sujet du fil?
Avatar
Emmanuel Haefele
"mat" a écrit dans le message de
news:

Salut mat,

Et si tu nous montrais un bout de code comment créer un fichier dans le
répertoire temporaire lorsqu'on travaille sous HF C/S, ce qui est le
sujet du fil?



Il se trouve que tout à fait par hasard depuis deux jours je fais aussi
des tests en HF C/S sur un programme 5.5 utilisant princpalement des
filtres, hlitrecherche et quelques vues. Etant confronté à ce problème et
grâce à Arnaud j'ai sans doute trouvé une solution qui fonctionne.

Je fais la chose suivante :

HDécritConnexion( gsNomConnexion, ... )
HOuvreConnexion(gsNomConnexion)
HChangeConnexion( "*", gsNomConnexion )
HChangeConnexion( MonFichierTemporaire, "" )
HChangeRep( "MonFichierTemporaire", sMonRepTemporaireLocal )

Et ça fonctionne parfaitement.


Amicalement,

Emmanuel Haefelé.
Avatar
Vincent
Arnaud Trotignon a écrit :
Arnaud Trotignon a écrit :

Quand à l'utilisation au choix sur HF Classic ou HF C/S, nous avons
implémenté cette possibilité sans grosses difficultés dans nos applis.
Nous n'avons pas changé le source dans toute l'appli, mais juste les
procédure de connexion aux bases, et c tout bon...




Juste une précision : Le truc, pour gérer la double possibilité de
connexion, c'est de garder l'analyse en mode Classic, et de gérer une
connexion C/S avec HdecritConnexion, puis les HOuvreConnexion, et
hchangeconnexion.

Tiens, voilà le bout de source que j'utilise:

SI ModeClientServeur ALORS // Si on est en mode C/S

// On crée la connexion
SI
HDécritConnexion(MaConnexionCS,HFCS_NomUtil,HFCS_PassWord,HFCS_IPServeur,HFCS_NomBase,hAccèsHFClientServeur)
ALORS

// Connexion au serveur HF C/S
SI PAS HOuvreConnexion(MaConnexionCS) ALORS
Erreur(HErreurInfo())
SINON

// On passe l'ensemble des fichiers de l'analyse sur la
connexion C/S
HChangeConnexion("*",MaConnexionCS)
// on annule cette connexion sur les fichiers locaux
HChangeConnexion(P_DocStd,"")
HChangeConnexion(stock,"")
HChangeConnexion(pros,"")
HChangeConnexion(photos,"")

FIN

SINON
Erreur(HErreurInfo())
FIN

SINON
// mode Classic : on parametre juste le répertoire des données
HSubstRep("?",RepBdd)

FIN



Petite précision, le HchangeConnexion(fichier, "") ne fonctionne pas si
les fichiers sont décrit dans l'analyse comme étant client/serveur.
Avatar
Vincent
Arnaud Trotignon a écrit :
Arnaud Trotignon a écrit :

Quand à l'utilisation au choix sur HF Classic ou HF C/S, nous avons
implémenté cette possibilité sans grosses difficultés dans nos applis.
Nous n'avons pas changé le source dans toute l'appli, mais juste les
procédure de connexion aux bases, et c tout bon...




Juste une précision : Le truc, pour gérer la double possibilité de
connexion, c'est de garder l'analyse en mode Classic, et de gérer une
connexion C/S avec HdecritConnexion, puis les HOuvreConnexion, et
hchangeconnexion.

Tiens, voilà le bout de source que j'utilise:

SI ModeClientServeur ALORS // Si on est en mode C/S

// On crée la connexion
SI
HDécritConnexion(MaConnexionCS,HFCS_NomUtil,HFCS_PassWord,HFCS_IPServeur,HFCS_NomBase,hAccèsHFClientServeur)
ALORS

// Connexion au serveur HF C/S
SI PAS HOuvreConnexion(MaConnexionCS) ALORS
Erreur(HErreurInfo())
SINON

// On passe l'ensemble des fichiers de l'analyse sur la
connexion C/S
HChangeConnexion("*",MaConnexionCS)
// on annule cette connexion sur les fichiers locaux
HChangeConnexion(P_DocStd,"")
HChangeConnexion(stock,"")
HChangeConnexion(pros,"")
HChangeConnexion(photos,"")

FIN

SINON
Erreur(HErreurInfo())
FIN

SINON
// mode Classic : on parametre juste le répertoire des données
HSubstRep("?",RepBdd)

FIN



J'ai besoin d'une précision sur le le HchangeNom dans le cadre du
fonctionnement du C/S.

Dans mon analyse, j'ai un fichier temporaire TMPX.
Au lancement de l'appli, je fais un HchangeNom pour que le fichier
physique soit un nom généré aléatoirement.

sListe=HListeFichier()
compteur=1
BOUCLE
nom_fichier=ExtraitChaîne(sListe,compteur,RC)
SI (nom_fichier=EOT) ou (nom_fichier="") ALORS SORTIR
HChangeRep(nom_fichier,gCheminData)
SI (Majuscule(Gauche(nom_fichier,4))="TMP_")ALORS
HChangeNom(nom_fichier, "~" + Today() + Maintenant() +
NumériqueVersChaîne( Random(1000)))
FIN
compteur=compteur+1
FIN


Un 2eme poste se connecte,un nouvel HChangeNom est effectué.
Est-ce que ca perturbe le 1er poste ?

Est-ce que le serveur HF, fait bien la correspondance entre la session
et les noms physiques des fichiers ?
Avatar
Emmanuel Haefele
"Vincent" a écrit dans le message de
news:43901b45$0$21222$

Bonjour Vincent,

Petite précision, le HchangeConnexion(fichier, "") ne fonctionne pas si
les fichiers sont décrit dans l'analyse comme étant client/serveur.



Autre petite précision que je viens de constater avec HF en C/S. En HF
classic je m'étais habitué à une réindexation automatique des fichiers par
windev lors qu'il y avait un problème d'index ou que l'index n'existait
pas. En C/S, à priori ce mécanisme ne fonctionne plus, l'appli plante en
cas de problème d'index.

Ceci n'est pas documenté dans la doc au niveau des différences entre les
deux modes, si vous voyez comment le contourner je suis preneur ...


Amicalement,

Emmanuel Haefelé.
Avatar
Arnaud Trotignon
Vincent a écrit :
Arnaud Trotignon a écrit :

Arnaud Trotignon a écrit :


Quand à l'utilisation au choix sur HF Classic ou HF C/S, nous avons
implémenté cette possibilité sans grosses difficultés dans nos applis.
Nous n'avons pas changé le source dans toute l'appli, mais juste les
procédure de connexion aux bases, et c tout bon...




Juste une précision : Le truc, pour gérer la double possibilité de
connexion, c'est de garder l'analyse en mode Classic, et de gérer une
connexion C/S avec HdecritConnexion, puis les HOuvreConnexion, et
hchangeconnexion.




Donc dans l'éditeur d'analyse, les fichiers sont toujours du type
"Hyperfile classique" et non "Hyperfile Client/Serveur" ?



oui

Ca marche comme ça chez nous
Avatar
Arnaud Trotignon
Emmanuel Haefele a écrit :
"mat" a écrit dans le message de
news:

Salut mat,


Et si tu nous montrais un bout de code comment créer un fichier dans le
répertoire temporaire lorsqu'on travaille sous HF C/S, ce qui est le
sujet du fil?




Il se trouve que tout à fait par hasard depuis deux jours je fais aussi
des tests en HF C/S sur un programme 5.5 utilisant princpalement des
filtres, hlitrecherche et quelques vues. Etant confronté à ce problème et
grâce à Arnaud j'ai sans doute trouvé une solution qui fonctionne.

Je fais la chose suivante :

HDécritConnexion( gsNomConnexion, ... )
HOuvreConnexion(gsNomConnexion)
HChangeConnexion( "*", gsNomConnexion )
HChangeConnexion( MonFichierTemporaire, "" )
HChangeRep( "MonFichierTemporaire", sMonRepTemporaireLocal )

Et ça fonctionne parfaitement.


Amicalement,

Emmanuel Haefelé.



c'est tout à fait ça.

Effectivemen,t, dans le bout de code que je vous ai envoyé, le hchangerep n'y est pas, mais c'est
parce que chez nous il a été réalisé avant.
Avatar
mat
Emmanuel Haefele wrote:
...

Je fais la chose suivante :

HDécritConnexion( gsNomConnexion, ... )
HOuvreConnexion(gsNomConnexion)
HChangeConnexion( "*", gsNomConnexion )
HChangeConnexion( MonFichierTemporaire, "" )
HChangeRep( "MonFichierTemporaire", sMonRepTemporaireLocal )

Et ça fonctionne parfaitement.




merci Emmanuel, j'ai compris maintenant.

Salutations
Mat
1 2 3 4