PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → HFSQL CS externe sans analyse
HFSQL CS externe sans analyse
Started by Francois C., Jun., 20 2014 12:34 PM - 7 replies
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on June, 20 2014 - 12:34 PM
Bonjour,

Je cherche a effectuer des requêtes sur une base HFSQL C/S distante, sans utiliser d'analyse dans mon projet.

En effet, il s'agit d'une requête au sein d'un objet, qui peut être réutilisé dans plusieurs projets.. je ne souhaite pas devoir intégrer l'analyse a chaque projet.. ni songer a modifier chaque analyse en cas de modif de la base.

A priori je me connecte bien sur la base avec ceci :
cnxMaConnexion..Utilisateur = sUtilisateur
cnxMaConnexion..MotDePasse = sPassWord
cnxMaConnexion..Serveur = sServeur+":"+NumériqueVersChaîne(nPort)
cnxMaConnexion..BaseDeDonnées = "MaBase"
cnxMaConnexion..Provider = hAccèsHFClientServeur
cnxMaConnexion..Accès = hOLectureEcriture

SI PAS HOuvreConnexion(cnxMaConnexion) ALORS Info(HErreur(errComplet))


Mais une fois connecté, je ne vois pas comment exécuter de requête sur une table précise de la base "MaBase" ..

Merci de votre aide =)

Par ailleurs, est-il sûr d’inscrire en dur dans le code, l'ip, le login et le mot de passe du serveur HFSQL ? il y a t'il un risque ? (genre reverse du prog en asm et découverte des infos)
Registered member
1,936 messages
Popularité : +53 (65 votes)
Posted on June, 20 2014 - 2:29 PM
Bonjour,

Voir Description de fichier (Type de variable) :
http://doc.pcsoft.fr/fr-FR/?1514065&name=description_fichier_type_variable

--
Bon dev.
Jean-Pierre
Posted on June, 20 2014 - 2:34 PM
Bonjour,

j'ai eu à faire ce genre connexion et de requête pour un projet et voici comment je m'y suis pris (je ne sais pas s'il y a de façons plus propre mais ça a le mértie de marcher !

1. Après ta connexion, déclarer une source de données qui s'appelle pareil que ta table distante (fichier CLIENT dans mon exemple)
2. Faire un HDéclareExterne("CLIENT.FIC", CLIENT, VariableConnexionCS) pour déclarer ton fichier distant
3. Faire un hExecuteRequete() avec une requête du style SELECT CLIENT.NOM, CLIENT.PRENOM FROM CLIENT WHERE CLIENT.NOM LIKE '%D'

J'espère que c'est assez clair :-)
Registered member
1,623 messages
Popularité : +100 (114 votes)
Posted on June, 20 2014 - 3:17 PM
Merci pour vos réponses =)

@J.Fernandez : Super ça fonctionne niquel =)
Posted on September, 23 2021 - 11:39 AM
Bonjour à vous,

Je me permet de répondre à ce sujet des années après, car il m'a permis de régler un soucis qui n'est pas tout à fait le même :

J'ai une application qui me sert à collecter des données en provenance de plusieurs bases (HFSQL, SQLSERVER, MySQL et même des fichiers EXCEL) afin de les compiler et les mettre à disposition dans une seule et même base pour faire du BI.

J'étais confronté au problème suivant :
- dans la base de données A, j'ai une table qui s'appelle PROJETS
- dans la base de données B, j'ai une table qui s'appelle PROJETS

L'analyse WINDEV ne me permet pas de mettre dans mon analyse deux fichiers qui ont le même nom, même si la source et la structure sont différentes.

Afin de pouvoir requêter quand même sur la seconde table projet, j'ai utilisé HDéclareExterne de la manière suivante :
HDéclareExterne("PROJETS.fic", "PROJETS_2", BDD_B)

Je peux ensuite requêter sur cette table PROJETS de ma base B dans mes requêtes avec par exemple
SELECT * FROM PROJETS_2

Ici, je n'ai pas déclaré de source de données au même nom que ma table distante, et j'ai même donné un nom différent dans HDéclareExterne ce qui m'a permis d'outrepasser cette limite des analyses WINDEV.

