起源:
某Datawindow有n个DDDW字段,其AutoRetrieve均设置为True。程序底层希望统一为所有dddw增加Where约束条件,但是又不希望逐一修改其SQL。解决方式就是通过代码对DatawindowChild的SQL进行修改,增加Where约束。
调试发现DDDW的SQL被替换成功。但是执行时总是报错:提示说需要SetTransObject。
父Datawindow在Retrieve之前已经设置了Transaction对象,子DDDW理应按照父亲的Transobject自动设置的。
只好修改代码如下:
如上,在SetSQLSelect之后调用了SetTransObject,运行时依旧报错:提示说需要SetTransObject。郁闷!
察看PB帮助的SetSQLSelect方法使用说明,发现了奥秘:
You must use the SetTrans or SetTransObject method to set the transaction object before the SetSQLSelect method will execute.
原来在SetSQLSelect之前,dwc或者dw必须设置TransObject,在其后设置是不起作用的。