조회TR Category

## Method YOA_Request

- Implemented Module:
  YuantaAPI.dll, YuantaCOM.dll

  서버에 조회TR(DSO)을 요청하는 메소드입니다.

- - ### 메소드 원형

    DLL Method COM Method
    Type | Method
    --- | ---
    long | YOA_Request ( HWND hWnd, LPCTSTR szDSOID, BOOL bReleaseData, long nNextReqID )
    LONG | YOA_Request ( BSTR szDSOID, bool bReleaseData, LONG nNextReqID )

  - ### 매개변수

    - ### hWhd [DLL]

      `응답 데이터를 받을 Windows Handle 입니다.`

    - ### szDSOID [DLL/COM]

      `요청할 조회TR(DSO)의 ID 입니다.`
      - 입력이 있는 경우, 사전에 TR정보의 메소드를 이용하여 값이 설정되어 있어야 합니다.

    - ### bReleaseData [DLL/COM]

      `응답 데이터 처리 후, TR 요청 정보와 수신 데이터를 자동 삭제할지 여부입니다.`
      - TRUE이면 응답 데이터 수신 메시지(DLL) 또는 수신 이벤트(COM) 처리가 끝나면 자동으로 삭제됩니다.
      - 연속조회 TR의 경우, 수신된 데이터를 사용해야 하기 때문에 FALSE를 주어 자동 삭제되지 않도록 합니다.
      (연속조회 TR의 경우, NextBlock의 값이 다음 조회 시에 사용됩니다.)

    - ### nNextReqID [DLL/COM]

      `연속조회를 요청할 Request ID 입니다.`
      - 연속조회의 경우, 이전 요청 시에 설정한 값과, 수신한 데이터를 사용하기 위해 TR요청 시 반환 받은 Request ID를 명시합니다.

  - ### 반환값

    Type | Description
    --- | ---
    long | 성공 시, TR요청의 고유한 ID(Request ID)가 반환됩니다. 실패 시, 해당 오류코드가 반환됩니다. YOA_GetErrorMessage를 통해 오류 내용을 문자열로 확인할 수 있습니다.

  - ### 예시

    DLL Return COM Return
    제공하는 샘플소스에서 발췌한 예시입니다.
        g_iYuantaAPI.YOA_SetTRFieldByte( _T("300001"), _T("InBlock1"), _T("jang"), (byte)nJang );
        g_iYuantaAPI.YOA_SetTRFieldString( _T("300001"), _T("InBlock1"), _T("jongcode"), m_strJongCode );
        g_iYuantaAPI.YOA_SetTRFieldString( _T("300001"), _T("InBlock1"), _T("outflag"), _T("N") );
        g_iYuantaAPI.YOA_SetTRFieldString( _T("300001"), _T("InBlock1"), _T("tsflag"), _T("0") );

        m_nReqID_300001 = g_iYuantaAPI.YOA_Request( GetSafeHwnd(), _T("300001"), TRUE, -1 );

        if ( ERROR_MAX_CODE < m_nReqID_300001 )
        {
        	CString strMsg;
        	strMsg.Format( _T("[ReqID:%d] [300001]주식현재가 조회를 요청하였습니다."), m_nReqID_300001 );

        	m_pMainDlg->LogMessage( strMsg );
        }
        else
        {
        	TCHAR msg[2048] = {0,};

        	int nErrorCode = m_nReqID_300001;
        	g_iYuantaAPI.YOA_GetErrorMessage( nErrorCode, msg, sizeof(msg) );

        	CString strErrorMsg;
        	strErrorMsg.Format( _T("[%d] %s"), nErrorCode, msg );

        	m_pMainDlg->LogMessage( _T("[300001]주식현재가 조회 요청중 오류가 발생하였습니다."), 1 );
        	m_pMainDlg->LogMessage( strErrorMsg, 1, FALSE );
        }
        m_iYuantaAPI.YOA_SetTRFieldString("300001", "InBlock1", "jang",     "1", 0);
        m_iYuantaAPI.YOA_SetTRFieldString("300001", "InBlock1", "jongcode", m_strJongCode, 0);
        m_iYuantaAPI.YOA_SetTRFieldString("300001", "InBlock1", "outflag",  "N", 0);
        m_iYuantaAPI.YOA_SetTRFieldString("300001", "InBlock1", "tsflag",   "0", 0);

        int nResult = m_iYuantaAPI.YOA_Request("300001", true, -1);

        if ( CommDef.ERROR_MAX_CODE < nResult )
        {
            m_mapRequestTR[nResult] = "300001";
            string strMsg = "[ReqID:"+ nResult +"] [300001]주식현재가 조회를 요청하였습니다.";

        		m_mainForm.LogMessage( strMsg );
        }
        else
        {
            string strMsg = "[300001]주식현재가 조회 요청중 오류가 발생하였습니다.";
            m_mainForm.LogMessage(strMsg, CommDef.YOALOG_ERROR);

            strMsg = "[" + nResult + "]" + m_iYuantaAPI.YOA_GetErrorMessage( nResult );
            m_mainForm.LogMessage(strMsg, CommDef.YOALOG_ERROR, false);
        }

  COPYRIGHT @ Yuanta Securities Korea Co., Ltd. ALL RIGHT RESERVED.