PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2025 → [WD15] Connexion à une autre base de données
[WD15] Connexion à une autre base de données
Started by bard.julien, Feb., 26 2010 10:36 AM - 2 replies
Posted on February, 26 2010 - 10:36 AM
Bonjour quel est le protocole à metttre en place pour accéder à une autre base de données? Car en modifiant le code du projet ou en touchant les paramètres du fichier .ini; toujours un message d'erreur alors que je respecte le même formalisme que la connexion initiale!!!
Posted on February, 27 2010 - 3:20 PM
Bonjour

et si tu nous montrais ton code qui ne fonctionne pas, et qu'en plus tu
nous copiait ici le message d'erreur obtenu ?

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com/index_FR.html


On 2/26/2010 4:36 AM, bard wrote:
Bonjour quel est le protocole à metttre en place pour accéder à une autre base de données? Car en modifiant le code du projet ou en touchant les paramètres du fichier .ini; toujours un message d'erreur alors que je respecte le même formalisme que la connexion initiale!!!
Posted on March, 03 2010 - 1:17 PM
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// HONOLULU
// © 2009, PC SOFT. Tous droits réservés
//
//
//Le CLIENT représente la personne (physique ou morale) s'étant procurée le LOGICIEL.
//Le LOGICIEL désigne le droit d'utilisation du logiciel HONOLULU.
//Le SERVEUR D'APPLICATION désigne la partie du LOGICIEL nécessaire à l'exécution des programmes de HONOLULU.
//
//1- Licence
//Cette licence d'utilisation est concédée au CLIENT, sans contrepartie financière, sous réserve pour le CLIENT de
//respecter les termes de cette licence. Aucun paiement n'est requis pour utiliser le LOGICIEL.
//Le SERVEUR D'APPLICATION inclus avec cette version ne peut être utilisé que pour faire fonctionner HONOLULU
//en l'état et les applications livrées avec HONOLULU, en l'état.
//
//2- Propriété du LOGICIEL
//Ce LOGICIEL est la propriété de PC SOFT.
//Le CLIENT a simplement le droit d'utiliser ce LOGICIEL.
//Le CLIENT a également le droit de modifier le LOGICIEL, selon les clauses indiquées par ailleurs dans cette licence.
//
//3- Copie de sauvegarde
//La duplication de ce LOGICIEL est autorisée. Tout utilisateur de ce LOGICIEL doit accepter les clauses de la licence.
//Le CLIENT est autorisé à effectuer une copie de sauvegarde du CD ROM composant ce LOGICIEL.
//
//4- Utilisation
//Le CLIENT doit utiliser le LOGICIEL pour l'usage pour lequel il est publié. Il est interdit de modifier ou tenter de modifier
//les parties concernant la présentation de la société PC SOFT, de WINDEV et de WEBDEV dans HONOLULU.
//Il est interdit d'enlever ou de tenter d'enlever les mentions de copyright pouvant apparaître et/ou étant contenues dans le LOGICIEL.
//La vente et la location de ce LOGICIEL sont interdites. Par contre, ce LOGICIEL en l'état peut être diffusé gratuitement.
//
//5- Modification du LOGICIEL
//Dans le cas où le CLIENT désire modifier les fonctionnalités du logiciel, le CLIENT doit posséder au moins une licence du
//produit WINDEV et du produit WEBDEV dans une version permettant la modification du code source.
//Le CLIENT doit installer une version du logiciel SERVEUR D'APPLICATION WEBDEV sur chaque serveur utilisant le LOGICIEL modifié.
//L'application résultant du code source modifié ne pourra être utilisée qu'à l'intérieur de la société (maison mère et filiales
//incluses) du CLIENT. La vente et la location de ce LOGICIEL modifié sont interdites.
//La mention suivante devra obligatoirement être ajoutée en début de page de présentation, dans une police de taille très lisible :
//" Ce logiciel a été originellement réalisé par PC SOFT, puis a été modifié par [nom et adresse du CLIENT] ".
//Les mentions de copyright de PC SOFT devront être modifiées en " Parties de ce logiciel copyright PC SOFT.
//Logiciel modifié par [nom et adresse du CLIENT] ".
//
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////

