1

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

在此处输入图像描述

我试过这个但没有:

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 连接,它不必是计算字段,我希望增量值在快速报告的打印中使用它,就像每个页面的单个参考(不是页码)。

4

2 回答 2

1

我在@kobik的帮助下找到了这个解决方案

在打印TQRLabel 时,我将此代码添加到计算字段或其他变量中,并且不需要:

procedure TForm1.QRLabel1Print(sender: TObject; var Value: string);
begin
value:=inttostr(Query1.RecNo+strtoint(edit2.Text)-1);
end;
  • The Tedit To Costume 在运行时开始编号。
于 2017-11-14T10:17:41.373 回答
0

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

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

2-将其设置FormShow为5

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

4-递增全局变量

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

代码

全局变量:

var
  Form1: TForm1;
  i : Integer; 

表格展示:

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

提起:

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

   i := i + 1;
end;

最后,我用ADOQuery.

于 2017-11-13T21:16:00.227 回答