Query 的计算字段(50分)

  • 主题发起人 主题发起人 xywen
  • 开始时间 开始时间
X

xywen

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:

请教一下怎样在 Query 查询中 产生计算字段,并能在DBGRID
中显示,最好能举一详细例程.
 
Query 查询中 产生计算字段:
先把query的sql填好,产生固定的field,然后加入你的计算字段
btw:为什麽不在select 里直接计算? 如: select a,b,a*b from t
 
select *,a+b+c as ABC from Table1;
 
select T.*,T.a+T.b+T.c*2 as ABC from Table1 T;
 
我的问题是 IF QUERY.FIELD1.VALUE=1 ,然后DBGRID 中显示为'是',
也许不用计算字段. 请各位指教.
 
你使用的是什么数据库?
 
我用的是PARADOX
 
为Query的field的OnGetText,OnSetText中设置。
 
procedure TForm1.Query1SIZEGetText(Sender: TField;
var Text: String;
DisplayText: Boolean);
begin
if Sender.Value=2 then
Text:='Shenqw'
else
Text:=IntToStr(Sender.Value);
end;
 
沈大虾:
我先 test 一下,不管怎样,都回给您分,多谢,多谢.
 
At first you can 生成一个计算字段A,
在计算事件中写:
IF QUERY.FIELD1.VALUE=1 then

Query.FieldByName('A')='是'
else
Query.FieldByName('A')='否';
大概意思是这样,但我用的是BCB,pascal 有可能写的不对。
 
select a.*,'是' from table
where FIELD1=1
union
select a.*,'否' from table
where FIELD1<>1
 
比如,对足球联赛球队按成绩排名次,用SQL按,积分,净胜秋,进球数,失球数
排序,使用计算字段‘名次’(integer),使用dataset,如下程序:
procedure TForm4.Query1CalcFields(DataSet: TDataSet);
begin
dataset.fieldbyname('名次').asinteger:=key1;
key1:=key1+1;
end;
{注意:
key1的初始值是1;}
 
请问 LHA 大虾:

怎样在QUERY中产生计算字段?
 
我用沈大虾的方法很好的解决了问题
谢谢!
 
后退
顶部