PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Site AWP et connexion BDD
Site AWP et connexion BDD
Débuté par Vincent Lecomte, 26 mai 2016 13:49 - 13 réponses
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 26 mai 2016 - 13:49
Bonjour,

J'ai déployé mon site AWP sur mon serveur mais celui-ci semble vouloir utiliser la connexion définie dans l'analyse.
C'est toujours comme ça ? On ne peut pas initialiser la connexion via le code global du projet ?
Car c'est ce que je faisais et jusqu'à présent ça marchait... Mais sur le serveur il semble tenter la connexion à la BDD principale de l'analyse...

Pas cool ça !
Merci pour votre aide...

--
Vincent
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 26 mai 2016 - 14:08
Je suppose qu'en fait dans ce cas ci
- HOuvreConnexion() devient inutile
- Idem pour HChangeConnexion()

--
Vincent
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 26 mai 2016 - 14:35
Bon, j'ai laissé le HChangeConnexion() et supprimé HOuvreConnexion().
J'utilise désormais la connexion à l'analyse et ça marche bien :-)

--
Vincent
Posté le 26 mai 2016 - 20:59
Bonjour Vincent

Bon, j'ai laissé le HChangeConnexion() et supprimé HOuvreConnexion().
> J'utilise désormais la connexion à l'analyse et ça marche bien :-)

perso, je te conseille de faire l'inverse. ENLEVE la connexion qui est
dans l'analyse, et gère tout le temps avec des hachangeconnexion, en
lisant un fichier ini pour ls paramètres. Comme ca, test, déploiement de
test, déploiement final, déploiement multiples pour plusieurs clients,
tout fonctionne facilement

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International
Plus d'information sur http://fabriceharari.com
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 27 mai 2016 - 10:39
Si j'enlève la connexion de mon analyse, plus aucun fichier n'est lié... J'ai essayé de dé-lier la connexion pour un fichier mais il ne veut pas en entendre parler...

