Bonjour
j'essaie de stocker des donne en cache avec IbClientDataSet

j'ai un bouton ou je creer en cache mes donn�es via une requete SQL venant de FireBird

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
 
if( IbSgbd->IBClientDataSet->Fields->FindField("ds_id")==NULL)
// if(IbSgbd->IBClientDataSet->FieldList->Find("ds_id")==NULL)
{
 //creation d'un champ de type integer
 
 IbSgbd->IBClientDataSet->FieldDefs->Add("ds_id",ftInteger,0);
 IbSgbd->IBClientDataSet->CreateDataSet();
}
de meme j'ai essaye comme cela sans succes

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
TField* pField= NULL;
       pField=IbSgbd->IBClientDataSet->Fields->FindField("ds_id");
 
 
        if(pField==NULL )
       // if(IbSgbd->IBClientDataSet->FieldList->Find("ds_id")==NULL)
        {
        IbSgbd->IBClientDataSet->FieldDefs->Add("ds_id",ftInteger,0);
        IbSgbd->IBClientDataSet->CreateDataSet();
        }


lorsque je clique sur la premiere fois sur le bouton je rentre dans le test normal pour moi

lorsque je relique une seconde fois je rentre dans le test de nouveau
et j'ai l'exception lanc�e "un champ ds_id existe d�j�"

J'ai regarde l'aide sur ces m�thodes Find et FindField elle renvoie null lorsque le champ n'est pas trouv�e .

Je pourrais utiliser le m�thode RecordCount mais cela ne me conviens pas
Qui aurait une id�e pour "betonner " mon test ?


merci d'aider un debutant