C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[19489] Re:Re:Re:Re:필드에서 IS NULL, IS NOT NULL 이나 = NULL, <> NULL 은 검색 결과가 제대로 나와여
시후 [] 1707 읽음    2002-06-20 15:12
필드에서 IS NULL, IS NOT NULL 이나 = NULL, <> NULL 은 검색 결과가 제대로 나와여..
에러는 다른 곳에서 생기는 것 같거든요..

Project Mdiapp.exe raised exception class EConvertError with message '''' is not
a valid integer value. Process stopped. Use Step or Run to continue.

위의 에러 메세지중에 "" 안의 값이 타당한 정수형 값이 아니라는 문구가 이해가 안가여
분명 FilterValue 라는 스트링형으로 값을 받았는데,,미치겠습니당..



김백일 님이 쓰신 글 :
: 시후 님이 쓰신 글 :
: : ComboItem1 = "(StScholastic = '대학교졸업'  )" 와
: : ComboItem2 = "(StAreaFlag =  0)",
: : CheckItem = "(StEpInsurS = NULL) AND (StHtInsurS <> NULL) AND (StPsInsurS <> NULL)" 입니다
: : Edit1->Text = 이름이 들어가구여
: : Edit2->Text = 나이가 들어가구여
: :
: : FilterValue = "(StName = '" + Edit1->Text + "')" + " AND " + ComboItem1 + " AND "
: :               + "(StAgeValue = " + Edit2->Text + ")" +  " AND " + ComboItem2
: :               + " AND " + CheckItem;
:
: 필드가 NULL 인지를 체크하려면,
: IS NULL, IS NOT NULL을 써야 합니다.
:
: : 이렇게 FilterValue 에 값을 넣어 줬거든요..이렇게 넣는게 잘못된건가요..
: : Table1->Filter = "State = 'CA'" 와 형식이 같은것 같은데요..김백일님 말씀대로..
: : 위의 코드 한번 봐주세염..글구 틀린게 있으면 리플부탁합니다..^*^
: :
: :
: : 김백일 님이 쓰신 글 :
: : : 시후 님이 쓰신 글 :
: : : : 안녕하세요 오늘도 허접 질문을 드리게 되어 열분 고수님들 지송합니다.
: : : : 대한민국 8강을 자축하며 봐주세염..^*^
: : : :
: : : : 임의의 폼위에 DBGrid를 올려 놓구 Table과 DataSource를 올려 놓았습니다.
: : : : DB랑 연결을 했는데여..DBGird에서 원하는 검색을 하고 싶어서 Filter기능을 썻거든요
: : : :
: : : : AnsiString FilterValue;
: : : :
: : : : Table1->Active = true;
: : : : DBGrid1->DataSource = DataSource1;
: : : :
: : : : Table1->Filtered = true;
: : : : Table1->Filter = FilterValue;
: : : : Table1->Refresh();
: : : :
: : : : 문제는 FilterValue 에 검색 형태에 따라 조건을 많이 주거든요..
: : : : 그런데 DB에 있는 자료면 원하는 데로 검색을 하는데,,조건에 하나라도 맞지 않는 DB의 필드 값이 있다면 바로 에로가 떨어 지거든요..EConvertError....
: : :
: : : "에로"라고 하니까 웬지 이상한 기분이 ^^;
: : : TDataSet::Filter에 들어가는 문자열은
: : : SELECT ... FROM ... WHERE ... 문의 WHERE에 들어가는 내용과 동일합니다.
: : :
: : : 예를 들어
: : : Table1->Filter = "State = 'CA'"
: : :
: : : 일단 이 필터 문자열이 WHERE 조건문 문법에 정확히 맞는지를 보세요.
: : : 문법에 틀리기 때문에 그렇습니다.
: : : (이 필터는 연결된 DBMS에 실제로 전달되어서 처리됩니다.
: : : 그러므로 연결한 각 DBMS의 매뉴얼을 참고하셔야 합니다.)
: : : 문법에 맞으면 이 필터 조건에 일치하는 레코드가 하나도 없어도
: : : 절대 에러가 뜨지는 않습니다.
: : :
: : : 잘 모르겠으면 아예 TTabel 대신 TQuery를 써서 SQL 속성에
: : : SELECT ... FROM ... WHERE ... 문을 지정하세요.
: : : 이게 제대로 된다면 맞는 겁니다.
: : :
: : : 그외 필터링을 하는 강력한 방법으로
: : : TDataSet::OnFilterRecord 이벤트를 사용하는 방법이 있습니다.
: : : Filter로 처리할 수 없는 강력한 조건 판단을 코딩으로 처리할 수 있지만,
: : : 검색된 모든 레코드에 대해 이벤트가 발생하므로 속도는 상당히 느립니다.
: : :
: : : 예제는 다음과 같습니다.
: : :
: : : void __fastcall TForm1::Table1FilterRecord(TDataSet *DataSet, bool &Accept)
: : : {
: : :   Accept = (DataSet->FieldValues["DateOfPayment"] >
: : :             DataSet->FieldValues["DateOfPurchase"] + 30);
: : : }
: : :
: : : : 그렇다고 일일이 검색 조건이 추가될때마다 if문등을 써서 제어를 할순 없잖아여
: : : : 제 생각에는 검색 조건과 DB자료가 동일하지 않으니깐 그냥 예외 처리로 하면 안될까 하는 생각도 들거든요..
: : : : 그냥 메시지 박스를 띄워서 "검색 조건과 동일한 자료가 없습니다" 라고여..
: : : : 그래서
: : : :
: : : : try
: : : : {
: : : :         Table1->Filter = FilterValue;
: : : :         Table1->Refresh();
: : : : }
: : : : catch(EConverError&) ---> 에러메세지가 EConverError라고 뜨길래(사실 예외 처리에 대해서는
: : : : {                            잘 모르거든요..예외 처리부분을 아직 심도 잇게 공부를 못해서)  
: : : :         Application->MessageBox("검색 조건과 동일한 자료가 없습니다","에러",MB_OK);
: : : : }
: : : :
: : : : 위와 같은 형태로 했봤거든요..근데 Table1->Filter = FilterValue이 부분에서 에러가 먼저 떨어지는 것 같더라구여..물론 위의 코드가 제대로 된건 지도 모르겠지만..열분 고수님들 오늘도 머리를 싸메고 끙끙 대고 있는 하수를 위해서 많은 조언 부탁드리겠습니다..
: : : : 그럼 오늘도 즐거운 하루 되시고 ... 즐프하세염...^*^....대한민국 화이팅...코리아팀 화이팅..
: : : : 감사합니다...꾸벅.....(근데 무지 급하거든요..빨리 리플 좀 달아 주세염)...

+ -

관련 글 리스트
19479 TTable과 Filter에 대한 질문입니다...헬프를 봐도 해당 자료가 없는것 같네여..책에도 없는것 같구여..급 시후 780 2002/06/20
19480     Re:TTable과 Filter에 대한 질문입니다...헬프를 봐도 해당 자료가 없는것 같네여..책에도 없는것 같구여. 김백일 1065 2002/06/20
19483         Re:Re:김백일님 조건을 한번 봐주세여..이렇게 쓰는게 틀린건지.. 시후 803 2002/06/20
19484             Re:Re:Re:김백일님 조건을 한번 봐주세여..이렇게 쓰는게 틀린건지.. 김백일 828 2002/06/20
19489                 Re:Re:Re:Re:필드에서 IS NULL, IS NOT NULL 이나 = NULL, <> NULL 은 검색 결과가 제대로 나와여 시후 1707 2002/06/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.