Q&A

  • DBGrid에서 처리상의 문제가 있는데 해결해 주세요...
DBGrid내용



예를 들어서 DBGrid에 필드가 s_flag라는 필드가 있습니다.

여기에 들어가 있는 레코드는 n와 y 두가지의 경우입니다.



내가 표현하고 싶은것은 DBGrid에서 n라고 하는 레코드를

'없음' 이라고 표현을 하고싶어요..

물론 table의 내용을 바꾸는건 아니구요 그냥 DBGrid에서 표현만 '없음'

이라고 표현하고 싶은거죠..



그런데 어떻게 해야할지 모르겠어요..



알려주세요... 급해요..





2  COMMENTS
  • Profile
    김지엽 2001.06.09 03:35
    마스터/디테일(혹은 릴레이션)을 이용해 보십시오.



    하나의 테이블을 더 만듭니다.

    테이블에 필드는 최소한 두 개의 필드를 만듭니다.

    필드 하나에는 'y', 'n'등의 값을 집어넣고, 또 하나의 필드에는 '있음' '없음'을 집어넣는 거죠..

    예를 들어 보자면

    필드명: keys | values

    -----------------------

    레코드1: y | 있음

    레코드2: n | 없음



    이런 식으로요

    그리고 쿼리로 셀렉트 하는 방법은..



    만약 처음 테이블이 a, 두번째 테이블이 b라면, 그리고 애초 a 테이블의 해당하는 필드명이 y_n 이라손 치면..



    select {나타나야 할 a테이블의 필드명들..} , .. , b.values

    from a,b

    where b.keys = a.y_n



    이렇게 sql을 입력해 놓고,쿼리를 오픈 시켜 보면 들어가 있을 겁니다.

    간단한 문제이므로 델파이 관련 서적을 찾아보면 더 자세하게 설명이 되어 있을겁니다.



  • Profile
    박종환 2001.06.09 03:27
    해당 쿼리를 더블클릭 -> 작은 창이 나옴 -> 우측버튼 -> Add All Fields ->

    모든 필드가 나타남 -> 변경을 원하는 필드선택 -> F11 -> Event ->

    GetOnText 에서



    {*----------------------------------------------------------------------------*}

    {* FieldsOnGetText *}

    {*----------------------------------------------------------------------------*}

    procedure TPgm220_F.FieldsOnGetText(Sender: TField; var Text: String;

    DisplayText: Boolean);

    begin

    if TField(Sender).Value = Null then Exit;

    Text := TField(Sender).Value;



    if TField(Sender).FieldName = 'S_FLAG' then begin

    if Text = 'N' then Text := '없음'

    else Text := '있음';

    Exit;

    end;

    end;



    위의 예제는 여러개의 필드를 공통 EVENT 로 묶은 경우에 내부에서 필드 구분을 하여 처리하는 예제입니다.