PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → OLEDB avec PostGres
OLEDB avec PostGres
Débuté par guest, 24 jan. 2006 16:09 - 9 réponses
Posté le 24 janvier 2006 - 16:09
Dans mon combat pour remplacer Hyperfile, après avoir tester avec succès l'accès ODBC vers la base PostGreSQL, je suis en train de tester l'accès en OLEDB toujours vers la même base.

Ca ne fonctionne pas, et l'erreur retournée n'est pas parlante.

J'ai utilisé la commande HOuvreConnexion mais mes paramètres ne lui plaisent pas.

Est ce que l'un d'entre vous a un exemple qui fonctionne ?

Merci

Zag
Posté le 24 janvier 2006 - 16:43
Bon, je progresse mais l'execution du programme généré par le RAD ne fonctionne pas.
Voici la déclaration d la connexion qui elle, fonctionne :

Nom : Test
Libellé : Test
Connexion par : PostGreSQL OLE DB Provider
Source données : 127.0.0.1
Base de données : NE RIEN METTRE
Utilisateur : toto Mot de passe : toto

puis onglet avancé:
Info étendues : Location=<mettre ici la base créée dans PostGres>

Mais au lancement du programme, il me dit qu'un certain champ de la table n'existe pas dans PostGres. Je pense que ca vient du schémé qui s'appelle "Public" chez moi.

je continue mes investigations

Zag
Posté le 24 janvier 2006 - 16:50
Lorsque j'ai commencé mes tests avec MaxDb, j'ai aussi voulu tester l'accès OLEDB. Après avoir bien galéré pour le faire marcher avec SQLConnecte, j'ai bien vite abandonné pour retourner à l'ODBC : les performances étaient franchement mauvaises.
Actuellement j'utilise toujours une connection via ODBC, et je n'utilise pas les ordres h* ( tout passe par des requêtes SQL ).

Frédéric.
Posté le 24 janvier 2006 - 17:37
Est ce que ca s'applique à toutes les bases, la formule ODBC > OLEDB ?

Car peut etre que je m'embête pour rien.
Je pensais que OLEDB s'intégrais mieux à Windev que ODBC. La preuve, le RAD fontionne sur OLEDB et pas en ODBC.
Quoi que, je viens de tomber sur le tableau "Aide à l'accès aux base de données" (en lancant le RAD sur une table) et il me dit qu'il faut préconiser ODBC pour PostGreSQL.

Ce qui est bizarre, c'est qu'à l'execution des programmes, il me dit que la colonne n'existe pas dans la base et qu'il faut refaire une synchro entre l'analyse et la base externe et quand je la fais, il me dit qu'il n'y a pas de difference.

Je soupconne le schéma ou se trouve ma table ....

Suite au prochain épisode car je continue à chercher

Zag
Posté le 24 janvier 2006 - 17:38
A aucun moment, l'utilitaire de connexion ne m'a demandé le schéma où se trouve les tables.
C'est inquiétant d'autant plus que mon but futur est de créer depuis windev des bases de donnée dans des schémas qui seront également créés depuis windev.

Avant, je créais des répertoires qui contenaient les fichiers hyperfile. Demain, j'aimerais créer des schémas qui contiendront des tables.

Zag
Posté le 24 janvier 2006 - 18:04
J'utilise aussi des schémas pour mes tables, mais je fais tout "manuellement" : pas de RAD, pas d'analyse. Tout passe par des commandes SQL*, et je me tape le code SQL des requêtes.

Frédéric.
Posté le 24 janvier 2006 - 18:29
Ca va se finir comme çà, je le sens bien.

A quel endroit décris tu le schéma, dans tes commandes Sql.

Par exemple: select nom, prenom from public.individu ?

Zag
Posté le 25 janvier 2006 - 09:21
Désolé si je suis un peu hors sujet mais....
Si vous travaillez en ODBC vous n'avez plus de dataBinding avec les composants des fenêtres?
Comment faites-vous pour créer des tables en fetch partiel?
Posté le 25 janvier 2006 - 10:19
C'est tout à fait çà. J'ai créé un utilisateur par application, qui est propriétaire des tables de cette application. J'ai également créé un role par application, avec justes les droits nécessaires à cette application.
J'ai ensuite créé un utilisateur "par utilisateur réel". Lorsque quelqu'un utilise une application, il se connecte à la base avec son propre login ( j'ai fait une connection automatique, avec le login de Windows ). Ensuite, je fait un "set role XXXX" pour que l'utilisateur ait les droits nécessaires pour faire tourner l'application.
De cette façon, certaines applications partages des tables communes ( fichier article, client... par exemple ).
Je n'ai plus qu'à préfixer le nom des tables avec le nom de l'utilisateur qui en est propriétaire dans mes requêtes.

Frédéric.
Posté le 20 février 2006 - 16:36
Si la colonne en question est en majuscule ou mélange maj/min alors ton problème viens de là.
Dans le code windev, il faut que chaque référence à cette colonne soit triplement quotée.
ex:

cmd="SELECT MAColonne, ... from matable" est envoyée à postgres comme select MAColonne from matable
réponse de postgres macolonne n'existe pas
par contre cmd="SELECT ""MAColonne"", ... from ma table est envoyé à postgres comme select "MAColonne" from matable
S'ils ne sont pas quotés, les noms des champs et tables postgres sont transformés en minuscules.