IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

PostgresDAC avec C++ builder


Sujet :

C++Builder

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut PostgresDAC avec C++ builder
    Bonjour,
    Je commence le développement avec C++ Builder 6 d'un logiciel connecté à une base Postgres. Je compte utiliser PostgresDAC V2.8.2 de microolap mais lors d'un premier essai avec un simple SELECT je n'ai que 25 enregistrements alors que la table en compte 150. Il s'agit pour l'instant de la version d'essai de PostgresDAC mais d'après mes informations elle possède les mêmes fonctionnalités que la version déclarée. Pouvez-vous me venir en aide.
    Merci d’avance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void __fastcall TForm1::Essaiselect1Click(TObject *Sender)
    {	
     
    	PSQLDatabase1->Connected = true;
     
            ANSINomTable = "station_01";
            ANSIReq = "SELECT * FROM \"" + ANSINomTable + "\"";
            Memo1->Lines->Add(ANSIReq);
     
            PSQLQuery1->Close();
            PSQLQuery1->SQL->Clear();
            PSQLQuery1->SQL->Add(ANSIReq);
            PSQLQuery1->ExecSQL();
            PSQLQuery1->Open();
     
            Memo1->Lines->Add(IntToStr(PSQLQuery1->RecordCount) + " enregistrements.");
     
            PSQLDatabase1->Connected = false;
    }

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Citation Envoyé par Erik80 Voir le message
    Bonjour,
    Je commence le développement avec C++ Builder 6
    Bonjour,
    Tu commences ?
    Tu te rends compte que C++Builder 6 a plus de 10 ans !
    Il existe maintenant C++Builder 16 plus connu sous le nom de C++Builder XE2 !

    Tes composants PostgresDAC sont récents, rien ne garanti que dans 2 ou 3 ans, microolap fasse l'effort de maintenir des composants avec une telle différence de version !

    Dans d'autres lib, il existe, les options comme PackedRecord ou autres propriétés similaires comme AutoFetchRecord ou AsyncRecord ...
    Tu dois avoir dans PostgresDAC surement la même chose dans l'objet Connexion et l'objet Query !

    EDIT, juste en 15 seconde via google, j'ai trouvé ceci TPSQLQuery - Limit Query Rows


    C'est des options permettant de réduire le flux et améliorer les performance SQL
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai toujours le même problème avec Builder XE (je me modernise...) que je viens d'installer et PostgresDAC. J'ai fait des recherches sur le net et je n'ai pas trouvé de solution. Il n'y a pas, d'après la doc en ligne de PostgresDAC, de fonction ou propriété telle que PackedRecord, AutoFetchRecord ou AsyncRecord. Juste un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PSQLQuery1->FetchAll();
    sans effet.

    En l'absence de solution je vais, peut-être , me résigner à changer de composant pour l'accès à Postgres.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Citation Envoyé par Erik80 Voir le message
    Il n'y a pas, d'après la doc en ligne de PostgresDAC, de fonction ou propriété telle que PackedRecord, AutoFetchRecord ou AsyncRecord
    le plus proche serait TPSQLDataset.BlockReadSize
    Que donne TPSQLQuery.RowsAffected ? 0 ? 25 ? 150?

    Si Pro, Ent ... Utilise ADO
    TADOQuery, suffit juste de bien créer la ConnectionString du TADOConnection

    Si Starter ... euh ...


    Je ne connais pas les droits en PostGreSQL (j'ai juste maintenu des SQL durant un développement PHP MySQL qui devait aussi tourner en PG)

    Est-ce que le droit SELECT est valable pour l'ensemble de la Table (comme bcp de SGDB) ?
    Il n'ont pas poussé le vice à gérer des droits par ligne ?

    FecthAll, oui cela peut correspondre, en théorie, cela doit forcer la récupération complète des données !
    Ce qui peut signifier que par défaut, ce n'est pas le cas !


    Sinon RecordCount n'est pas forcément très fiaible !
    Boucle avec NEXT et compte !
    Possible qu'au fur et à mesure RecordCount augmente !
    Teste avec un TDBGrid TDataSource connecté sur le PSQLQuery1
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    L'interrogation de TPSQLQuery->RowsAffected donne 0.
    J'ai aussi fait une boucle avec NEXT qui m'a donné 25 et un RecordCount toujours à 25. Le test avec un TDBGrid TDataSource connecté sur le PSQLQuery1 me donne aussi 25 lignes.

    J'ai créé les tables simplement à l'aide de requête. Je ne suis pas spécialiste des droits avec postgres mais je n'ai pas crée de restriction à l’accès par SELECT sur un nombre de lignes qui serrait limité à 25 (je vais vérifier quand même..).

    Je vais tester l'accès par ADO.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    J'ai finalement installé psqlODBC version 32 bits (je suis sous Windows 7 - 64 avec postgreSQL9.1 version 32 bits). J'ai créé le lien ODBC en lançant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Windows\SysWOW64>odbcad32
    en ligne de commande.
    Ensuite avec un composant TQuery lié à l'alias ODBC de la base et un TDataSource lié au TQuery, j'ai accès à toutes mes données via une requête dans TQuery.
    Je n'ai toujours pas compris pourquoi je n'y arrivais pas avec posgresDAC.
    Merci de ton aide.

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    Si tu restes en ODBC utilise plutôt TADOQuery
    Le TQuery est dépendant du BDE, je ne pensais même pas qu'il fonctionnait en Win64 !
    TADOQuery n'aura pas de besoin de déploiement autre que le driver ODBC
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ok merci ShaiLeTroll, ça fonctionne parfaitement avec un TADOConnection, un TADOQuery, un TDataSource lié à une TDBGrid.
    La chaîne de connexion est celle générée par le constructeur de chaîne dans Builder XE (double-clic dans ConnectionString de l'inspecteur d'objet).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ADOConnection2->ConnectionString = "Provider=MSDASQL.1;Password=MonMotDePasse;Persist Security Info=True;User ID=postgres;Data Source=AliasODBC;Initial Catalog=MaBase;";
    ADOConnection2->Connected = true;
    ADOQuery2->Close();
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("SELECT * FROM table01");
    ADOQuery2->ExecSQL();
    ADOQuery2->Open();
    Je vais me contenter de cette solution si la seule contrainte par rapport à un composant tel que PostgresDAC est de créer un lien ODBC et au préalable installer le driver.

Discussions similaires

  1. Utiliser DirectX 9 avec C++Builder
    Par Olivier Constans dans le forum DirectX
    Réponses: 2
    Dernier message: 27/06/2005, 11h30
  2. wxWidgets avec C++ Builder
    Par Laurent S dans le forum C++Builder
    Réponses: 8
    Dernier message: 15/06/2005, 11h14
  3. Fonts avec c++ Builder
    Par Arnaud-h dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/03/2004, 11h04
  4. LoadLibrary avec C++ Builder 6 sous Windows 2000
    Par tgempp dans le forum C++Builder
    Réponses: 15
    Dernier message: 13/11/2003, 19h19
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo