Q&A

  • 퀴리문을 통해 얻은 값을 변경하고자 할 경우

안녕하십니까

날씨가 많이 쌀쌀합니다. 감기 조심하시구요

질문하나 드리겠습니다.

쿼리문을 통해 얻은 값을 디비컨트롤그리드에 디비텍스트를 통해 보여줍니다

여기서 디비텍스트에 나온 값을 스크립터를 통해 제가 임의로 변경하고자

합니다.. 가능한지요

가능하다면 어떻게 해야하는지 자세한 설명 부탁드립니다.

그럼 수고하십시요.

  
4  COMMENTS
  • Profile
    머슴 2002.10.24 21:10
      가능 합니다..

       1. 코딩으로 해결하는 방법
        
      CalcField를 이용하는  TTable이나 TQuery에서 더블클릭하면
       FieldEdit가 나옵니다.. 이때 오른쪽 버튼을 클릭하여..
       New Field를 추가 합니다. 이때 필드이름과 형과 사이즈를 결정하시면
       하시면 됩니다..
      
       일종의 가상필드를 만들어서 보여줄때만 사용을 하는 것입니다..
       따라서 계산하여 보여준다고해서 CalcField인가 봅니다..

       procedure TForm1.Query1CalcFields(DataSet: TDataSet);
       begin
          Case FieldByName('필드').AsInteger of
              1: FieldByName('가상필드').AsString:= '성공';
              2:
             <중략>
          
            end;

       Dbedit에는 '가상필드'로 연결...

      2. 쿼리로 해결하는 방법

           오라클에는 decode,case(버전에 따라서), Ms-SQL은 case함수가
           있습니다.

            이런 함수를 이용해 쿼리에서 바꾸어서 가져오는 방법이 있습니다..
            죄송하게 예를 오라클 예밖에 못하네요..

            select decode(필드,1,'성공',2,'실패',3,'성공') result
              from 테이블;




  • Profile
    정성훈 2002.10.25 00:39

    case 예제입니다.
    case when aaa = 1 then 222
            when aaa = 2 then 3333
            else 333 end as qqq


    조건이 여러개인경우 계속 when 절 추가하시면 되고요
    아니면가운데 when 을 빼세요.
    참고로 case 는 오라클에서도 됩니다.

    case 랑 decode 차이 아시는분 ㅡ.ㅡ
  • Profile
    김상수 2002.10.24 21:55
    답변 감사드립니다.

    1. 코딩으로 해결하는 방법으로 하니깐 되기는 되는데요

    음...

    실적율을 구할때  계획이 '0'이면  실적율에 '-0.0%'를 나타내기 위해서

    디비텍스트를 2개(A,B)  겹쳐놓고

    A 디비텍스트에는 '-0.0%'를 표시하고자 가상필드를 스트링으로 잡아

    표시하고 계획이 '0'이 아닐경우는 B 디비텍스트를 이용해서 보여주고자

    했습니다.

    설명이 복잡하죠 ^^;;

    간단하게 소스를 보여 드리겠습니다.

    procedure TDM.Query5CalcFields(DataSet: TDataSet);
    begin
       if DM.Query5.FieldByName('PLAN_MONEY').AsFloat = 0 then
          begin
          form1.DBText25.Visible := true;  
          form1.DBText26.Visible := false;
          DM.Query5.FieldByName('temp').AsString:= '-0.0%';
          end
       else
          begin
          form1.DBText25.Visible := false;
          form1.DBText26.Visible := true;
          end;
       end;

    이해가 되셨는지요 ^^;;;

    문제는 B디비텍스트(DBText26)는 항상 나옵니다. 계획이 0일 경우만

    나와야 하는데 말이죠

    그리고 A디비텍스트(DBText25)은  안나오다가 스크롤을 움직이면 나타났다가

    사라졌다가 그럼니다.

    왜 그런건지요

    수고스럽더라도 답변 부탁드립니다.

  • Profile
    정성훈 2002.10.25 00:45
    스크롤 문제에 대해서는 잘 모르겠지만 그럼 다른방법은 어떠세요?
    예를 들어서 꼭 DBEdit 를 쓰시는게 아니라 일반 Edit 를 쓰셔도 됩니다.
    그리고 쿼리의 이벤트중에 AfterScroll 이나
    DataSource 의 Change 이벤트에
    Edit1.Text := FieldByName( 'aaa' ).AsValue;

    이런식으로 주면 어쩔땐 이값 어쩔땐 저값 할필요 없을거 같습니다.