起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 922|回复: 0

如何得到数据集的最终SQL

[复制链接]
发表于 2005-1-12 11:59:39 | 显示全部楼层 |阅读模式
对于TSQLDataSet.SQL来说
  TSQLDataSet.SQL.Text 内保存的SQL语句是设计期间对“标准数据集”的SQL语句的最初设置,其中的SELECT语句可能并不是发往数据库的最终语句。发往数据库的SELECT语句可能会受到一些“业务”上的条件约束,这些条件约束只会影响到SELECT语句的WHERE部分。会影响到WHERE部分的设置包括下面几种:
    数据集过滤部分:SQLFilter、UserFilter
    各种策略部分:数据集策略中的数据范围、数据语义策略中的数据范围、信息策略中的默认过滤(默认过滤最终会改变UserFilter)
    流程部分:流程过滤(内部使用的是数据语义策略)

当数据集打开后,可以通过
   TSQLDataSet.DataFetch.CommandText
   TSQLDataSet.DataFetch.Params
  获取到所有上面列到的各种条件约束部分和TSQLDataSet.SQL.Text的一个组合后的SELECT语句以及参数。注意在组合WHERE部分是是使用AND运算符。

另外如果设置了数据集的“分页取数据”或主从关系中的“需要时取”也会影响到发往数据库的SELECT语句,这是比较底层的实现了,只会影响到每次取数据的记录数(或者范围),对于应用开发不需要太多的了解。TSQLDataSet.DataFetch.CommandText中是体现不出来的。TSQLDataSet.DataFetch.CommandText中的SELECT语句也就是数据集在某种特定的环境下能够(或允许)获取到的所有的数据的SQL语句。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-5-3 01:41 , Processed in 0.040320 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表