如何在TQuery的计算字段中增加数字?

时间:2017-11-13 12:32:06

标签: delphi foxpro bde quickreports tquery

我有TQuery计算字段N 如何在示例中增加数字(N以5开头):

enter image description here

我尝试了这个,但没有:

procedure TForm1.Query1CalcFields(DataSet: TDataSet);
var i:integer;
begin
  i := strtoint(edit2.Text);
  Query1['N'] := inttostr(i+1);
end;

结果:

N
2
2
2
2
.
.

注意:Foxpro数据库,我使用BDE进行连接,它不一定是计算字段,我希望Incremented值在quickreport的打印中使用它,就像每个页面(不是pagenumber)的单个引用一样。 / p>

2 个答案:

答案 0 :(得分:1)

我在 @kobik

的帮助下找到了这个解决方案

TQRLabel 的印刷中,我添加此代码而不需要计算字段或其他可变:

procedure TForm1.QRLabel1Print(sender: TObject; var Value: string);
begin
value:=inttostr(Query1.RecNo+strtoint(edit2.Text)-1);
end;
  • Tedit在运行时为起始编号服务。

答案 1 :(得分:0)

这是我测试它的一种简单方法:

1-声明用于保存自动编号的全局变量

2-将其设置为FormShow至5

3-在OnCalcFields中将全局变量分配给新字段

4-增量全局变量

注意:不要使用TEdit或任何东西来显示计算字段的结果,因为它只显示第一个结果。但所有结果都会正确保存在表格或查询中。

代码

全局变量:

var
  Form1: TForm1;
  i : Integer; 

表格展示:

procedure TForm1.FormShow(Sender: TObject);
begin
    i := 5;
end;

Calc Filed:

procedure TForm1.adoqry1CalcFields(DataSet: TDataSet);
begin
   adoqry1['n'] := i;
   //OR adoqry1N.AsInteger := i;
   //OR adoqry1.FieldByName('n').AsInteger := i;

   i := i + 1;
end;

最后,我使用ADOQuery进行测试。