헉.. 되네요!!
Access 에서는 % 가 아니고 * 로 해야 된다고 나와 있어서요..
실제 Access에서 직접 쿼리를 날리면 * 를 써야 했는데
ADO 통할때는 %를 써야 하나보네요...
에구 몇일을 고생했던건데... 정말 감사합니다. ^^;;
kylix 님이 쓰신 글 :
: ADO면 * 대신 %를써보세요.
:
: bbunge 님이 쓰신 글 :
: : 답변 감사합니다.
: :
: : 아래 부분은 오타가 있었네요..*35|* 이렇게 변경해도 여전히 조회는 안됩니다...
: : 파라메터에 *이 들어가는 경우 그런게 아닌가 싶은데... 모르겠네요ㅜㅜ;
: :
: : kylix 님이 쓰신 글 :
: : : 아래구문을 보면 *35|* 가아니라 *35*| 네요...
: : :
: : : : strName = strName.sprintf(L"%s|", L"*35*");
: : :
: : : bbunge 님이 쓰신 글 :
: : : : 안녕하세요~!
: : : :
: : : : TADOQuery를 이용해서 다음과 같은 쿼리를 실행하려고 합니다. 실제 디비에서 조회를 해보면 데이터가 있는데 프로그램 상에서는 데이터 조회를 하지 못하네요... 혹시 이런경험 있으신 분 계신가요?
: : : :
: : : : DB는 Access를 사용하고, Access 상에서는 아래 쿼리가 동작합니다.
: : : :
: : : : SELECT TEXT_INDEX, TEXT_ITEM
: : : : FROM T_SCREEN_TEXT
: : : : WHERE SC_TYPE = 'C' AND SC_NAME LIKE '*35|*' ORDER BY TEXT_INDEX ASC;
: : : :
: : : : LIKE 구문에 *35|* 대신에 35| 가 들어가면 일부데이터 조회가 됩니다... 파라메터에 * 이 들어가면 안되는거 같은데...
: : : : 이유를 모르겠네요..;;
: : : :
: : : :
: : : : void __fastcall TFormMain::m_BtnTestClick(TObject *Sender)
: : : : {
: : : : /* SQL Query */
: : : : UnicodeString strSql;
: : : : strSql = "SELECT TEXT_INDEX, TEXT_ITEM FROM T_SCREEN_TEXT WHERE SC_TYPE = :scType AND SC_NAME LIKE :scName ORDER BY TEXT_INDEX ASC;";
: : : :
: : : : UnicodeString strType, strName;
: : : : strType = L"C";
: : : : strName = strName.sprintf(L"%s|", L"*35*");
: : : :
: : : : try {
: : : : /* Create the query. */
: : : : TADOQuery* pAdoQuery = new TADOQuery(this);
: : : : pAdoQuery->Connection = m_ADOConn;
: : : : //pAdoQuery->SQL->Text = strSql;
: : : : pAdoQuery->SQL->Add(strSql);
: : : : pAdoQuery->Parameters->ParamByName("scType")->Value = strType;
: : : : pAdoQuery->Parameters->ParamByName("scName")->Value = strName;
: : : :
: : : : /* Set the query to Prepared--it will improve performance. */
: : : : pAdoQuery->Prepared = true;
: : : :
: : : : try {
: : : : pAdoQuery->Active = true;
: : : : }
: : : : catch (EADOError& e) {
: : : : MessageDlg("Error while connecting", mtError,
: : : : TMsgDlgButtons() << mbOK, 0);
: : : : return;
: : : : }
: : : :
: : : : m_AdvSgScreenText->RowCount = pAdoQuery->RecordCount + 1;
: : : : for(int i=0; iRecordCount; i++)
: : : : {
: : : : m_AdvSgScreenText->Cells[0][i+1] = pAdoQuery->FieldByName("TEXT_INDEX")->AsInteger;
: : : : m_AdvSgScreenText->Cells[1][i+1] = pAdoQuery->FieldByName("TEXT_ITEM")->AsString;
: : : : m_AdvSgScreenText->Cells[2][i+1] = pAdoQuery->FieldByName("TEXT_ITEM")->AsString;
: : : : m_AdvSgScreenText->Cells[4][i+1] = L"";
: : : :
: : : : pAdoQuery->Next();
: : : : }
: : : :
: : : : pAdoQuery->Active = false;
: : : : pAdoQuery->Free();
: : : : }
: : : : catch (EADOError *e) {
: : : : OutputDebugString(e->Message.c_str());
: : : : }
: : : :
: : : : m_AdvSgScreenText->AutoSizeColumns(true, 10);
: : : : }
: : : : //---------------------------------------------------------------------------
: : : :
: : : :
: : : :