Si je supprime la connexion le générateur d'analyse m'envoie à la gare en disant que chaque fichier doit être lié à une connexion.
--
Vincent
Message modifié, 27 mai 2016 - 10:41
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 30 mai 2016 - 08:21
Fabrice (ou quelqu'un d'autre ?), je reviens vers toi pour ce qui est d'enlever la connexion à l'analyse... Etant donné que Webdev ne me laisse pas le faire, quelle est ta solution (je passe peut-être à côté d'un truc tout bête...) ;)

--
Vincent
Posté le 30 mai 2016 - 13:13
Moi je procède comme suit

a l'initialisation je ferme les fichiers, puis je ferme la connexion de développement.
Ensuite je déclare la connexion que le programme ou le site doit utiliser, puis je ré ouvre les fichiers.

Le code ci dessous devrait te permettre d'arriver a ce résultat.

HFerme("*") // On ferme les fichiers
HFermeConnexion(MaConnexion) // on ferme la connexion de dev
MyIni est une chaîne = ComplèteRep(fRepExe()) + "application.ini" // on défini le fichier INI

SI PAS fFichierExiste(MyIni) ALORS // On créé le fichier ini s'il n'existe pas
INIEcrit("DATAS","BaseType","mysql",MyIni)
INIEcrit("DATAS","BaseHost","localhost",MyIni)
INIEcrit("DATAS","BasePort","3306",MyIni)
INIEcrit("DATAS","BaseUser","root",MyIni)
INIEcrit("DATAS","BasePassword","password",MyIni)
INIEcrit("DATAS","BaseName","basename",MyIni)
FIN

// On declare des variables qui vont contenir les informations contenues dans le INI ou permettre de les traiter
xport est un entier

ValConnexion est un booléen
ValChangement est un booléen

BaseType est une chaîne
BaseName est une chaîne
BaseUser est une chaîne
BasePassword est une chaîne
BaseHost est une chaîne
BasePort est une chaîne


// On lit le fichier ini
BaseType = INILit("DATAS","BaseType","mysql",MyIni)
BaseName = INILit("DATAS","BaseName","nomdelabase",MyIni)
BaseUser = INILit("DATAS","BaseUser","root",MyIni)
BasePassword = INILit("DATAS","BasePassword","none",MyIni)
BaseHost = INILit("DATAS","BaseHost","localhost",MyIni)
xport = Val(INILit("DATAS","BasePort","0",MyIni))

// On traite les informations du fichier INI
SELON xport
CAS 1 A 65536
BasePort = "server port="+NumériqueVersChaîne(xport)
AUTRE CAS
BasePort = "" // + ":" + NumériqueVersChaîne(xport)
FIN

// On initialise la connexion
MaConnexion est une Connexion
MaConnexion..Accès = hOLectureEcriture
MaConnexion..BaseDeDonnées = SansEspace(BaseName)
MaConnexion..InfosEtendues = BasePort // "server port=7799"
MaConnexion..Libellé = "Connexion à MySQL"

SELON BaseType // on selectionne le provider
CAS "mysql"
MaConnexion..Provider = hAccèsNatifMySQL
CAS "oracle"
MaConnexion..Provider = hAccèsNatifOracle
CAS "sqlserver"
MaConnexion..Provider = hAccèsNatifSQLServer
AUTRE CAS
MaConnexion..Provider = hAccèsHFClientServeur

FIN

MaConnexion..Serveur = BaseHost // "localhost"
MaConnexion..Source = ""
MaConnexion..Utilisateur = BaseUser //
MaConnexion..MotDePasse = BasePassword

// On se connecte
ValConnexion = HOuvreConnexion(MaConnexion) // valconnexion doit retourner vrai si connexion ok

// On traite le resultat de la connexion
SI ValConnexion = Vrai ALORS
ValChangement = HChangeConnexion("*",MaConnexion)
SI ValChangement = Vrai ALORS
// suite du programme
SINON //
// gestion de l'erreur
// exemple erreur(erreurinfo(errcomplet)) // permet de savoir en détail ce qui ne vas pas avec la connexion
FIN

SINON // il y a un pépin quelque part
// gestion de l'erreur
// exemple erreur(erreurinfo(errcomplet)) // permet de savoir en détail ce qui ne vas pas avec la connexion
FIN



Tu peux aussi utiliser la méthode "HDécritConnexion" mais je connais pas mal de personne qui ont eu des problèmes avec MySQL quand le port utilisé n'est pas le port par défaut (3306)

J'espère que ça t'aidera.
Posté le 30 mai 2016 - 21:16
Bonjour Vincent,

Fabrice (ou quelqu'un d'autre ?), je reviens vers toi pour ce qui est
d'enlever la connexion à l'analyse... Etant donné que Webdev ne me
laisse pas le faire, quelle est ta solution (je passe peut-être à côté
d'un truc tout bête...) ;)


Nous montrer des copies d'écran du "ne me laisse pas le faire" ?

Cordialement

--
Fabrice Harari
International WinDev, WebDev and WinDev mobile Consulting

More information on http://www.fabriceharari.com
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 31 mai 2016 - 09:18
Je peux supprimer ma connexion en ouvrant l'analyse, puis depuis l'Explorateur d'Analyse -> Connexions, supprimer la connexion. Cependant Webdev demande à ce que cette fameuse connexion soit décrite dans l'analyse pour lier les fichiers et éventuellement faire la mise à jour depuis celle-ci (ce qui me semble assez logique), sans quoi il ne peut pas la regénérer.

La solution de Jicé semble vraiment pas mal... Mais dans le cas présent il y a bien deux accès à la BDD :
- Le 1er accès est automatique et est effectué à partir des propriétés de l'analyse. Potentiellement une petite perte de temps...
- Fermeture de la première connexion dans ce cas donc de nouveau, potentiellement une perte.
- Second accès à partir du fichier .INI.

On a donc une ouverture auto, une fermeture et une ré-ouverture de connexion.
Ce que je souhaite éviter c'est la première étape. Mais ça ne semble pas possible à moins que je passe à côté de quelque chose :-)

--
Vincent
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 31 mai 2016 - 12:05
C'est moi ou avec un fichier INI la lecture des paramètres est plus longue ?!
La connexion à mon site est plus longue de bien 2 secondes à chaque fois...

Bizarre, j'ai mis des date/heure système pour voir ce qui prenait du temps et dans les deux durées j'obtiens la même chose au point A et au point B.
Du coup je me demande d'où vient la lenteur de la connexion car quand je ping mon serveur c'est nickel (14 ms) et la page de base de IIS répond au doigt et à l'oeil.

En debug ça répond très vite... Donc c'est étrange :-)

Arf, je viens de tester en localhost mon site, directement sur le serveur, même phénomène...
Le navigateur mouline sur Connexion... Puis après 2-3 secondes le site apparait. Grrrr!
Y a un stût quelque part... Chose comique, les applis Web répondent vite en localhost.

--
Vincent
Message modifié, 31 mai 2016 - 13:09
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 31 mai 2016 - 13:17
J'ai réglé le problème ...

Au lieu de placer le port dans InfosEtendues, j'ai mis

GP_cnxDilibel..Serveur = sBaseHost+":"+sBasePort


Et là je n'ai plus mon problème de délai de connexion !

--
Vincent
Posté le 31 mai 2016 - 18:29
Vincent Lecomte a écrit :
J'ai réglé le problème ...

Au lieu de placer le port dans InfosEtendues, j'ai mis

GP_cnxDilibel..Serveur = sBaseHost+":"+sBasePort


Et là je n'ai plus mon problème de délai de connexion !

--
Vincent


Comme cela est curieux...?

En effet auparavant je me servait exclusivement de la méthode : HDécritConnexion comme suit

HDécritConnexion(:ConnexionName,:BaseUser,:BasePassword,:BaseHost,:BaseName,hAccèsNatifMySQL,hOLectureEcriture)


et lorsque le port n'était pas celui par défaut je rajoutais ":" + sBasePort à l'adresse du serveur de façon a obtenir ex: 192.168.1.100:7799 comme tu le fait toi meme.
hors comme je l'ai indiqué dans mon post, dès que j'utilisai un port différent de 3306 cela ne fonctionnait plus.

Peut être que cela venait de la DLL "LibMysql.dll' utilisée, il y en a plusieurs version et ce serai bien de comparer celles utilisées.

La version que j'utilise est la 5.5.13.0 du 24/05/2014.

En attendant, merci pour la correction je vais de ce pas tester cela sur ma config.
Membre enregistré
240 messages
Popularité : +3 (3 votes)
Posté le 01 juin 2016 - 12:08
La solution est super mais il faut prévoir à chaque fois de bien vérifier que MaConnexion est ouverte (avec une variable) sinon il refait appel directement à la connexion de l'analyse :-)
--
Vincent
Message modifié, 01 juin 2016 - 12:25
Posté le 02 juin 2016 - 18:54
Vincent Lecomte a écrit :
La solution est super mais il faut prévoir à chaque fois de bien vérifier que MaConnexion est ouverte (avec une variable) sinon il refait appel directement à la connexion de l'analyse :-)
--
Vincent


Bonjour a tous

Normalement c'est à cela que sert le "HChangeConnexion" il permet de déterminer pour chaque fichier quelle connexion utiliser ou tous les assigner a une connexion via la commande
HChangeConnexion("*",MaConnexion)



Il y a une chose que je n'ai pas précisé, c'est que dans l'exemple j'ai créé une nouvelle connexion, dans la réalité on y est pas obligé, il suffit de changer les paramètres de votre connexion de développement "ConnexionDev"

On ferme tous les fichier --> Hferme("*")
On ferme la connexion de dev --> HfermeConnexion("ConnexionDev")

pas besoin de faire le "MaConnexion est une connexion

et la on assigne les variables du INI directement à "ConnexionDev" au lieu de les assigner à "MaConnexion"

MaConnexion..Serveur = BaseHost // "localhost"
MaConnexion..Source = ""
MaConnexion..Utilisateur = BaseUser //
MaConnexion..MotDePasse = BasePassword


devient

ConnexionDev..Serveur = BaseHost // "localhost"
ConnexionDev..Source = ""
ConnexionDev..Utilisateur = BaseUser //
ConnexionDev..MotDePasse = BasePassword


Ensuite on ouvre la connexion

ValConnexion = HOuvreConnexion(ConnexionDev)


du coup le "HChangeConnexion" devient inutile et il n'y a plus qu'a rouvrir les fichiers HOuvre("*")

ça a son importance car dans certain cas il est recommandé d'indiquer le nom de la connexion à utiliser dans certaine requête SQL.

Alors si vous avez écrit ceci
HExécuteRequête("MaRequete","ConnexionDev",hRequêteDéfaut,"parametre-1","parametre-2")


la requête essaie d'utiliser la connexion "ConnexionDev" alors que vous l'avez fermée pour ouvrir une nouvelle connexion.

En ne changeant que les paramètres tous les problèmes devrait disparaître.

--->