//
// Traitement général des exceptions
//
gbErreurFatale est un booléen
gsErreurInfo est une chaîne
gsPageCourante est une chaîne
gsInfoException est une chaîne
gsIdentifiant est une chaîne
gsLangue est une chaîne

// Langue
gsLangue = CookieLit(COOKIE_LANGUE)
SI Val(gsLangue) <> 1 ET Val(gsLangue) <> 2 ALORS
gsLangue = INILit("HONOLULU","LANGUAGE","FR",fRepDonnées() + "\HONOLULU.INI")

// Mise en place de la langue
SELON gsLangue
CAS "FR":
Nation(nationFrançais)
CAS "EN":
Nation(nationAnglais)
AUTRE CAS:
dbgAssertion(Faux,"Type de langue non géré")
FIN
SINON
// Mise en place de la langue du cookie
SELON gsLangue
CAS "1":
Nation(nationFrançais)
CAS "2":
Nation(nationAnglais)
FIN
FIN

QUAND EXCEPTION
// Réactive les exceptions
ExceptionActive()

// Si une exception survient alors qu'on est déjà en erreur fatale
SI gbErreurFatale ALORS
gsInfoException = gsErreurInfo
SINON
SI ExceptionInfo(errCode) DANS (10085,74000,70204,74001,74020) ALORS
gsInfoException = ""+TAB+""+TAB+""+TAB+"Vérifiez qu'un serveur Hyper File est bien installé et correctement configuré." + ExceptionInfo(errComplet)
SINON
gsInfoException = ExceptionInfo(errComplet)
FIN
FIN

// En mode développement : affiche un assert
dbgAssertion(Faux, ExceptionInfo(errComplet))

SI EnModeAWP() = Faux ALORS
SI EnModeAJAX() = Faux ALORS
// En mode classique : affiche la page d'erreur
PageAffiche(PAGE_Erreur, gsInfoException)
SINON
// On met à jour des variables pour la gestion des erreur
gbErreurFatale = Vrai
gsInfoException = ""+TAB+""+TAB+""+TAB+"Vérifiez qu'un serveur Hyper File est bien installé et correctement configuré." + ExceptionInfo(errComplet)

// En mode AJAX
SI PAS (PageCourante() ~= "" ET gsPageCourante ~= "") ALORS
// On est dans une page
// On affiche l'erreur dans la page
SI gsPageCourante = "" ALORS
gsPageCourante = PageCourante()
FIN
ExécuteTraitement(gsPageCourante + ".WDialogueEx", trtProcédure, "Une erreur inattendue est survenue :" + RC + "<b>Le serveur de données ne répond plus</b>", "OK" + TAB + "1", "OnErreurHF", "Erreur", "%web%/images/msgbox/error.png")
FIN
FIN
SINON
// En mode AWP : affiche l'erreur
Erreur(gsInfoException)
FIN

RETOUR
FIN

//
// Déclaration des variables
//

CONSTANT
CS_VERSION = 14
CS_NOM_SERVEUR_HONOLULU_CS = "HONOLULU" + CS_VERSION

// Identification HFCS
CS_UTILISATEUR = "ADMIN_" + CS_NOM_SERVEUR_HONOLULU_CS
CS_PASSWORD_CS = "PCSH" + CS_VERSION
CS_PASSWORD_CS_UTILISATEUR = "H" + CS_VERSION + "USER"

CS_ALIAS_MOTEUR = "H" + CS_VERSION + "AWP" // Nom de l'alias du moteur
CS_NOM_MOTEUR_AWP = CS_ALIAS_MOTEUR + ".EXE"

// Droits des utilisateurs
CS_DROITS_UTILISATEUR = hDroitAjout + hDroitConnexion + hDroitGèreDoublon + hDroitGèreIntégrité + hDroitLecture + hDroitMaintenance + ...
hDroitModification + hDroitSuppression + hDroitExécutionProcédure + hDroitGestionProcédure

