PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → HFSQL CS externe sans analyse
HFSQL CS externe sans analyse
Débuté par Francois C., 20 juin 2014 12:34 - 7 réponses
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 20 juin 2014 - 12:34
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)
Membre enregistré
1 939 messages
Popularité : +53 (65 votes)
Posté le 20 juin 2014 - 14:29
Bonjour,

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

--
Bon dev.
Jean-Pierre
Posté le 20 juin 2014 - 14:34
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 :-)
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 20 juin 2014 - 15:17
Merci pour vos réponses =)

@J.Fernandez : Super ça fonctionne niquel =)
Posté le 23 septembre 2021 - 11:39
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 :)
Membre enregistré
88 messages
Popularité : +2 (2 votes)
Posté le 21 mars 2022 - 14:02
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
Membre enregistré
121 messages
Popularité : +3 (3 votes)
Posté le 18 décembre 2023 - 14:16
Olivier,

J'ai le même problème que vous sur le Windev27. Avez vous trouvé une solution?
Membre enregistré
1 939 messages
Popularité : +53 (65 votes)
Posté le 18 décembre 2023 - 16:59
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