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
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 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(); }
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
Partager