Malgré tout, merci car ça m'a mis sur la piste, et peut-être un jour quelqu'un avec le même problème que moi tombera sur ce message :)
Registered member
88 messages
Popularité : +2 (2 votes)
Posted on March, 21 2022 - 2:02 PM
Bonjour,
J'ai exactement le même souci.
Deux bases de données HFSQL client/Serveur A et B avec chacune un fichier BUDGET, fichiers auxquels je voudrais avoir accès en même temps.

Pour ce faire, J'utilise la syntaxe la syntaxe de HDeclareExterne suivante :

gpBudgetPlanV2cnx est une Connexion

gpBudgetPlanV2cnx..Provider = hAccèsHFClientServeur
gpBudgetPlanV2cnx..Utilisateur = "Admin"
gpBudgetPlanV2cnx..MotDePasse = ""
gpBudgetPlanV2cnx..Serveur = "NomDuPC:4900"
gpBudgetPlanV2cnx..BaseDeDonnées = "BudgetPlanV2"
gpBudgetPlanV2cnx..Cryptage = hCryptageNon
//
xNbEnreg est un entier
//On ouvre la connexion vers BugdetPlanV2 pour lecture de la table BUDGET
SI PAS HOuvreConnexion(gpBudgetPlanV2cnx) ALORS
Erreur("Impossible d'établir une connexion vers BUDGETPlanV2")
RETOUR
FIN
//
BudgetWinplan est une Source de Données
//
SI PAS HDéclareExterne(".\budget.fic","BudgetWinplan",gpBudgetPlanV2cnx) ALORS
Erreur("Impossible de créer l'alias"+RC+HErreurInfo())
RETOUR
SINON
xNbEnreg = 0
POUR TOUT BudgetWinplan
xNbEnreg+=1
Trace(xNbEnreg+" "+BudgetWinplan.IDBUDGET)
FIN
FIN


J'ai un plantage windev sur le POUR TOUT, avec le message suivant, je ne trouve pas où est l'erreur, merci pour vos conseils :

Le mécanisme de sécurité HFSQL s'est déclenché lors d'un parcours intégré du fichier '_SOURCE_BudgetWinplan_1' sur la rubrique ''.
La source de données <_SOURCE_BudgetWinplan_1> n'est pas initialisée.
- S'il s'agit d'un fichier de données, le fichier n'a pas été trouvé dans l'analyse <C:\Mes Projets\TestBudget\TestBudget.wdd> ou n'a pas été décrit avec les fonctions HDéclare / HDéclareExterne.
- S'il s'agit d'une requête ou d'une vue, l'exécution a peut-être échoué.
Pour récupérer l'erreur correspondante, testez le résultat des fonctions HExécuteRequête / HExécuteRequêteSQL / HCréeVue.

Pile des appels :
Clic sur Bouton2 (Fen_test.Bouton2), ligne 16

Date : 21/03/2022 12:25:01
Projet : TestBudget

Informations supplémentaires :
Code erreur : 70018
Code erreur WD55 : 18
Module : wd260hf.dll (01F260101d - 26.0.313.5)

Informations de débogage :
IEWDHF=1.20
Module=<WDHF>
Version=<26.0.313.5>
EIT_PATHWDD : <C:\Mes Projets\TestBudget\TestBudget.wdd>
EIT_LOGICALTABLENAME : <_SOURCE_BudgetWinplan_1>
EIT_TYPE_WDFILE : <2>
EIT_IDCODE : <18>

--
Olivier Heckel
Registered member
121 messages
Popularité : +3 (3 votes)
Posted on December, 18 2023 - 2:16 PM
Olivier,

J'ai le même problème que vous sur le Windev27. Avez vous trouvé une solution?
Registered member
1,936 messages
Popularité : +53 (65 votes)
Posted on December, 18 2023 - 4:59 PM
Bonjour,

On ne sait jamais et suite à des commentaires lus ailleurs, tu peux essayé de ne pas déclarer l'Alias.
Essayes aussi avec un hLitPremier() pour voir...

--
Bon dev,
Jean-Pierre