-
fnFieldByNameC++ Builder/예제소스 2019. 4. 26. 10:05
//---------------------------------------------------------------------------
void __fastcall TTempleF::fnCallTempleId()
{
TadReqQuery *pReqQry;
UnicodeString sSql;
try{
pReqQry = new TadReqQuery(m_pAppInfo->MQMgr);
pReqQry->JobID = 6600;
// enum TadDBJobType {djtSelect, djtInsert, djtUpdate, djtDelete, djtCancel, djtClear, djtInsertArray, djtTransaction};
pReqQry->JobType = djtSelect;
// enum TadDBQueryType {dqtExecute, dqtOpen};
pReqQry->QueryType = dqtOpen;
pReqQry->SQLFile = GetCurrentDir() + "\\Sql\\A1.sql"; // sql파일 경로 지정
pReqQry->FixedSession = false;
pReqQry->NeedResponse = true;
sSql.sprintf(L"SELECT MAX(SITE_ID) FROM M_SITE");
pReqQry->Variables->fnSetSQLVarByName("A1", sSql);
pReqQry->fnSetFormHandle(Handle);
pReqQry->fnSendRequest(m_pAppInfo->DBPM); // 데이터 요청
}catch(Exception &E){
fnWriteAppStatus(L"fnCallTempleId\r\n" + E.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TTempleF::fnProcDBResponse(TMessage a_stMsg)
{
UnicodeString sErrorLog;
TadResQuery *pResQry;
pResQry = (TadResQuery*)a_stMsg.WParam;
try{
// enum TadDBResult {drFail, drSuccess, drUnknown};
if(pResQry->Result == drSuccess){ // sql파일 경로가 잘못 되어있을 경우 drFail
if(pResQry->JobID == 6900){
fnCheckTempleId(pResQry);
}else if(pResQry->JobID == 6600){
fnLoadTempleId(pResQry);
}
}else{
sErrorLog = "DB Result Error !! \r\n";
sErrorLog += "==> Error Code : " + pResQry->ErrorCode + L"\r\n";
sErrorLog += "==> Error Kind : " + IntToStr(pResQry->ErrorKind) + L"\r\n";
sErrorLog += "==> Error Msg : " + pResQry->ErrorMsg + L"\r\n";
sErrorLog += "==> Error Msg : " + pResQry->SQLText + L"\r\n";
sErrorLog += "DESCRIPTION : " + pResQry->Params->fnGetParamByNameStr("DESCRIPTION");
fnWriteFileLog(sErrorLog);
}
delete pResQry;
}catch(Exception &E){
fnWriteAppStatus(L"ProcDBResponse\r\n" + E.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TTempleF::fnLoadTempleId(TadResQuery *a_pResQry)
{
UnicodeString sTempleId;
sTempleId = a_pResQry->fnFieldByName(L"MAX(SITE_ID)")->AsString; // Sql 문에서 SELECT 뒤에 선언한 칼럼(MAX포함)
sTempleId.Delete(1,1);
sTempleId = StrToInt(sTempleId) + 1;
edId->Text = L"T"+sTempleId;
edId->ReadOnly = true;
}
728x90'C++ Builder > 예제소스' 카테고리의 다른 글
SQL구문 (0) 2019.08.13 FindComponent (0) 2019.04.29 ExportGridToExcel (0) 2019.04.18 윈도우 창 이동(BoderStyle = bsNone) (0) 2019.02.26 종료확인 (0) 2019.01.31 댓글