起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 158|回复: 8

【搞定】[问题]重新定制数据集Select语句的问题?

[复制链接]
发表于 2007-12-11 19:45:29 | 显示全部楼层 |阅读模式
在业务数据集执行查询前,想在执行的Select中,加入定制锁的关键字。

想知道,TSQLDataSet执行Select前的事件是什么及那个属性可以取到要执行的Select 语句?

试着在数据集打开前,即BeforeOpen事件中,修改这个TSqlDataset.DataFetch.CommandText属性的内容,但没有作用。不知该怎么实现了?
回复

使用道具 举报

发表于 2007-12-12 09:36:55 | 显示全部楼层
procedure TYWXX12.DataSetBZSJJ1BeforeOpen(DataSet: TDataSet);
begin
     TSqlDataset(dataset).SQL.Text:='SELECT *  FROM SJB1 where sz=2';
end;
这样写,sql是能修改的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-12 10:54:30 | 显示全部楼层
但当我改成Select * from commonMaster with (readpast) 时,出下面的错误。

给查询语句Select * from commonMaster with (readpast) 加条件(BillTypeCode='015' )的时候出现异常:不支持的查询语句:Select * from commonMaster with (readpast)

应该在平台生成TSQLDataSet(dataset).DataFetch.CommandText 后,再改他的值,然后再执行。不知可行吗?
回复 支持 反对

使用道具 举报

发表于 2007-12-12 14:20:06 | 显示全部楼层
为啥不写在TSqlDataset(dataset).SQL.Text 属性里??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-12 14:39:30 | 显示全部楼层
就是写在TSqlDataset(dataset).SQL.Text 里,
Select * from xxxxx with (readpast) where ....
但执行时会出类似3楼的错误。
回复 支持 反对

使用道具 举报

发表于 2007-12-12 14:45:05 | 显示全部楼层
procedure TYWXX12.DataSetBZSJJ1BeforeOpen(DataSet: TDataSet);
begin
     TSqlDataset(dataset).SQL.Text:='SELECT *  FROM SJB1 with (readpast) where sz=2';
end;
没报错。不知道是不是我写的不对?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-12 14:56:57 | 显示全部楼层
procedure TYWXX12.DataSetBZSJJ1BeforeOpen(DataSet: TDataSet);
begin
     TSqlDataset(dataset).SQL.Text:='SELECT *  FROM SJB1 with (readpast) where sz=2';
     TSqlDataset(dataset).SQLFilter:=' sz=3';
     TSqlDataset(dataset).SQLFiltered:=True;
end;
你象上面的这样写,再试试,也就是加上SQLFilter
回复 支持 反对

使用道具 举报

发表于 2007-12-12 15:05:48 | 显示全部楼层
with语句本来是不支持的。  所以不要用sqlfilter了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-13 08:00:40 | 显示全部楼层
结贴吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-2 08:08 , Processed in 0.041192 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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