本篇文章3164字,读完约8分钟
数据更新的扩展设置
高速缓存更新
自动增量值生成
及时获取最新数据
、和是允许检索和数据的组件。 要为各个组件创建数据,请在属性中指定键字段名称。 空字符串和所有基于odbc的提供程序尝试从发送其他查询的服务器请求有关主键的新闻时,可能会对性能产生负面影响。 从服务器发送的元数据和数据将由SQL服务器和mysql提供程序使用。 sqlserver提供程序具有uniquerecords选项,可以通过从查询中省略主键字段来自动从表中请求主键字段。
如果要打开的数据集没有唯一标识记录的字段,可以通过将oracle、firebird2.0、postgresql和sqlite服务器用作服务器来解决此问题。 对于oracle和sqlite服务器,必须将rowid列添加到查询中。 带firebird 2.0 -数据库密钥。 如果表是用oid创建的,则可以使用postgresunidac上最新的动态ql服务器oid列作为关键字字段。
对于包含来自多个表的数据的数据集,默认情况下只能更新一个表。 必须使用updatingtable属性指定要更新的表的名称。 如果未指定,则可以更新属于字段列表中第一个字段的表。 如果将字段的只读选项设置为true,则在默认情况下,自动生成的更新语句中未使用的字段将被标记为只读。 对于使用表、同义词、数据库链接和聚合字段的多个复杂查询,可以使用oracle、postgresql和所有基于odbc的提供器来启用扩展字段信息选项
如果插入/发布、更新或更新操作影响多条记录,unidac会引发异常。 要抑制这些异常,必须将“严格更新”选项设置为“假”。
由于可以输入update-sql语句,因此可以更灵活地控制数据创建的更改。 它们由sql插入、sql日期、sql删除和sql刷新属性表示,在插入/发布、/发布、删除和刷新操作中自动执行。 在设计时,可以在组件的sqlgenerator选项卡中生成缺省的更新sql语句。 生成的语句可以更改。 但是,如果要为每个记录动态生成更新查询,则只将更改的值发送到服务器。
这个功能在特定的情况下是不够的。 可以使用tuniupdatesql组件进行扩展。 使用tuniupdatesql,可以将单个tun isql/tunique ry/tunisteredproc组件与单个更新操作相关联。
高速缓存更新
unidac允许客户端缓存所谓的“缓存更新”,并批量分发所有更新。 这意味着在调用“发布”或“删除”后,更改不会立即反映在服务器上。 调用applyupdates方法时,所有缓存的更改都会发布到服务器上。 可以使用updatebatchsize选项设置要公开的更改数。
如果为数据库表中的列定义了缺省值或表达式,则可以设置unidac,以从服务器请求这些表达式。 表达式分配给tfield对象的defaultexpression属性。 如果设置了默认表达式的值,则将其替换。 此行为由缺省情况下禁用的缺省选项控制。
自动增量值生成
对于数据集,通常不方便通过手动输入键字段值来自动生成。 这有三种方法。
在sqlserver、mysql和sqlite中,可以在表中定义自动增量列。 这个不需要在客户机上追加解决。 必须为sapsybasease、oracle、postgresql和interbase提供程序指定特定于keysequenceinterbase的密钥生成器选项。 自动生成的值将自动反映在数据集上。
第二种方法是在beforepost事件解决方案中生成并输入关键字字段值。 一般来说,这种方法需要进行查询以从服务器获取新闻。 因此,这种方法只在特定情况下可能有用。
第三种方法是创建在字段中输入适当值的afterinsert触发器。 但是,返回由触发器生成的值时出现问题。 这个问题可以处理,但请参见下一段。 这个做法被认为是最合适的。 所以尽可能选择别的做法。
但是,可以使用特定于queryidentity的选项禁用对sqlserver提供程序生成的值的检索。 这样可以提高插入记录的性能。
在某些情况下,可以使用unidac自动更新数据集中的记录,使其值保持最新。
更新选项允许unidac在以前、插入或删除后更新当前记录。 这是通过执行附加查询来完成的。
“刷新”选项允许在插入或更新后刷新当前记录。 这与“刷新选项”类似,但业务方法不同。 这样可以获得比更新选项更高的性能。 基于mysql、sqlite和odbc的提供程序不支持DML刷新。
如果需要刷新插入或更新的当前记录中的字段,则必须在更新查询中定义名称与数据集的字段名称相对应的输出参数,并将“returnparams”选项设置为
执行真.更新查询后,数据集读取输出参数的值,并将其放入相应名称的字段中。
写日记
默认状态为发行行。 根据需要为设置或属性。
默认情况下不同。 请参阅设定属性( [] )。 也有同样的情况。
默认情况下,空单元格自动添加到单点varchar类型的字段中。 请看设定选项。 trimvarchar=真
4.uniquery在插入时可能会报告错误。 如果字段不是空,并且未输入前台操作,请将requiredfields设置为true
五点五分。 uniquery创建数据集。 缺省情况下,通过关键字生成sql语句并发送数据。 另一种方法是设置更新SQL和设置密钥字段(请参见SQL跟踪)。
6.6的数据排序属性。 uniquery是索引字段名称7。 需要注意数据的提交顺序。
withmyquerydo
开始对话。 开始事务处理
我会尝试。 修改数据
应用更新数据库
对话。 提交; {onsuccess,committhechanges }
反对“存储更新”
提高; { raiseexceptionpreventacalltocommitteedate! }
结束;
提交更新{2}成功,建立更新
结束;
我的查询。 应用更新
我的查询。 提交更新
8.datam提供函数克隆(源,死亡)。 首先,dest是tvirtualtable,源数据集是完全复制的。 其次,dest是一个uniquery,它将源的sql复制到dest并打开
1 )我们经常采用多表相关,需要前台制作数据。 例如,在表a和表b中,如果需要在前台更改这两个表字段,则将只读设置为假。
2 )特别是观察: uniquery的情况。 setreadonly设置为true (真)。 此外,该表有自我增加的id。 在发送数据时发生错误,在跟踪sql时,可以看到前端传递了null值的这个id。
10.uniquery.refreshrecord可以刷新当前选定的数据
11 .经常在uniquery的sql中定义参数。 传递参数时,需要进行以下特殊观察
q执行。 SQL.text:= ' select * fromyhbwheresyhbh =
_ yhbh ';
1 )最安全的写法
q执行。 参数名称( ' p _ yhbh ' ) .数据类型: = ft字符串;
q执行。 参数名称( ' p _ yhbh ' ) .参数类型: =正弦输出;
经营干部。 按名称顺序排列参数( ' p _ yhbh ' )。 asstring3360= '张三'; (在此可以用值替换字符串。)
2 )可以简单地测试一下写法,但我不知道很多复杂的sql参数是否正确
经营干部。 按名称顺序排列参数( ' p _ yhbh ' )。 asstring3360= '张三'; (如果未指定参数的数据类型以及接收和发送的类型,则不要使用值。 )
标签: #unidac最新动向
标题:“unidac最新动态”
地址:http://www.hongyupm.com/gnyw/9411.html