Q&A

  • 데이타베이스
읽어보시는 모든분들 안녕하세요..



DBGRID에서 앞의 3개 필드는 Query해서 가져오고 나머지 한 필드는

FieldKind를 fkCalculated 로 해서 거기에 값을 입력하고 싶습니다.

어떻게 해야할지 몰라서 올립니다.

아시는 분은 좀...



2  COMMENTS
  • Profile
    ladymoon 2000.06.22 17:46
    과객님 답해주셔서 감사합니다.

    그런데 Calculate Field가 그냥 Display하는 Field가 아닌 edit가 가능한 Field로 하고 싶거든요...

    우선 급한대로 table에 tmp field를 만들어서 그field를 update하도록 하였습니다.

    그런데 여기에서 또 문제가...

    Query 컴포넌트를 쓰고 dbgrid를 썼는데, Query에서 모든 필드를 readonly로 하고 그 필드를 readonly False로 하고 Requestlive를 true로 해주었는데 아무리 edit하려 해도 edit가 되지 않는군요..

    어떻게 해야 하나요.

  • Profile
    과객 2000.06.21 03:06
    ladymoon wrote:

    > 읽어보시는 모든분들 안녕하세요..

    >

    > DBGRID에서 앞의 3개 필드는 Query해서 가져오고 나머지 한 필드는

    > FieldKind를 fkCalculated 로 해서 거기에 값을 입력하고 싶습니다.

    > 어떻게 해야할지 몰라서 올립니다.

    > 아시는 분은 좀...

    >



    일단 Query 컴포넌트에서 CalcFields를 생성시킨 후(방법은 아시져? ^^;)



    if --------------------------------------------------------------------------

    With Query1 do begin

    Close;

    Sql.Clear;

    Sql.Add( ' Select Fields1, Fields2 From Table_A '

    + ' Where ............. ' );

    Open;

    end;



    이런식으로 Query를 한다면 Query 컴포넌트의 이벤트 부분을 보면 OnCalcFields event

    가 존재 합니다. 이 이벤트에서



    With Query2 do begin

    Close;

    Sql.Clear;

    Sql.Add( ' Select Fields3 From Table_B '

    + ' Where Field1 = :sField1 '

    + ' And Field2 = :sField2 ' );

    ParamByName('Field1').AsString := Query1.FieldByName('Field1').AsString;

    ParamByName('Field2').AsString := Query1.FieldByName('Field2').AsString;

    Open;

    Query1.FieldByName('Field1').AsString := FieldByName('Field3').AsString;

    end;



    이렇게 하시면 Query1의 CalcFields => (Field3) 에 onCalcFields 에서 Query해온

    값이 넘어감다... 담에는 원하는 순서로 Display 하면 되겠져.... ^^