[D7] connaître un type d'exception et la gérer
Bonjour,
j'ai créé une base via les composants AbsoluteDataBase http://www.componentace.com/ .
Lorsque mon champ (obligatoire) est vide, j'ai une exception de type EDataBaseError avec message 'Field 'Nom' must have a value'
j'aimerais lever cette exception avec un petit message de type mtWarning... mais je ne sais pas comment déclarer cette exception.
dans mon code, j'ai déjà des exceptions lorsque les enregistrements ont été modifiés en parallèle (accès concurrents) et qui fonctionnent.
est-ce que ce type d'exception (EDatabaseError) peut-être insérer dans ces exceptions ? si non, est-ce que vous connaîtriez le moyen de gérer cette exception ?
Merci d'avance.
ci dessous la partie de mon code gérant les exceptions lors de la validation de l'enregistrement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| procedure TForm2.ABSTable1PostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
Action:=daAbort;
if (E is EABSEngineError) then
begin
if (EABSEngineError(E).ErrorCode = ABS_ERR_CONSTRAINT_VIOLATED) then
MessageDlg(EABSEngineError(E).ErrorMessage+
'. Veuillez changez l''enregistrement pour satisfaire la contrainte '+
'and re-validez l''enregistrement',mtError,[mbOK],0)
else if (EABSEngineError(E).ErrorCode = ABS_ERR_TABLE_LOCKED) then
begin
if MessageDlg('La table est verrouillée. '+
'Voulez-vous re-essayer de valider l''enregistrement',
mtWarning,[mbYes,mbNo],0)=mrYes then
Action:=daRetry;
end
else
MessageDlg(E.Message,mtError,[mbOK],0);
end
else
MessageDlg(E.Message,mtError,[mbOK],0);
end; |