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;

  • 相关阅读:
    《Vue.js 2.x实践指南》 已出版
    《H5+移动应用实战开发》已出版
    关于《ASP.NET MVC企业级实战》
    ASP.NET MVC企业级实战目录
    ASP.NET MVC4入门到精通系列目录汇总
    网站服务架构
    ASP.NET MVC搭建项目后台UI框架—1、后台主框架
    webpack介绍—上
    通过一个vue+elementUI的小实例来讲解一下它们是如何使用的
    不要为自己学历低找借口
  • 原文地址:https://www.cnblogs.com/GarfieldTom/p/3198250.html
Copyright © 2011-2022 走看看