PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Changer lien avec base de données SQL Server avec connecteur natif SQL Server
Changer lien avec base de données SQL Server avec connecteur natif SQL Server
Débuté par Roger Silva, 17 mar. 2025 18:37 - 3 réponses
Posté le 17 mars 2025 - 18:37
Bonjour,

Voila mon problème :
J'ai plusieurs servers SQL Server, qui ont les mêmes bases de données SQL Server.
Je dois paramétrer l'accès à ces tables suivant un choix utilisateur.

Dans l'analyse, j'ai défini un login, mot de passe, nom server, nom base de données, et je dois reparamétrer la connexion suivant le serveur choisi :

HFermeConnexion(MaConnexionSQL)

NumConnexion est un entier
NumConnexion = HDécritConnexion(MaConnexionSQL,"Toto","Titi",Paramètre.NomServerSQL,Paramètre.NomBaseSQL,hAccèsNatifSQLServer,hOLecture)


SI NumConnexion = 0 ALORS
// La connexion a échoué : affichage d'un message explicatif
SQLInfoGene()
Erreur("La connexion à la source de données " + Paramètre.NomBaseSQL + " a échoué." + RC + ...
"Code erreur : " + SQL.Erreur + RC + SQL.MesErreur)
Ferme
FIN

//
HChangeConnexion(Buchung,MaConnexionSQL)
HChangeConnexion(,MaConnexionSQL)

Jusqu'à ce point pas d'erreur.

J'exécute une requête sur la table Buchung, et dès que je veux parcourir la requête voici l'erreur que j'ai :

Le mécanisme de sécurité HFSQL s'est déclenché lors d'un parcours intégré du fichier 'REQ_SelEcritures' sur la rubrique ''.
Une erreur de mot de passe est survenue sur la fonction 'HExécuteRequête' précédente et n'a pas été traitée.
Membre enregistré
11 messages
Posté le 18 mars 2025 - 11:20
Bonjour,
Il doit surement manquer l'appel à la fonction HPasse().
Il doit exister un mot de passe sur un ou plusieurs fichiers de données.
Bien cordialement,
NN12
Posté le 19 mars 2025 - 16:36
NN12 a écrit :
Bonjour,
Il doit surement manquer l'appel à la fonction HPasse().
Il doit exister un mot de passe sur un ou plusieurs fichiers de données.
Bien cordialement,
NN12


En fait, le mot de passe est sur l'accès au serveur SQL server. Les fichiers en temps que tels n'ont pas de mot de passe d'accès.
J'ai défini es mots de passe dans l'analyse.
Par contre, comme nous avons plusieurs serveurs différents, il me faut pouvoir paramétrer l'accès à chaque server SQL.
Est-ce possible et si oui comment ?
Toutes mes tentatives sont sans succès ...
Membre enregistré
4 211 messages
Posté le 19 mars 2025 - 21:11
Bonjour,
Roger Silva a écrit :
J'ai défini es mots de passe dans l'analyse.

Le MDP est propre au serveur, il faut le définir lors de la création de la base, c'est ce MDP qui sera utilisé lors de la description de la connexion.
Par contre, comme nous avons plusieurs serveurs différents, il me faut pouvoir paramétrer l'accès à chaque server SQL.
Est-ce possible et si oui comment ?

Il faut définir une connexion par serveur (le login/MDP dans l'analyse est inutile voire dangereux.)
A la volée
cnxServeur1 est Connexion
cnxServeur2 est Connexion
saChoix est chaîne

<BLOC Description de la connexion à Serveur1>
cnxServeur1.Utilisateur = "Toto1"
cnxServeur1.MotDePasse = "MDP1"
cnxServeur1.Serveur = "Serveur1:PortServeur1"
cnxServeur1.BaseDeDonnées = "MaBase"
cnxServeur1.Provider = hAccèsNatifSQLServer
cnxServeur1.Accès = hOLecture
<FIN>

<BLOC Description de la connexion à Serveur2>
cnxServeur2.Utilisateur = "Toto2"
cnxServeur2.MotDePasse = "MDP2"
cnxServeur2.Serveur = "Serveur2:PortServeur2"
cnxServeur2.BaseDeDonnées = "MaBase"
cnxServeur2.Provider = hAccèsNatifSQLServer
cnxServeur2.Accès = hOLecture
<FIN>

Saisie("Entrez le nom du serveur",saChoix)

SELON saChoix
CAS "Serveur1"
HChangeConnexion(Buchung,cnxServeur1)
HExécuteRequête(REQ_SelEcritures,cnxServeur1)
CAS "Serveur2"
HChangeConnexion(Buchung,cnxServeur2)
HExécuteRequête(REQ_SelEcritures,cnxServeur2)
AUTRE CAS
Erreur(ChaîneConstruit("%1 inexistant",saChoix))
FIN


--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM