Koliko sam ja upucen, ne postoje neki ID-jevi gresaka kao sto je to bilo u BDE.
Po pravilu, greske treba traziti kolekciji:
TADOConnection::Errors
(najbolje ukljuci onaj IntelliSense da ti automatski predlozi metode)
Mad ja to radim ovako, jer mi se cini da detaljnije mogu da kazem
korisniku sta se desilo:
Code:
void __fastcall TMainDB::NekaTabelaPostError(TDataSet *DataSet,
EDatabaseError *E, TDataAction &Action)
{
// Iskljuci sistemske poruke o gresci
Action = daAbort;
if ( StrPos( E->Message.c_str(), "duplicate values" ) != NULL )
{
// MESSAGE: ...
return;
}
if ( StrPos( E->Message.c_str(), "zero-length" ) ||
StrPos( E->Message.c_str(), "Null value" ) ||
StrPos( E->Message.c_str(), "must have a value" ) ||
StrPos( E->Message.c_str(), "Error in row" ) ||
StrPos( E->Message.c_str(), "Empty row cannot be inserted" ) )
{
if ( StrPos( E->Message.c_str(), "Polje1" ) )
{
// MESSAGE: ...
return;
}
if ( StrPos( E->Message.c_str(), "Polje2" ) )
{
// MESSAGE: ...
return;
}
// ...
// PORUKA: "Red ne moze biti prazan"
// ...
return;
}
ShowMessage( "Nepoznata greska: " + E->Message );
return;
}