자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder 도서 대여 프로그램을 C++ Builder로 변경시 Error
2018.01.10 11:16
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요 .
도서대여 프로그램을 c++ BUILDER로 작성 하고 있습니다만.
이 부분을 실행하면 첨부 메세지가 뜹니다.
어떤 부분이 이상 한지 한참을 찾고 있습니다. ㅠㅠ
도움 주시면 감사 하겠습니다.
void __fastcall TfrmUser::edtSearchKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
String strFilter;
strFilter = "";
if(edtSearch->Text !="")
{
if (chkSearchName->Checked)
strFilter = Format("%s \"%%%s%%\"", OPENARRAY(TVarRec,("USER_NAME like ",edtSearch->Text)));
if (chkSearchPhone->Checked)
{
if (strFilter != "")
strFilter = strFilter + " or ";
strFilter = strFilter + Format("%s \"%%%s%%\"", OPENARRAY(TVarRec,("USER_PHONE ",edtSearch->Text)));
}
}
dmDataAccess->qryUser->Filter = strFilter;
dmDataAccess->qryUser->Filtered = (strFilter != "");
}
댓글 4
-
험프리
2018.01.10 14:57
-
겨울잠안자는곰
2018.01.10 19:04
열심히 노력 하겠습니다.
일단 edtSearch에 r을 입력하면 이벤트 발생 후 뜨는 경우 입니다만.
strFilter에 아래와 같이 들어 갑니다.
형식 문제 인지? 무엇인지를 잘 모르겠습니다.(DB 프로 그램도 처음 해 보는 것이어서요 ㅠㅠ).
파일 첨부해 드립니다. 수고 하세요.
-
겨울잠안자는곰
2018.01.10 20:04
이것이 올바른 방법 인지 모르겠으나. 이렇게 처리 하면 검색은 됩니다.
void __fastcall TfrmFindUser::edtSearchKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
String RawFilter;
String strFilter;
strFilter = "";
RawFilter = "";
if (edtSearch->Text != "")
{
if (chkSearchName->Checked)
//Filter = Format("USER_NAME like \"%%s%%\"",OPENARRAY(TVarRec,(edtSearch->Text))); //Label등으로 표시하면 잘 나오는데.
RawFilter = Format("%%%s%%",OPENARRAY(TVarRec,(edtSearch->Text)));
strFilter = "USER_NAME LIKE " + QuotedStr(RawFilter) ; //QuotedStr 함수를 써서 억지로 인용 부호 안으로 집어 넣었습니다.
}
dmDataAccess->qryFindUser->Filter = strFilter;
dmDataAccess->qryFindUser->Filtered = (strFilter != " ");
}
-
험프리
2018.01.11 09:09
결과적으로 아래와 같이 필터 문자열을 잘 지정해주시면 될 것 같습니다.
dmDataAccess->qryFindUser->Filter = 'USER_NAME like "%blabla%"';
C++ Builder 도서 대여 프로그램을 C++ Builder로 변경시 Error
2018.01.10 11:16
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요 .
도서대여 프로그램을 c++ BUILDER로 작성 하고 있습니다만.
이 부분을 실행하면 첨부 메세지가 뜹니다.
어떤 부분이 이상 한지 한참을 찾고 있습니다. ㅠㅠ
도움 주시면 감사 하겠습니다.
void __fastcall TfrmUser::edtSearchKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
String strFilter;
strFilter = "";
if(edtSearch->Text !="")
{
if (chkSearchName->Checked)
strFilter = Format("%s \"%%%s%%\"", OPENARRAY(TVarRec,("USER_NAME like ",edtSearch->Text)));
if (chkSearchPhone->Checked)
{
if (strFilter != "")
strFilter = strFilter + " or ";
strFilter = strFilter + Format("%s \"%%%s%%\"", OPENARRAY(TVarRec,("USER_PHONE ",edtSearch->Text)));
}
}
dmDataAccess->qryUser->Filter = strFilter;
dmDataAccess->qryUser->Filtered = (strFilter != "");
}
댓글 4
-
험프리
2018.01.10 14:57
-
겨울잠안자는곰
2018.01.10 19:04
열심히 노력 하겠습니다.
일단 edtSearch에 r을 입력하면 이벤트 발생 후 뜨는 경우 입니다만.
strFilter에 아래와 같이 들어 갑니다.
형식 문제 인지? 무엇인지를 잘 모르겠습니다.(DB 프로 그램도 처음 해 보는 것이어서요 ㅠㅠ).
파일 첨부해 드립니다. 수고 하세요.
-
겨울잠안자는곰
2018.01.10 20:04
이것이 올바른 방법 인지 모르겠으나. 이렇게 처리 하면 검색은 됩니다.
void __fastcall TfrmFindUser::edtSearchKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
{
String RawFilter;
String strFilter;strFilter = "";
RawFilter = "";
if (edtSearch->Text != "")
{
if (chkSearchName->Checked)
//Filter = Format("USER_NAME like \"%%s%%\"",OPENARRAY(TVarRec,(edtSearch->Text))); //Label등으로 표시하면 잘 나오는데.
RawFilter = Format("%%%s%%",OPENARRAY(TVarRec,(edtSearch->Text)));
strFilter = "USER_NAME LIKE " + QuotedStr(RawFilter) ; //QuotedStr 함수를 써서 억지로 인용 부호 안으로 집어 넣었습니다.
}
dmDataAccess->qryFindUser->Filter = strFilter;
dmDataAccess->qryFindUser->Filtered = (strFilter != " ");
} -
험프리
2018.01.11 09:09
결과적으로 아래와 같이 필터 문자열을 잘 지정해주시면 될 것 같습니다.
dmDataAccess->qryFindUser->Filter = 'USER_NAME like "%blabla%"';
와우 반가운 소식입니다.^^ C++빌더로 따라해보면 아주 좋을 것 같습니다.
(혹시 완성하신 이후에 작성하신 소스코드를 저에게도 보내주실 수 있을까요? 부탁드립니다.^^)
자 그럼 본론으로 들어가보면
1) 위와 같은 오류가 발생합니다.
2) 오류의 원인은 strFilter에 잘못된 문자열로 구성되었을 가능성이 큽니다.
3) strFilter에 어떤 문자열이 들어가 있는지 확인합니다.(디버깅을 하거나, 메시지로 출력해 육안으로 확인해 보세요.)
4) 해당 문자열이 왜 그렇게 작성되었는지 가능성이 있는 코드를 찾습니다.
5) 해당 코드를 수정 후 테스트 합니다.
위와 같이 진행하시면 원인을 찾아 해결하실 수 있을 것 같습니다.
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)