// Droits des administrateurs
CS_DROITS_UTILISATEURS_ADMIN = CS_DROITS_UTILISATEUR + hDroitChangeDroit + hDroitBlocage

// Parametre
PARAM_FONDECRAN = "FOND_ECRAN"

// Cookie
COOKIE_FONDECRAN = "BULLE_FONDECRAN"
COOKIE_AUTOLOGIN = "HONOLULU_AUTOLOGIN_F"
COOKIE_IDENT = "HONOLULU_IDENTIFICATION_F"
COOKIE_USER = "HONOLULU_USERNAME_F"
COOKIE_LANGUE = "HONOLULU_LANGUE_F"
FIN

// Structure permettant de stocker les informations de l'utilisateur actuellement connecté
STUtilisateurCourant est une structure
IDUtilisateur est un entier
Login est une chaîne
MotDePasse est une chaîne
NomAffiché est une chaîne
Nom est une chaîne
Prénom est une chaîne
Email est une chaîne
Avatar est un Buffer
AgendaPublic est un booléen
EstAdministrateur est un booléen
EstModérateur est un booléen
EstSupprimé est un booléen
EmailAutorisé est un booléen
EstConnecté est un booléen
QuestionMotDePasse est un entier
RéponseMotDePasse est une chaîne
DateHeureCréation est une DateHeure
DateHeureConnexion est une DateHeure
Signature est une chaîne
FIN

STNavigateur est une structure
Acronyme est une chaîne
UserAgent est une chaîne
Version est un réel
MozillaVersion est un réel
FIN

// Informations sur le navigateur en cours
NavigateurClientEnCours est un STNavigateur
// Informations sur l'utilisateur en cours
UtilisateurEnCours est un STUtilisateurCourant
// En cas de connexion au site via une ligne de commande
gsSuiteCmd est une chaîne
// Extension de pages AWP
AWP_EXT est une chaîne

// Nom affiché par défaut
UtilisateurEnCours:NomAffiché = "Invité"

// Fichier INI présent ?
SI PAS fFichierExiste(fRepDonnées() + "\HONOLULU.INI") ALORS
sConfigErreur est une chaîne
sConfigErreur = "Le fichier de configuration HONOLULU.INI n'a pas été trouvé dans le répertoire %1."

PageAffiche(PAGE_Erreur,ChaîneConstruit(sConfigErreur,fRepDonnées()))
FinProgramme()
FIN

// Analyse en mode compatibilité
HVérifieStructure("*", hCompatible)

//
// Connexion à la base de données
//

