Bonjour,
j'ai un application ou il y a :
un sgbd firebird 4 table
3 dbgrids
3 TClientDatset
Veillez s'il vous plait regarder l'image "Datamodule.JPG " pour voir les composants présents : (si l'image n'apparait pas )
Ces Dgrids sont liés via le maitre/esclave tel que sont lié dans le sgbd
Lorsque dans la table maitre(Personne) j'ajoute /je supprime ou je modifie
que se soit en cache ou le faire réellement les écritures/modification/suppression dans la base de données ne posent pas problème.
La ou j'ai un bug, c'est quant j'ajoute un enreg dans la table esclave (MAIL)
l'ajout en cache se fait bien cependant lorsque je quitte
j'ai ce message :
souvent après j'ai une violation d’accèsLe projet a provoqué une classe d'exception EDBClient avec le message 'Opération non applicable.'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
Dans le destructeur de TDataModule j'avais mis du code celui faisait des close() des DataSet , j'ai complétement mis en commentaire ce code et re compilée (rebuild all) et j'ai toujours la même erreur
C'est toujours a ce moment la que se produit l'erreur
lorsque j'ajoute un élément dans la table maitre (Personne) pas de pb
Voici le code d'ajout table esclave MAIL :
after Insert:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DataModule1->CDSMail->Append(); DataModule1->CDSMail->FieldByName("MAIL")->AsString="toto@free.fr"; DataModule1->CDSMail->Post();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void __fastcall TDataModule1::CDSMailAfterInsert(TDataSet *DataSet) { CDSMail->AggregatesActive=true; if(VarIsNull(CDSMail->Aggregates->Items[0]->Value())){ id=0; }else{ id=CDSMail->Aggregates->Items[0]->Value() ; // lit la valeur du champ en cours } _F_ID_MAX_MAIL=id+1 ; // var globale portée classe TDataModule memorise ID_MAIL CDSMail->FieldByName("ID_MAIL")->AsInteger=_F_ID_MAX_PERS; }
Conclusion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 __fastcall TDataModule1::~TDataModule1() { //Destructeur : liberation de ressources //FreeDataModule(); }
si j'ajoute un ereng dans la table secondaire en cache , je quitte plantage
D’où peut venir cette exception ?
merci je tourne en rond
en vous remerciant
Partager