解决UniQuery新增数据时,FireBird3自增字段出错问题

FB3已经支持在主键字段上创建自增字段,语法如下:

B31_1   INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

注:

1、B31_1为字段名;

2、FB3的自增字段仍是生成器(Generator)的方式;

一直以来不曾用过FB3的自增字段,今天建了一个表B31试一下。

with uniQuery do

begin

    KeyFields:='B31_1';

    UpdatingTable:='B31';

    SQL.Text:='select * from B31 order by B31';

    Open;

end

接着写新增数据行的代码:

with UniQuery do
begin
      Append;
      //FieldByName('B31_1').AsInteger:=i;
      Post;
      ApplyUpdates();
end;

但是当执行到Post;就会出错,提示字段'B31_1'需要一个“值”。

问了一些Q群的群友,答案都莫衷一是。因此,只能自己找些办法一试了。后来通过UniDAC的帮助文件才得到答案。

为使UniQuery能回传自增字段的序号,需要设置UniQuery中的SpecificOptions属性(双击UniQuery后,选择Options选项卡)。其中,GeneratorMode属性设置返回自增字段的动作,是gmInsert或是gmPost;GeneratorStep属性设置步长;KeyGenerator设置自增字段生成器的名称(这是重点);而且,必须设定主键字段。也即是说KeyGenerator必须和KeyFrelds配合使用。

这样当执行到Append、或是Post语句就会得到返回的自增序号。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值