在PB中,用GetItemString(row,colname)来定位取数,比如当前行为第1行,要取100行的数据,可以用GetItemString(100, 'name'),取完后当前行仍然为第1行
但在Delphi中,必须通过数据集的定位如next、MoveBy等,而且会影响当前的数据行,很不方便,比如在CalcFields事件中能用这些定位函数吗,会不会引起混乱?或者是不是还有其他的方法,大家谈谈看法吧……
但在Delphi中,必须通过数据集的定位如next、MoveBy等,而且会影响当前的数据行,很不方便,比如在CalcFields事件中能用这些定位函数吗,会不会引起混乱?或者是不是还有其他的方法,大家谈谈看法吧……
with query1 do
begin
close;
sql.clear;
sql.add('select * from dbo.table1 where id='23'');
open;
end;用FILTERED过滤:
table.Filtered := false;
table.Filter := '字段1='''+dbcombobox1.text+'''';用LOCATE:
table.Locate('a',a,[loCaseInsensitive, loPartialKey]);用Seek
ADODataSet1.Seek(VarArrayOf([90030, 90020]), soFirstEQ);
1到12月的科目金额相比,2月比1月,3月比2月……12月比11月
比例是一个计算字段,在CalcFields事件中计算
请问应如何编比较好?
For i:=1 to 11
rate:=dw_1.GetItemDecimal(i+1,'money')/dw_1.GetItemDecimal(i,'money')
next即可,多简单啊
with queryX do
begin
close;
sql.clear;
sql.add('select rowname from table1 where colname')
sql.open;
end.
当然是用TQuery拉,这还用说吗,你上面的代码不能解决什么问题啊
var
priorValue:double;OnCalcField:
if DataSet.RecNo <> 1 then
Dataset['Rate'] := priorValue / DataSet['Value'];
priorValue := DataSet['Value'];