Q&A

  • [질문]오늘도..질문과 하루를 시작하네여.ㅋㅋ그리드 질문요~
일단 전체를 조회해서 그리드에 뿌려준후..  

날짜              지역            여부     사과      감       귤  
20081024     강원도            Y        ㅁ       ㅁ        ㅁ  
20081025     서울               Y        ㅁ       ㅁ        ㅁ  
20081026     부산               Y        ㅁ       ㅁ        ㅁ 
20081027     춘천               Y        ㅁ       ㅁ        ㅁ   


사과, 감은 전체 체크가 되있구여 귤은 체크가 안되있을
6  COMMENTS
  • Profile
    소울해커 2008.11.06 03:56

    쿼리의 WHERE 절에 사과, 감, 귤에 대한 파라미터를 넣고 그냥 조회버튼 누르는걸로 처리하시면 될텐데요.

    WHERE (과일 LIKE :조건1 OR 과일 LIKE :조건2 )

    이런식으로 해놓고 파라미터 넘겨줄때

    어느게 사과고 어느게 감이고 어느게 귤인지는 DB에 있을테니

    예를들어 사과는 1, 감은 2, 귤은 3이라고 DB에 들어있을 경우

    귤만 보고 싶다면 조건1, 조건2에 값을 3으로 넘겨주면 3에 맞는거만 불러올테고

    전부다 보고 싶다면 %를 넘겨주면 다 넘어오겠죠.

    사과 감 2개를 보고 싶다면 조건1에 1, 조건2에 값을 2로 넘겨주면 맞는거만 불러올테니

    그리드에 뿌려줄 데이터는 그 값 고대로 뿌려주면 됩니다.

    귤 값은 없을테니 그리드에 데이터가 없는 초기 상태로 만들어 두면되겠죠?

    추가로 조회한걸 그리드에 뿌리기 전에 그리드를 초기화 하는 루틴을 하나 만들어서 넣으세요.
  • Profile
    꼬꼬마 2008.11.06 18:54
    아.....



    GetCheckboxState 함수를 써보라는 분도 있던데;;

    쓸줄을 몰라서..ㅠㅠ

    체크된것을 보여주는거라는데;;

    흠;;;;;
  • Profile
    소울해커 2008.11.06 20:19
    그러니까 저 사과,감,귤에 대한 데이터는 DB에 없는게 아니라 piter 라는 거죠...

    체크박스를 누르면 그리드에 있는 데이터가 사라지는게 아니라

    체크박스를 누르면 SQL 쿼리에 귤에 대한 것만 불러오라고 해서 조회를 하고 그 결과값을 그리드에 출력하는 겁니다.

    최초에 조회할때는 쿼리에서 사과,감,귤에 대해 전부 다 가져오고 그걸 그리드로 출력하지만

    체크박스를 누르면 쿼리에서 특정 조건에 맞는 데이터만 가져오도록 하면 된다는 거죠.

    최초 조회시에 그리드 초기화라던지 체크박스 생성이라던지 기타등등의 부분이 다 처리가 되잖습니까?

    다만 체크한게 있으면 거기에 맞춰서 처리 루틴을 따로 만드는게 아니라 쿼리문만 살짝 바꿔주면 된다는 겁니다.

    어느게 체크
  • Profile
    꼬꼬마 2008.11.06 22:34
    이런식으로 사용하면 되는건가여?

    if ( Co1.Checked) then begin <--체크 박스 네임
    grdList.GetCheckboxState(RM_1,ARow, chk); <-사과 컬럼하고 Arow, chk(/boolean타입 변수/
    end;

    써보지를 않아서;;;;ㄷㄷㄷ

    해봤는데..체크박스부분이 먹히지가 않는거 같아요;;
    넣으나 마나;;그리드로 표시가 되네여...
    잘못 집어넣은건가..ㅠㅠ
  • Profile
    꼬꼬마 2008.11.07 00:29
    해커님 간단한 예로 보여주실수 있나여?

    휴...;;참 간단할거 같은데;;;..

    이거참.ㅠㅠ
  • Profile
    소울해커 2008.11.07 01:42

    Query1.SQL.Text := ' SELECT DATE, AREA, PITER, ISCHECKED ' +
    ' FROM TBL_SALE ' +
    ' WHERE (PITER LIKE :P1 OR PITER LIKE :P2) ';

    쿼리는 이런식이 되겠죠.


    chk := False;
    grdList.GetCheckboxState(RM_1, ARow, chk);

    Query1.Close;
    case chk of
    True:
    begin
    Query1.PramByName('P1').AsString := '001';
    Query1.PramByName('P2').AsString := '001';
    end;
    False:
    begin
    Query1.PramByName('P1').AsString := '%';
    Query1.PramByName('P2').AsString := '%';
    end;
    end;
    Query1.Open;

    코딩은 이런 형태로 될 것 이구요.

    이 뒤는 최초 조회시에 했던거 그대로 해주면 됩니다.

    보는 형태에선 chk가 True면 PITER 값이 001인 항목만 불러옵니다.

    False면 001이건 003 이건 전부 불러오겠죠.

    조건식은 상황에 따라 맞춰서 주면 되겠구요.

    헌데... DB가 어떻게 되있는지 모르겠지만 질문하시는걸로 유추해 보건데

    DB 설계부터가 잘못되었다고 느껴지는군요.