TIBUpdateSQL
【龙豪软件工作室 (3ASoft Studio) / 唐辉】
--------------------------------------------
TIBUpdateSQL 也是由 TIBCustomDataSet 派生出来的。
用 TIBUpdateSQL 来指定一组 SQL 语句,用于在缓存更新的情况下更新只读的 TIBQuery 控件数据。如对 TIBQuery 控件进行 INSERT、DELETE、UPDATE、REFRESH等操作。其中TIBUpdateSQL 所指定的 SQL 语句必需符合 SQL-92 标准。而 TIBQuery 控件是通过 UpdateObject 属性来指定 TIBUpdateSQL 对象的。
【属性】
【DataSet】
【申明】 __property TIBCustomDataSet* DataSet
在设计时,当一个数据集的 UpdateObject 属性指定为一个 TIBUpdateSQL 对象时,TIBUpdateSQL 控件的 DataSet 属性将自动地指定那个数据集控件。
如果是在运行期间动态地生成,必需手动设置其 DataSet 属性来指定所要更新的数据集控件。
【DeleteSQL】
【申明】 __property Classes::TStrings* DeleteSQL
此属用于设置一个 DELETE 的 SQL 语句,当应用程序在缓存更新情况下试图删除一条记录时,将自动执行此 DELTE 语句。在设计时,我们可以通过点击 DeleteSQL 右边的按钮,打开输入对话框,书写我们的 DELTE 语句,如:
delete from Employee
where
Emp_No = :OLD_Emp_No
注意:在上面的例子中,我们了"OLD_"标识符用于区别删除前与删除后的字段数据。
而在运行期间,我们必需通过程序来书写一段 DELETE 语句到 DeleteSQL 属性中。
【InsertSQL】
【申明】 __property Classes::TStrings* InsertSQL
此属用于设置一个 INSERT 的 SQL 语句,当应用程序在缓存更新情况下试图增加一条记录时,将自动执行此 INSERT 语句。在设计时,我们可以通过点击 InsertSQL 右边的按钮,打开输入对话框,书写我们的 INSERT 语句,如:
insert into Country
(Country,
Currency)
values
Country,
:Currency)
而在运行期间,我们必需通过程序来书写一段 INSERT 语句到 InsertSQL 属性中。
【ModifySQL】
【申明】 __property Classes::TStrings* ModifySQL
此属用于设置一个 UPDATE 的 SQL 语句,当应用程序在缓存更新情况下试图更新一条记录时,将自动执行此 UPDATE 语句。在设计时,我们可以通过点击 ModifySQL 右边的按钮,打开输入对话框,书写我们的 UPDATE 语句,如:
update Employee
set Last_Name = :Last_Name
where Emp_No = :OLD_Emp_No
注意:在上面的例子中,我们了"OLD_"标识符用于区别更新前与更新后的字段数据。
而在运行期间,我们必需通过程序来书写一段 UPDATE 语句到 UpdateSQL 属性中。
【Query】
【申明】 __property Ibquery::TIBQuery* Query[Db::TUpdateKind UpdateKind]
此属性用于返回一个 TIBQuery 控件对象,并且其中的 SQL 属性指向 TIBUpdateSQL 控件所对应的 SQL 更新语句。其参数 UpdateKind 的取值如下:
取值 说明
ukModify 返回一个 TIBQuery 对象,
其 SQL 属性指向 TIBUpdateSQL 控件中的 ModifySQL 属性。
ukInsert 返回一个 TIBQuery 对象,
其 SQL 属性指向 TIBUpdateSQL 控件中的 InsertSQL 属性。
ukDelete 返回一个 TIBQuery 对象,
其 SQL 属性指向 TIBUpdateSQL 控件中的 DeleteSQL 属性。
【RefreshSQL】
【申明】 __property Classes::TStrings* RefreshSQL
此属用于设置一个 SELECT 的 SQL 语句,来刷新数据集记录。在设计时,我们可以通过点击 RefreshSQL 右边的按钮,打开输入对话框,书写我们的 SELECT 语句,如:
SELECT Country,
Currency
FROM Country
WHERE Country = :Country
而在运行期间,我们必需通过程序来书写一段 SELECT 语句到 RefreshSQL 属性中。
【SQL】
【申明】 __property Classes::TStrings!ALink(TStrings_Object,1)* SQL[Db::
TUpdateKind!ALink(TUpdateKind_Type,1) UpdateKind]
此属性在 ModifySQL、InsertSQL 或 DeleteSQL 属性中返回一个 SQL 语句,具体的设置依赖于参数 UpdateKind 的取值。
参数 UpdateKind 取值如下:
取值 说明
ukModify 返回一个 SQL 语句用于在数据集中更新一条记录。
ukInsert 返回一个 SQL 语句用于在数据集中插入一条记录。
ukDelete 返回一个 SQL 语句用于在数据集中删除一条记录。
【方法】
【Apply】
【申明】 virtual void __fastcall Apply(Db::TUpdateKind UpdateKind);
此方法用于设置一个参数,然后执行这个参数所指定的 SQL 语句。
参数 UpdateKind 取值如下:
取值 说明
ukModify 在 ModifySQL 属性中建立并执行其中的 SQL 语句
ukInsert 在 InsertSQL 属性中建立并执行其中的 SQL 语句
ukDelete 在 DeleteSQL 属性中建立并执行其中的 SQL 语句
【ExecSQL】
【申明】 void __fastcall ExecSQL(Db::TUpdateKind UpdateKind);
在缓存更新的情况下,此方法用于执行一条其参数所指定的 SQL 语句来在更新、删除或插入一条记录。
参数 UpdateKind 取值如下:
取值 说明
ukModify 执行一条 SQL 语句用于更新数据集的一条记录
ukInsert 执行一条 SQL 语句用于插入数据集的一条记录
ukDelete 执行一条 SQL 语句用于删除数据集的一条记录
【SetParams】
【申明】 void __fastcall SetParams(Db::TUpdateKind UpdateKind);
此方法将用 SQL 语句中字段值来代替同名的参数值。
和上面的方法一样,UpdateKind 取值有ukModify、ukInsert、ukDelete三种:
【TIBUpdateSQL】
【申明】 __fastcall virtual TIBUpdateSQL(Classes::TComponent* AOwner);
通过 new 字符来创建一个新的 TIBUpdateSQL 对象。