在多层分布式架构中,当datasetprovider.resolvetodataset=true时候,这时候使用ado方式更新数据。
当我更新的是另外一个数据库视图的时候,通过ado方式产生的sql语句是错误的。
比如现在有两个数据库PPODB,pubs。现在通过一个账号ppo(默认登陆到ppodb数据)更新pubs..titleview这个视图时候,结ado可以正确分解出表名称,但是数据库名竟然被替换成ppodb,这显然是错误的。 当然如果更新的是一个表的话,比如pubs..titles时候,ado可以正确产生update语句。
更新时候提供的sql数据来源指定视图:
select * from [PUBS].DBO.[titleView]
结果ADO产生的更新sql语句,数据库换成ppodb了:
go
exec sp_executesql N'UPDATE "PPODB".."titles" SET "title"=@P1 WHERE "title"=@P2 AND "title_id"=@P3', N'@P1 varchar(3),@P2 varchar(3),@P3 varchar(6)', 'xxx', 'aaa', 'BU1032'
为什么会这样?
当我更新的是另外一个数据库视图的时候,通过ado方式产生的sql语句是错误的。
比如现在有两个数据库PPODB,pubs。现在通过一个账号ppo(默认登陆到ppodb数据)更新pubs..titleview这个视图时候,结ado可以正确分解出表名称,但是数据库名竟然被替换成ppodb,这显然是错误的。 当然如果更新的是一个表的话,比如pubs..titles时候,ado可以正确产生update语句。
更新时候提供的sql数据来源指定视图:
select * from [PUBS].DBO.[titleView]
结果ADO产生的更新sql语句,数据库换成ppodb了:
go
exec sp_executesql N'UPDATE "PPODB".."titles" SET "title"=@P1 WHERE "title"=@P2 AND "title_id"=@P3', N'@P1 varchar(3),@P2 varchar(3),@P3 varchar(6)', 'xxx', 'aaa', 'BU1032'
为什么会这样?
解决方案 »
- Delphi中如何进行HTTP编程,比如:发送一个XML文件给服务器该如何写?
- ADOQUERY的查询问题,请高人帮帮忙!
- 错误显示:没有注册类别.什么原因啊?
- 请教概念问题,交叉报表是什么意思?为什么要用交叉报表?什么时候需要它?实现的效果是什么?
- 有关DLL中字符串返回的问题
- 将应用程序做成试用版的问题??
- 请教:在数据网格中编辑数据后移动到其他记录,如何给出是否保存数据的提示?具体该怎么控制?谢谢!
- ▁▂▃▄▅▆▇ 线程中使用TClientDataSet的可能性有吗???▇▆▅▄▃▂▁
- 第一次用Table控件,我怎么无法Append数据呢?
- 锁定计算机?
- 故国,滚出来,FS爷爷找你打仗!
- 删回复的斑竹滚出来,有本事你把老子的帐号也封了!!!!!!
尽管解决这样的问题不会太容易。
看来估计只有borland公司自己才能替数据库厂商解决了这个问题了