SI EnModeTest() ALORS
RegistreSupprimeValeur("HKEY_LOCAL_MACHINE\SOFTWARE\PC SOFT\WEBDEV\"+CS_VERSION+".0", "URLMODETEST")
FIN

gcnxConnexion est une Connexion
gcnxConnexionDemo est une Connexion
gsPassWordUser est une chaîne
gbModeDemo est un booléen

// Lectures des informations de configuration
LOCAL

sMotDePasse est une chaîne
sRepINI est une chaîne = fRepDonnées()

// Mot de passe administrateur
sMotDePasse = INILit("HFCS", "ADMIN_PASSWORD", CS_PASSWORD_CS, sRepINI + "\HONOLULU.INI")

// Décryptage du mot de passe si nécessaire
SI sMotDePasse <> CS_PASSWORD_CS ALORS
sMotDePasse = Décrypte(sMotDePasse, csCryptageMdp, crypteSécurisé, Vrai)
FIN

// Mot de passe des comptes utilisateur
gsPassWordUser = INILit("HFCS", "USER_PASSWORD", CS_PASSWORD_CS_UTILISATEUR, sRepINI + "\HONOLULU.INI")

// Décryptage du mot de passe si nécessaire
SI gsPassWordUser <> CS_PASSWORD_CS_UTILISATEUR ALORS
gsPassWordUser = Décrypte(gsPassWordUser, csCryptageMdp, crypteSécurisé, Vrai)
FIN

// Activation du mode DEMO
gbModeDemo = INILit("DEMO", "DEMOACTIVE", "OFF", sRepINI + "\HONOLULU.INI") = "ON"

// Extensions des pages AWP
AWP_EXT = EnModeTest() ? "AWP" SINON INILit("HONOLULU", "HAWP", "awp", sRepINI + "\HONOLULU.INI")

gcnxConnexion..BaseDeDonnées = INILit("HFCS", "DATABASE", "", sRepINI + "\HONOLULU.INI")
gcnxConnexion..Serveur = INILit("HFCS", "SERVER", "", sRepINI + "\HONOLULU.INI")
gcnxConnexion..Utilisateur = INILit("HFCS", "ADMIN_USERNAME", CS_UTILISATEUR, sRepINI + "\HONOLULU.INI")
gcnxConnexion..MotDePasse = sMotDePasse
gcnxConnexion..Provider = hAccèsHFClientServeur

// Connexion en mode ADMINISTRATEUR pour le lancement du site
HChangeConnexion("*", gcnxConnexion)
SI ErreurDétectée ALORS
dbgAssertion(Faux, ""+TAB+""+TAB+"Impossible de se connecter au serveur Hyper File.")
FIN

// Mot de passe
HPasse("*", csCryptageMdp)

SI EnModeAWP() ALORS

// On tente de récupère l'identifiant
gsIdentifiant = PageParamètre("AWPSESSIONID")

SI gbModeDemo ALORS

SI gsIdentifiant ~= "" ALORS
// Pas d'identifiant
ExceptionDéclenche(1, "Informations de session incorrectes")
RETOUR
FIN

// Au démarrage de Honolulu, l'utilisateur connecté possède les droits d'administration
// On en profite pour créer la base
gcnxConnexionDemo..BaseDeDonnées = gsIdentifiant
gcnxConnexionDemo..Serveur = gcnxConnexion..Serveur
gcnxConnexionDemo..Utilisateur = gcnxConnexion..Utilisateur
gcnxConnexionDemo..MotDePasse = sMotDePasse
gcnxConnexionDemo..Provider = gcnxConnexion..Provider

// Modifie la connexion
gcnxConnexion = gcnxConnexionDemo

// Connexion en mode ADMINISTRATEUR pour le lancement du site
HChangeConnexion("*", gcnxConnexion)

// Mot de passe
HPasse("*", csCryptageMdp)

FIN

SINON

// Crée un identifiant unique
gsIdentifiant = Remplace(GénèreClé(), "-", "")

// MODE DEMONSTRATION
SI gbModeDemo ALORS

// En mode démonstration, il faut :
// - Créer une base de données temporaire
// - Copier les données de la base source vers la base temporaire
// - Changer la connexion vers la base temporaire

// Au démarrage de Honolulu, l'utilisateur connecté possède les droits d'administration
// On en profite pour créer la base
gcnxConnexionDemo..BaseDeDonnées = gsIdentifiant
gcnxConnexionDemo..Serveur = gcnxConnexion..Serveur
gcnxConnexionDemo..Utilisateur = gcnxConnexion..Utilisateur
gcnxConnexionDemo..MotDePasse = sMotDePasse
gcnxConnexionDemo..Provider = gcnxConnexion..Provider

// Ouvre la connexion vers la nouvelle base de données
HOuvreConnexion(gcnxConnexionDemo)

// Copie les fichiers de données de la base source vers la base temporaire
sListeFichiers est une chaîne
sFichier est une chaîne
sListeFichiers = HListeFichier(gcnxConnexion)

POUR TOUTE CHAINE sFichier DE sListeFichiers SEPAREE PAR RC
HCopieFichier(gcnxConnexionDemo, sFichier, gcnxConnexion, sFichier, hCopieIndex)
FIN

// Ferme la connexion
HFermeConnexion(gcnxConnexionDemo)
HFermeConnexion(gcnxConnexion)

// Modifie la connexion
gcnxConnexion..BaseDeDonnées = gcnxConnexionDemo..BaseDeDonnées

// Connexion en mode ADMINISTRATEUR pour le lancement du site
HChangeConnexion("*", gcnxConnexion)

// Mot de passe
HPasse("*", csCryptageMdp)

// On crée un compte de démonstration
Utilisateur.DateHeureCréation = DateDuJour + Maintenant
Utilisateur.Login = "DEMOHONOLULU"
Utilisateur.MotDePasse = "DEMO"
Utilisateur.NomAffiché = "Compte de démo"
Utilisateur.Nom = "HONOLULU"
Utilisateur.Prénom = "Démo"
HAjoute(Utilisateur)

// Si le compte HFCS de l'utilisateur n'existe pas, on doit le créer
SI PAS HInfoUtilisateur(gcnxConnexion, "DEMOHONOLULU") ALORS

// Crée le compte HFCS de l'utilisateur
HUtilisateur.Login = "DEMOHONOLULU"
HUtilisateur.MotDePasse = gsPassWordUser
HAjouteUtilisateur(gcnxConnexion)

// Ajoute l'utilisateur dans la liste "Utilisateurs"
HInfoGroupe(gcnxConnexion, "Utilisateurs")
HGroupe.Utilisateurs += [RC] + "DEMOHONOLULU"
HModifieGroupe(gcnxConnexion, "Utilisateurs")
FIN

// Active les droits de base
HFCSDésactiveDroitAdministrateur(gcnxConnexion, "DEMOHONOLULU")
//

FIN

HOuvre("*", csCryptageMdp)
SI ErreurDétectée ALORS
dbgAssertion(Faux, ""+TAB+""+TAB+"Impossible de se connecter au serveur Hyper File.")
FIN

// Mise à jour de la collection de procédures du moteur de recherche
HMiseAJourCollection(gcnxConnexion, "pMoteurCS", Faux)
SI ErreurDétectée ALORS
dbgAssertion(Faux, ""+TAB+""+TAB+"Impossible de se connecter au serveur Hyper File.")
FIN
//
// Traitements des lignes de commandes
//

sCmdRSS est une chaîne
sCmdRSS = PageParamètre("rss")

// Flux RSS
SI sCmdRSS <> "" ALORS

// RSS sur les actualités
SI sCmdRSS DANS ("news", "actu") ALORS
ChaîneAffiche(GénèreFluxActualités(), "text/xml")
FinProgramme(Vrai)
FIN

FIN


sCmdVoir est une chaîne
sCmdVoir = PageParamètre("go")

// Accès direct à une page
SI sCmdVoir <> "" ALORS

SELON Minuscule(sCmdVoir)

// Voir une actualité
CAS "actu"
SI PageParamètre("actuid") <> "" ALORS
gsSuiteCmd = "PageAffiche(""PAGE_PortailActualites"", """ + PageParamètre("actuid") + """)"
SINON
gsSuiteCmd = "PageAffiche(""PAGE_PortailActualites"")"
FIN

// Accès direct au WIKI
CAS "wiki"
gsSuiteCmd = "PageAffiche(""PAGE_PortailWIKI"")"

// Accès direct à l'agenda
CAS "agenda", "calendar"
gsSuiteCmd = "PageAffiche(""PAGE_PortailAgenda"")"

// Accès direct à la messagerie
CAS "messagerie", "mail"
gsSuiteCmd = "PageAffiche(""PAGE_PortailMessagerie"")"

// Accès direct aux partages
CAS "partages", "share"
gsSuiteCmd = "PageAffiche(""PAGE_PortailPartages"")"

// Accès direct aux blogs
CAS "blogs"
gsSuiteCmd = "PageAffiche(""PAGE_PortailBlogs"")"

// Accès direct aux forums
CAS "forums"
gsSuiteCmd = "PageAffiche(""PAGE_PortailForum"")"

// Accès direct à l'annuaire
CAS "annuaire", "contacts"
gsSuiteCmd = "PageAffiche(""PAGE_PortailAnnuaire"")"

FIN

FIN

// Test du navigateur
NavigateurVérifieCompatibilité()
FIN