绝对高难度三层架构问题(100分)

R

riisse

Unregistered / Unconfirmed
GUEST, unregistred user!
一、数据库Oracle,一个数据库服务,其中有3个oracle用户,一个主用户MainUser,另两个
分别为user1,user2,user1和user2用户拥有完全一样的对象(表、视图等)
二、应用服务器只有一个TDataBase,即用MainUser用户连接数据库;DCOM通信协议
三、客户端,同一个模块中,可以动态切换user1和user2,实现增、删、改、提交同样
的表数据,如果单表,用的TClientDataSet、TDataSource、TDBGrid控件,TClientDataSet
.CommantText := select * from user1.tablename,TClientDataSet.Open没问题,但是
在Delete、Edit、Append后ApplyUpdates时报“无有效的表名或视图名”错误。这个问题
很急,要是解决不了,我就只有跑路了。先谢谢各位大侠啦。
 
还是你的权限不够,只要一个mainuser就够了,你的user1,user2可在程序中自己定义,不要用ORACLE的用户
 
应该是权限的问题,你可以在sql plus中用user1试一试的.
 
完全没有必要用三个Oracle用户,这样违背了三层架构的原意,把问题搞的更复杂了
另外搞一个用户权限表,用来控制登陆用户(你的应用系统用户,不是Oracle用户)
的权限
 
权限没问题的,我已经将3个用户的权限都开到最大了,在sql explorer和pb下都可以的。
 
to luyear:
由于我做的这个系统比较特殊,大家讨论了很多次了,数据库必须这样设计。我都已经
做好权限分配了。包括用户模块权限以及用户数据库用户权限,有占烦,但都已经搞掂了。
如果纯粹用SQL来修改user1和user2下的表没问题,现在用感应控件就出问题了,以前讨论
方案时只测试了SQL,没测试感应控件,如果不能用感应失控件,我们以前项目做的程序就
没得用了,只有重新写过,但我们现在剩下的时间无几了。
 
既然用oracle数据库,那数据量肯定不小,干嘛直接在数据感知控件中修改数据,如果要
修改数据,干脆再开一窗口来修改然后用SQL语句提交修改.

//但是你的问题我不清楚,严重关注.
 
to hbezwwl:
我们做的是一个比较大型的MIS(大概有800多张表),我只是负责的几个子系统中的一个,但恰恰这个
子系统比较特殊,该子系统要求能各自使用部门能备份恢复自己的那部分数据.用感应控件可
以少写些代码啊,我们的开发时间不到两个月.如果用感应控件的话,以前我们在一个数据库
用户的环境下写的程序有大部分代码从重用.如今社会,要讲得润的.
 
把所有的SQL语句都换成大字,或都Oracle中表定义时相同的大小字。
 
to szf:
我在DBA中看到user1和user2下的所有表均为大写,而我在写SQL时用户名和表名也为大写,
问题一样.
另外,我发应用服务器上DataSetProvider的OnGetTableName中TableName = 用户名,而
“.表名”不见了。是不是哪个属性设置有问题,还是Delphi本身就不支持
DBUserName.TableName这种格式。
 
顶部