Soucis Postgresql et Query
j'ai un soucis avec Postgresql pour recupérer des données textes.
Pour l'ouverture de session et database, qui se fait sans soucis :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| void TDataRegistre::OpenDatabase ( TDatabase *Database, int Base, AnsiString DatabaseName, TSession *Session, AnsiString SessionName)
{
Database->AliasName=DSNListe[Variante]->Strings[Base];
if (SessionName!=NULL) Database->SessionName=SessionName;
Database->DatabaseName=DatabaseName;
Database->Params->Add(usern_postgres);
Database->Params->Add(passw_postgres);
Database->LoginPrompt=false;
if (SessionName!=NULL) Session->OpenDatabase(DatabaseName);
else Database->Open();
} |
Et le problème vient du TQuery :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| bool TDataRegistre::SELECT ( TQuery *Query, int Variante, int Base, AnsiString DatabaseName, AnsiString SessionName, AnsiString &Query_Str, int Limit)
{
if (DatabaseName==NULL)
{ SessionName="Session"+Variante;
DatabaseName="Base"+Variante;
}
AnsiString QuerySELECT_Str;
QuerySELECT_Str ="SELECT ";
QuerySELECT_Str+=Query_Str;
if (Limit>0)
{ QuerySELECT_Str+=" LIMIT ";
QuerySELECT_Str+=Limit;
}
if (SessionName!=NULL) Query->SessionName=SessionName;
Query->DatabaseName=DatabaseName;
Query->Close();
Query->SQL->Clear();
Query->SQL->Add(QuerySELECT_Str);
Query->Open();
return true;
} |
Tout fonctionne bien quand dans ma requette SQL il n'y a que des variables ou des dates, mais dès que j'essaye de récupérer un texte, j'ai un plantage :
Quand je n'ai qu'un texte a récupérer dans ma requette SQL, le plantage ce fait lors de la demande :
AnsiString mon_texte=QueryTable->FieldValues["mon_texte"].operator AnsiString();
A noter que la variable QueryTable->FieldCount, m'indique que FieldValues["mon_texte"] n'existe pas.
Et quand je demande a récupérer plus d'une variable texte, le plantage ce fait dès l'appel :Query->Open();
Quelqu'un a une idée ?
A noter que la meme requete SQL faite en php sur ma base postgres fonctionne très bien.
De meme le code c++ ecrit ici, fonctionne très bien sur une base access (avec deux trois modifs pour l'adapter à access).