IbClientDataSet probleme avec methode FindField et Find
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:
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:
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