PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → PostGreSQL et HDeclareExterne()
PostGreSQL et HDeclareExterne()
Iniciado por Marc77, 11,mar. 2016 11:07 - 5 respuestas
Miembro registrado
65 mensajes
Publicado el 11,marzo 2016 - 11:07
Bonjour,
Je migre une base de MySQL vers PostGreSQL.
Avec MySQL les déclarations de tables externes fonctionnent très bien.

Avec PostGresSQL je ne parviens pas à réutiliser la partie du programme qui déclare les tables externes.
J'ai recréer une base avec une table_a et fait un nouveau projet et idem.

//J'ai tenté plusieurs syntaxe
HDéclareExterne("test.public.table_a","matable","postgres","motdepasse","127.0.0.1",hAccèsNatifPostgreSQL,hOLectureEcriture)
HDéclareExterne("test.table_a","matable","postgres","motdepasse","127.0.0.1",hAccèsNatifPostgreSQL,hOLectureEcriture)
HDéclareExterne("table_a","matable","postgres","motdepasse","127.0.0.1",hAccèsNatifPostgreSQL,hOLectureEcriture)
//et aussi en passant par la connexion de l'analyse
HDéclareExterne("test.public.table_a","matable",desc_connexion)

Avez vous déjà rencontré ce problème ?
Ais je oublié de faire quelque chose !
Dans mon programme, les connexion se passent bien.
Je parcours les tables déclarées dans l'analyse sans problème.
J'ai placé la librairie LIBPQ.DLL dans les répertoires de windev et dans le répertoire de l'application

= = = = = = =
ERREUR :
Que s'est-il passé ?
Erreur de l'accès natif PostgreSQL.
Numéro d'erreur = 30

Le fichier <test.public.table_a> n'existe pas.

Code erreur : 73001
Niveau : erreur non fatale
Code erreur WD55 : 3001

Dump de l'erreur du module 'wd210hf.dll' (21.0.76.0).
Identifiant des informations détaillées (.err) : 72801
Informations de débogage :
IEWDPSQL=8.3
Module=<WDPSQL>
Version=<21.0.6.0>
Couche client : internal
Provider : WinDevPostgreSQL
Utilisateur : postgres
Source de données : 127.0.0.1
Unicode supporté : 1
Code page du WL : 1252
Code page de la connexion : UTF-8
Informations supplémentaires :
EIT_LOGICALTABLENAME : <test.public.table_a>
EIT_NATIVECODE : <30>
EIT_INFOCLIENT : <7.4.23>
EIT_INFOSERVEUR : <9.4.6>
Miembro registrado
339 mensajes
Publicado el 11,marzo 2016 - 18:36
Salut;

J'ai essayé d’utiliser cette syntaxe mais je n'ai pas un message d'erreur et pas de connexion.
Cette commande me renvoie 0

Il existe aussi d'autre commande qui existe sous MYSQL et non pour PostgreSQL.

Est ce que les webservices fonctionnent avec PostgreSQL ?


J'ai essayé depuis 20 jours d'utiliser Postgresql, Je l'ai trouvé très rapide mais en contre partie j'ai plein de problèmes.
j'ai gardé HFSQL.

Bon dév.
Publicado el 13,agosto 2019 - 10:32
Bonjour,

J'ai le même problème.
Avez-vous résolu le votre ?
Le seul moyen de m'en sortir est de créer une analyse avec le fichier, mais je veux éviter, car la création de table est dynamique.
Miembro registrado
2.682 mensajes
Publicado el 13,agosto 2019 - 11:16
Bonjour,

Je ne comprends pas votre problème, pourquoi ne pas travailler avec des requêtes et faire des HExecuteRequeteSQL(). Pas de soucis de déclaration de table dans ce cas précis.

La partie de votre analyse fonctionne et pour les tables spécifiques une requête.

--
Cordialement,

Philippe SAINT-BERTIN
Publicado el 13,agosto 2019 - 11:27
Pourquoi ne pas essayer SQLManagerX


http://www.sqlmanagerx.com/
Publicado el 13,agosto 2019 - 14:04
Je n'ai plus de soucis, voici la fonction qui déclare les tables externes, créées dynamiquement par programmation et utilisées dans mon applications hors analyse.
Cela permet ensuite d'utiliser les fonctions H... sur ces tables

Procedure Declare_Table(LOCAL sNom_Table est une chaîne, LOCAL sNom_Alias est une chaîne, LOCAL bSilence est un booléen=Faux)
sNom_Table = Minuscule(sNom_Table)
sNom_Alias = Minuscule(sNom_Alias)
SI PAS HFerme(sNom_Table) ALORS
MessageUtilisateur("HFerme a échoué sur "+sNom_Table,HErreurInfo(hErrComplet), Vrai, EstHErreurInfo)
FIN
SI PAS HAnnuleDéclaration(sNom_Table) ALORS
MessageUtilisateur("HAnnuleDéclaration a échoué",HErreurInfo(hErrComplet), Vrai, EstHErreurInfo)
FIN

HAnnuleAlias(sNom_Alias)

SI PAS HDéclareExterne(sNom_Table,sNom_Alias,gcnx_Serveur) ALORS
SI PAS bSilence ALORS
MessageUtilisateur("HDeclareExterne",HErreurInfo(hErrComplet), Vrai, EstHErreurInfo)
FIN
FIN