zoukankan      html  css  js  c++  java
  • DataSnap使用UniDac处理自增长字段

    原来使用ado来访问数据库,用在DataSnap中也很方便。后来便一直使用UniDac,可发现UniDac如果用在DataSnap中要比ado麻烦很多,尤其对自增长字段、缺省值的处理上,感觉对DataSnap支持不好(普通C/S应用还是非常好的)。

    在Unidac官网上看到一个关于处理DataSnap中的AutoInc字段问题,记录在下面,我没有验证。

    I use DataSnap delphi 2010.

    UniQuery Component DMLRefresh Can fetch autoinc value,

    but I cannot use it with datasnap.

    I use Follow Code.

    procedure TForm.dspDataAfterUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind); begin if UpdateKind = ukInsert then quData.Fields[0].NewValue := GetLastID; end;

    GetLastID function is fetch autoinc value.

    the code works grate with DBExpress. But not UniDac.

    Answer:

    To solve this problem, it's needed to set the following options:
    Code: Select all
    TDataSetProvider.ResolveToDataSet := True;
    TUniQuery.RequiredFields := False;
    TUniQuery.SetFieldsReadOnly := False;In this case UniDAC will generate the SQL code, and the identity field value will be set automatically to the TUniQuery component. To update the identity field value in the TClientDataSet, component it's needed to use the following code:
    Code: Select all
    procedure TForm1.DataSetProvider1AfterUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind);
    begin
      if UpdateKind = ukInsert then
        DeltaDS.Fields[0].NewValue := UniQuery1.Fields[0].AsInteger;
    end;

  • 相关阅读:
    Notepad++技巧
    LinuxTips从命令行到脚本
    Linux任务前后台的切换
    win7 中使用NFS共享
    Python实例31[批量对目录下文件重命名]
    rsync 的核心算法
    linux/unix设计思想
    linux进程的状态
    Perforce查看workspace sync到的changlist
    python类库26[sqlite]
  • 原文地址:https://www.cnblogs.com/fhweixin/p/13743168.html
Copyright © 2011-2022 走看看