首页 > 其他分享 >为lazarus TDataSet增加类似TClientDataSet的Delta功能

为lazarus TDataSet增加类似TClientDataSet的Delta功能

时间:2024-06-03 12:01:00浏览次数:28  
标签:function DataSet BufDataset1 lazarus TClientDataSet Delta TDataSet procedure

为lazarus TDataSet增加类似TClientDataSet的Delta功能

适用于所有TDataSet
只需在unit的uses添加DataSetDelta。
BufDataset1.ActivateMonitoring(true)//启动Delta功能
BufDataset1.GetActionSQL('test');//根据Delta生成SQL
继续开源:
https://github.com/szlbz/DataSetDelta.git

unit DataSetDelta;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, BufDataset, DB, TypInfo,Variants;

type

  TDataStateValue = (dsvOriginal, dsvDeleted, dsvInserted, dsvUpdated);

  TDataSetChangesHelper =class Helper for TDataset
  public
    procedure createTable;
    function GetNewDataSet : TBufDataSet;
    function GetOldDataSet : TBufDataSet;
    function GetActionSQL(const ATableName : String; const AKeyFields: String = ''): String;
    function GetChangedCount:int64;
    procedure BeforeInserts(DataSet: TDataSet);
    procedure BeforeEdits(DataSet: TDataSet);
    procedure BeforeDeletes(DataSet:TDataSet);
    procedure AfterPosts(DataSet: TDataSet);
    procedure ActivateMonitoring(Value:Boolean);
    property ChangedCount:int64 read GetChangedCount;
  end;

implementation

 

procedure TForm1.Button2Click(Sender: TObject);
var sql:string;
begin
  sql:=BufDataset1.GetActionSQL('test');
  if sql<>'' then
    memo1.Lines.Add(sql);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  memo1.Lines.Clear;
  BufDataset1.ActivateMonitoring(true);
end;

 

 

标签:function,DataSet,BufDataset1,lazarus,TClientDataSet,Delta,TDataSet,procedure
From: https://www.cnblogs.com/qiufeng2014/p/18228518

相关文章

  • delta皮肤预览修改器_暂不支持新建~
    https://files.cnblogs.com/files/blogs/758994/DeltaSkinEditor.zip?t=1716968230&download=true程序链接,C#编写,源代码在delta_skin_editor:C#deltaskineditor(gitee.com) 要先修改皮肤文件扩展名 由 deltaskin为zip,然后解压缩到某文件夹,里面会有json文件和几个pdf,......
  • 安装和使用delphi最后的余辉:lazarus集成编译环境@FreeBSD
    遥想当年,最牛最流行的两个编程IDE是Delphi和VisualBasic,结果这么多年下来,VB已经没有往昔的热度,而Delphi也已经消亡在历史的长河中。不过Delphi的精神没消失,lazarus坚守delphi的编程风格,散发delphi最后的余辉。Lazarus介绍Lazarus是一个基于FreePascal的跨平台集成开发环境(I......
  • autocad.net 图元Delta属性居然受UCS影响
    今天在进行几何运算时,发现在UCS非世界坐标系的时候运算结果不正确这与我以往的认知出现了冲突,我个人的经验,只有在用户交互的时候(如GetPoint,GetEntity),才用得到ucs。当一个图元已经从id拿到,转化为Entity时,从改图元属性上取出的属性应该为均为世界坐标系。经过我的排查后发现,Li......
  • lazarus交叉编译
    lazarus交叉编译虽然lazarus可以安装在windows,linux,macos。。操作系统上面,但是交叉编译有其独到的方便之处,比如,可以在windows上用lazarus编译所有OS平台的程序。1)下载并编译fpcupdeluxe下载地址:https://github.com/LongDirtyAnimAlf/fpcupdeluxe.git下载完成,用lazarus编译好......
  • Lazarus使用FFMpeg解码视频文件
    一、下载ffmpeg-delphi-pascal-headers下载地址Headers|FFVCL–DelphiFFmpegVCLComponents(VideoEncoderandVideoPlayer)下载 Releases·BtbN/FFmpeg-Builds·GitHub 下载与上面版本对应的DLL库二、引用单元libavformat,libavcodec_codec,libavcodec,FFUtils......
  • lazarus数据序列为JSON
    uses  DataSet.Serialize, fpjson;varobj:tjsonobject;procedureTForm1.Button1Click(Sender:TObject);beginuniquery1.Close;uniquery1.SQL.clear;uniquery1.sql.Add('selecttop2*fromtunit');uniquery1.Open;memo1.text:=uniquery1......
  • 上架即封神!3.6k Star 的开源游戏模拟器,Delta 冲上 App Store 免费榜
    一直以来,苹果设备的应用商店(AppStore)都是禁止游戏模拟器上架,所以iPhone/iPad用户不能直接安装GBA、红白机之类的模拟器应用,这也让想在iPhone上重温童年游戏机的机友们,十分羡慕Android用户。现在,iPhone/iPad用户终于可以光明正大地在国服「AppStore」下载游戏机模拟器......
  • linux使用官方安装包安装的lazarus如需修改lazarus文件需要用root权限
    最近有网友反馈linux使用官方安装包安装的lazarus,按尝试解决linux下Lazarus2.2.0版代码编辑器和SynEdit不支持中文输入的Bug(2024.02.27解决《修正LinuxLazarusIDE代码编辑器中文输入》后用fpcupdeluxe重新编译lazarus时出错的Bug)-秋·风-博客园(cnblogs.com),修改后重构laz......
  • QFComponent for lazarus增加新控件TQFGridPanelComponent
    TQFGridPanelComponent控件支持在单元格绑定可视控件,运行时单元格绑定的控件会吸附到相应的单元格里。|姓名|[#][C2]单位|办公地址|备注||:-:|:-:|:-:|:-:||秋风6|[bm4]检测中心1|南山建工村1|||秋风7|检测中心2|<COMPNAME=name3>[#][c4]南山建工村2|||[c2]地址|<COMPNAME=n......
  • Lazarus使用YoloV4
    YoloV4可以用opencv4.0以上加载和使用。但是Lazarus只能支持到opencv2.4.13。所以不能直接使用yolov4,后来只好用VC写了一个dll,调用Opencv4.81再调用YoloV4。在Lazarus下调用这个dll就可以用yolov4了,方法如下一、声明dll库//初始化Yolo库functionYoloInit(cfgfile:pchar;wfil......