Q&A

  • DBGrid에 대해 .. [누가좀 도와주세요]


안녕하세요

두가지 궁금한점이 있어서요



1. DBGrid로 입력할때 특정 칼럼에 커셔를 위치시키고 싶은데



2. DBGrid에서 display할때 데이타가 0,1,2로 들어있는 것을



입금,출금,대체 이런식으로 display하고 싶어요



누가좀 도와주세요.



2  COMMENTS
  • Profile
    배준상 2000.06.28 23:13
    최월자 wrote:

    >

    > 안녕하세요

    > 두가지 궁금한점이 있어서요

    >

    > 1. DBGrid로 입력할때 특정 칼럼에 커셔를 위치시키고 싶은데

    >

    > 2. DBGrid에서 display할때 데이타가 0,1,2로 들어있는 것을

    >

    > 입금,출금,대체 이런식으로 display하고 싶어요

    >

    > 누가좀 도와주세요.

    >



    -- 1번 답변

    먼저 특정 Column이 나타낼 Data의 Field명을 알아야 합니다.

    예를 들어 TQuery에서 오른쪽 마우스 버튼을 클릭한 후 'Add all Fields'를

    선택합니다. 그리고 DBGrid와 TQuery를 연결합니다. 연결하는 방법은 다 아시겠지요..

    그러면 특정 Column이 나타낼 Field명이 Columnd을 가리키게 됩니다.



    Query_FirstMA002_MENU.FocusControl;



    위와 같이 Query_First라고 하는 DataSet에서, 나타낼 Field가 MA002_MENU라고

    한다면 DBGrid에서 특정 Column이 가리키는 것은 Query_FirstMA002_MENU가 됩니다.



    -- 2번 답변

    만약 DataBase가 Oracle이라면 ..



    Select Decode(필드명, '1', '입금', '2', '출금', '3', '대체')

    From 테이블명



    이렇게 기술해 주시면 됩니다.

  • Profile
    까마귀 2000.06.28 22:37
    최월자 wrote:

    >

    > 안녕하세요

    > 두가지 궁금한점이 있어서요

    >

    > 1. DBGrid로 입력할때 특정 칼럼에 커셔를 위치시키고 싶은데

    >

    > 2. DBGrid에서 display할때 데이타가 0,1,2로 들어있는 것을

    >

    > 입금,출금,대체 이런식으로 display하고 싶어요

    >

    > 누가좀 도와주세요.

    >



    안녕하세요. 까마귀입니다.

    무지 덥네요. 아고 더버라...



    1번의 컬럼에 커서 위치하기.

    아래의 코드를 살펴보세요. DBGrid의 KeyDown 이벤트에 구현한 겁니다.



    if Key = VK_RETURN then //눌려진 키가 Return 키이면...

    begin

    With (ActiveControl as TDBGrid) do

    begin

    if FieldCount = SelectedIndex + 1 then

    // FieldCount : 필드의총수 SelectedIndex : 현재 선택되어있는 Column의 번호 0부터 시작입니다.

    // + 1하는 이유는 Index가 0부터 시작이므로 마지막에 있는지 체크하려면 +1을 해줘야합니다.

    begin

    DataSource.DataSet.Next;

    if DataSource.DataSet.Eof then DataSource.DataSet.Append;

    SelectedIndex := 0;

    Exit;

    end;

    if FieldCount > SelectedIndex + 1 then

    SelectedIndex := SelectedIndex + 1;

    end;

    end;

    이것은 Return Key를 누르면 한칸 옆으로 옮기고, 마지막이면 다음줄로가고, 젤 마지막이면 추가가 되도록 한겁니다.





    2번 데이터 0,1,2를 입금,출금,대체로 바꾸기.



    나중에 다른게 입력되는 일 - 예를 들어 3 등이 - 이 없는 경우는 그냥 FieldEditor에서 각각의 필드에 있는 이벤트중

    OnGetText 이벤트를 이용하시고요, 있는 경우는 LookUp 기능을 이용하세요.

    LookUp 을 이용시는 0,1,2등의 코드가 들어있는 테이블이 있어야 겠지요.



    OnGetText 이용법.

    Table이나 Query를 더블클릭하여 FieldEditor창에서 모든 레코드 생성.

    원하는 Field를 선택 OnGetText이벤트 더블클릭.

    아래처럼 쓰면 됩니다.

    if Sender.AsInteger = 0 then Text := '입금'

    else if Sender.AsInteger = 1 then Text := '출금'

    else Text := '대체';



    LookUp이용법.

    FieldEditor에서 NewField를 생성. 이름 정하고, LookUp을 선택.

    Key Field : 실제 저장될 Field.

    LookUp DataSet : LookUp으로 보여줄 DataSet. 코드 테이블.

    LookUp KeyFields : Key Field에 저장할 LookUp Field.

    LookUp ResultField : Lookup으로 보여줄 Field.

    이렇게 만들고, 해당 DBGrid에 새로 만든 LookUp필드를 대신 보여주게 하면 됩니다.







    위대한 단군혼이 살아있는 나라.... 대한민국.