또 막히는 부분이 있습니다
테이블 컴포넌트로 필터를 해볼려고 합니다
그런데 만약에 필터의 갯수를 여러개로 유동적으로 할때에
필터문을 어떻게 해야 하는지 모르겠습니다
이건 진짜 저혼자서는 절대로 해결이 안될거 같습니다
예를 들어서
종류 이름 개수
떡볶이 개똥이 1
오뎅 소똥이 2
김치 말똥이 1
라면 새똥이 1
오뎅 호빵맨 3
떡볶이 수다맨 1
떡볶이 김치맨 2
이런 디비가 있다고 할때(실제로는 수천개이상의 데이타)
테이블에서 떡볶이를 필터하면 Filter:=(종류=떡볶이);
이렇게 하면
종류 이름 개수
떡볶이 개똥이 1
떡볶이 수다맨 1
떡볶이 김치맨 2
이렇게 나옵니다
그러나 경우에 따라서는 Filter:=(종류=떡볶이) and (종류=오뎅) and (종류 = 라면); 처럼 3가지를 한꺼번에 요구 할때도 있고
종류 이름 개수
떡볶이 개똥이 1
떡볶이 수타맨 1
떡볶이 김치맨 2
오뎅 소똥이 2
오뎅 호빵맨 1
라면 새똥이 1
아니면 Filter:=(종류=김치) and (종류=오뎅);
처럼 두가지를 요구 할수도 있습니다
종류 이름 개수
김치 말똥이 1
오뎅 소똥이 2
오뎅 호빵맨 1
여기서 '종류' 필더의 값이 보통 수십가지 있어야 합니다 다시 말하면 김치 오뎅 이런게 수십가지.... 그리고 레코드 갯수는 수천개 이상입니다 변수로 받아야 하기 때문에 (1) Filter:=(종류=변수1) and (종류=변수2); 이런 형식으로 해야 하는데 이거는 사용자가 두개만 불러들일때만 가능한 형식이고 3개를 불러온다면 (2) Filter:=(종류=변수1)and(종류=변수2)and(종류=변수3);
이렇게 되야 되잖아요 이걸 case를 써서 변수가 두개일때는 위의 (1)번문장을 쓰고 변수가 3개일때는 아래의 (2)번 문장을 실행하도록 짤수도 없는노릇이구요(수십가지이기 때문에...) 어떻게 해야 하나요? 리스트 박스를 이용해 변칙적으로 하는거 한가지만 떠오르는데 그 외에는 방법이 없는건가요?
제가 이렇게 질문을 무식하게 표를 모두 만들면서 쓴것은 꼭 답변을 받고 싶어서 성의를 표시한 겁니다 이렇게라도 안하면 답변을 받기가 힘들것 같군요
하지만 전 꼭 필요합니다 저한테 구체적으로 정말 자세하게 길을 가르쳐 주셨으면 좋겠습니다 고수님들 부탁드립니다
제가 여러개의 filter 줄때 사용하는 방법인데여..
cFiltGetChe, cFiltCode1.cFiltDate..등 사용할 변수를 전역으로 선언하고
값을 미리 넣는거죠.
예를 들어
cFiltGetChe := ' 종류 = '+''''+edit1.text+''''; //요건 어느곳이나 해당되는 것을 넣어주시고요...
cFiltCode1 := 'and 종류 = '+''''+edit2.text+''''; //다음부터는 and를 넣어서
cFiltDate := 'and 종류 = '+''''+edit3.text+'''';
edit1,2,3은 들어가야 할 말이 들어가면 되겠지요.
혹시나 입력을 받는다면 그대로 사용하면 되구여.
조건이 없다면 editbox를 비워두시면 됩니다.
filter를 줘야하는 곳에서 한번만 주면 됩니다.
query(table).filter := cFiltGetChe + cFiltCode1 + cFiltDate + cFiltDanga+.....;
요롷게 하면 잘됩니다.
아참 query나 table의 filtered는 True로 설정하셔야 합니다.