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;
스크롤 문제에 대해서는 잘 모르겠지만 그럼 다른방법은 어떠세요?
예를 들어서 꼭 DBEdit 를 쓰시는게 아니라 일반 Edit 를 쓰셔도 됩니다.
그리고 쿼리의 이벤트중에 AfterScroll 이나
DataSource 의 Change 이벤트에
Edit1.Text := FieldByName( 'aaa' ).AsValue;
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 테이블;