|
아무 에러 박스도 없이 Exception이 일어나 그냥 그 함수가 끝납니다.
exception을 잡으려 " upsqlSEND->ModifySQL->Clear(); "문에
try..catch도 해보았지만 어떤 exception class인지 몰라서 힘듭니다.
모든 exception class를 포함하는 class는 없나요??
TQuery, TUpdateSQL을 동적생성했으며 쿼리의 OnUpdateRecord 이벤트에
qrySEND->OnUpdateRecord = UpdateSEND; 하였습니다. (그냥 이렇게만 해도 되는지..)
호출 :
UpdateSEND(qrySEND, ukModify, uaFail); (직접 부르지 말고 update 쿼리를 해야하나..
(근데 에러가 나서...edit 할 수 없다고..)
void __fastcall TProcess::UpdateSEND(TDataSet* DataSet, TUpdateKind UpdateKind, TUpdateAction &UpdateAction)
{
TUpdateSQL *upsqlSEND = (TUpdateSQL *)((TBDEDataSet *)DataSet)->UpdateObject;
switch (UpdateKind)
{
case ukModify:
//////////////////////// 여기서부터 그냥 끝남
upsqlSEND->ModifySQL->Clear();
upsqlSEND->ModifySQL->Add("update SEND set SND_FLAG = :DELETED, SND_SENDDATETIME = :QSENDDATETIME,");
upsqlSEND->ModifySQL->Add("SND_NEXTDATETIME = :QNEXTDATETIME, SND_CALLCOUNT = :QCALLCOUNT");
upsqlSEND->ModifySQL->Add("where SND_NUM = :QRECNUM");
upsqlSEND->SetParams(UpdateKind);
upsqlSEND->Query[UpdateKind]->ParamByName("DELETED")->Value = FLAG_DELETED;
upsqlSEND->Query[UpdateKind]->ParamByName("QSENDDATETIME")->Value = dtdSendQ.senddate;
upsqlSEND->Query[UpdateKind]->ParamByName("QNEXTDATETIME")->Value = dtdSendQ.senddate + g_cfgData.intertime;
upsqlSEND->Query[UpdateKind]->ParamByName("QCALLCOUNT")->Value = dtdSendQ.callcount;
upsqlSEND->Query[UpdateKind]->ParamByName("QRECNUM")->Value = dtdSendQ.q_keynum;
break;
case ukInsert:
dlgLog ("insert");
break;
case ukDelete:
dlgLog ("delete");
}
upsqlSEND->ExecSQL(UpdateKind);
UpdateAction = uaFail;
delete upsqlSEND;
}
|