C++ Builder/예제소스

fnFieldByName

딸기우유중독 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