Delphi 6 的 WebSnap 中 DataSetAdapter 组件的 Locate 方法有一个大 BUG!!!
请看:
var LocateParams:TLocateParams;
with DataSetAdapter do
begin
LocateParams:=LocateParamsList.Add;
LocateParams.AdapterName:=Name;
LocateParams.AddParam('KeyfieldName','abc''');
Locate;//抛出“Unterminated string constant”异常!!(未终结的字符串常量
end; 可能 WebSnap DataSetAdapter 组件的记录定位都基于此 Locate 方法,
如果使用不当,你要惨了!
例如:
在 Web Application Page Module 上,
放一个 DataSetAdapter 组件,为它指定一个 DataSet 组件,让关键字段是字符串类型,
在 DataSetAdapter 的 Actions 中选取所有的 Action。
再配置 AdaptePageProducer 如下:
AdapterFieldGroup ,添加所有 Field
AdapterCommandGroup ,添加所有 Command
运行应用程序来测试:
1.点击 NewRow 按钮新添一条记录
2.输入字段值,在关键字段处输入:abc'
3.点击 Apply 提交记录
4.然后你不管按 NextRow, DeleteRow .....哪个按钮都不正常了
5.惨了! 先到数据库中手工删除这条记录吧,以后再想别的办法。BORLAND 的设计人员怎么了???
请看:
var LocateParams:TLocateParams;
with DataSetAdapter do
begin
LocateParams:=LocateParamsList.Add;
LocateParams.AdapterName:=Name;
LocateParams.AddParam('KeyfieldName','abc''');
Locate;//抛出“Unterminated string constant”异常!!(未终结的字符串常量
end; 可能 WebSnap DataSetAdapter 组件的记录定位都基于此 Locate 方法,
如果使用不当,你要惨了!
例如:
在 Web Application Page Module 上,
放一个 DataSetAdapter 组件,为它指定一个 DataSet 组件,让关键字段是字符串类型,
在 DataSetAdapter 的 Actions 中选取所有的 Action。
再配置 AdaptePageProducer 如下:
AdapterFieldGroup ,添加所有 Field
AdapterCommandGroup ,添加所有 Command
运行应用程序来测试:
1.点击 NewRow 按钮新添一条记录
2.输入字段值,在关键字段处输入:abc'
3.点击 Apply 提交记录
4.然后你不管按 NextRow, DeleteRow .....哪个按钮都不正常了
5.惨了! 先到数据库中手工删除这条记录吧,以后再想别的办法。BORLAND 的设计人员怎么了???
解决方案 »
- 程序员,你上班的时候可以上网吗?(送分贴)
- 如何程序互斥,只打开一次?
- 极度郁闷!放分!
- 如何实现RichEdit的打印功能?急.急
- 女友出的问题,答不出来不能见面,在线求救??????????????
- 能否用TADOConnection,获得sql server 中的数据库名,或者调用其 Edit Connectionstring 对话框
- 如何用delphi 调用VC写的DLL,需要例题非常感谢
- 我要崩溃了,怎么也弄不出来,很简单的问题,关于TStream的问题,快来抢分
- 哪地方有DELPHI资料大全(双CD)卖,我买过VC、VB资料大全,就是没有DELPHI资料大全,不知该CD 有何内容,内容主要来自何处
- 请教-关于在缓存更新情况下不能正确更新主从表的问题
- 请教:我把Clientdataset的Active设为True时出现提示:BOF或EOF中有一个是"真",或者当前的记录已经被删除,所需的操作要求一个当前的记录.
- 明华接触式读写器有什么外挂可以把它放在柱子上吗?
不过这种情况我不会碰到的:
1、我从来不用字符串类型做KeyField,这样数据库的性能差
2、我很少用DataSetAdapter,一般用PageAdapter或Adapter