|
catch (EDatabaseError& E)
{
EDBEngineError* Error;
Error = dynamic_cast<EDBEngineError*>(&E); <-- 형 변환 부분.
if ( Error != NULL )
{
ShowMessage(Error->Errors[Error->ErrorCount]->Message);
}
ShowMessage(E.Message);
dbx_MainCon->Rollback(TD); // on failure, undo the changes
ErrorLogs("TDM_GDB::DataQueryExecute - 2 : ", sls_Query->Strings[k] + "\n\n");
i_Return = GetLastError();
}
제 코드에도 저 부분이 있긴 한데요
제가 타입 캐스팅을 잘못한건지 EDatabaseError* 에서 EDBEngineError*로 형 변환이 안되고 있네요
정재만 님이 쓰신 글 :
: 도움이 될련지
:
: 샘플코드을 참조하세요....
:
: void __fastcall TMainForm::ErrorCheck (TDataSet *TDataSet, EDatabaseError *E, TDataAction &Action)
: {
: AnsiString S;
: EDBEngineError *Err = dynamic_cast<EDBEngineError*>(E);
:
: if (Err) {
: for (int i = 0; i < Err->ErrorCount; i++) {
: if (i > 0) AppendStr(S, '\n');
: TDBError *E = Err->Errors[i];
: AppendStr(S, Format( "%.4x (%d): %s",
: ARRAYOFCONST((E->ErrorCode, E->NativeError,E->Message))));
: }
: DatabaseError(S, 0);
: }
: }
|