400分的问题--三层次下巢状表的问题,当主表查询出来只有一条记录时,从表的所有记录都会显示出来。(200分)

W

wumeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是Win2k,d5,TSocketConnection,当主表根据条件查询,如果查询结果只有一条
记录时,从表的所有记录都会显示出来。但当主表的查询结果有多条(不只一条)时,
从表显示的结果是正确的。
还有,我在程序中的TClientDataSet中用了IndexFieldNames和IndexName排序,这时
所有的从表记录也会显示出来。所以我觉得三层的巢状表中,主表和从表的关连可能是用
IndexName确定的。这只是我的猜想而已。
希望大家多多帮忙,分数的问题好说。先给400分供大家讨论,问题解决后再给。
 
俺没弄过三层,不过直接执行SQL语句是否出现这个问题?
就是说,首先要判断出来问题出在那里。
 
大家努力呀?!谢谢大家了!!!
 
你的服务器端是用adoQuery,adoDataSet,adotable还是其它的连接
数据库的?
我的没有这个问题啊?我是用adoDataSet
 
在表头clientdataset.open 之后,clientdataset.first
 
如果你是大服务器上建立主从关系的话就决不会出这样的问题,
如果你是在客户端建立主从关系那就另当别论,
检查你的设置。
 
To All:
谁没遇到我说的问题的大侠,请用DELPHI自带的数据库帮了作个例子,
分数多少不成问题。。。
 
我的作法是这样的:用TADOConnection连接SQL2K数据库。然后用2个adoDataSet(一主
一从)连接这个TADOConnection,在主adoDataSet的CommandText中写好与主表连接的SQL。
然后再放一个DATASOURCE (dsMaster)连接这个主表的adoDataSet。主表就完成了,
接下来作从表。
在从adoDataSet的CommandText中写好与从表连接的SQL。接着设定它的DATASOURCE为上面的
DATASOURCE(dsMaster)。然后再设定它的MasterFields为主表的关键字。
到这从表也作完了。接着设定TDataSetProvider联接到主adoDataSet。并设定ResolveToDataSet
为TRUE。 poAllowCommandText为TRUE。
到这SERVER全部完成。
我的作法哪有不合适的吗???
 
三層結構的主從關係
1.Server端建立Master Detail關係
2.Client端建立Master Detail關係
3.ok
 
TO Richard3000
不可能同时在SErver端和Client端同时建立master/detail关系的
 
大家努力呀?!难道大家都没遇到过这个问题????
 
TOdo
nkey
為甚麼,你試了嗎?
絕對可以
 
关注!
试试先。
 
to wumeng,你的服务器端设置没有错误,错误可能在客户端.
我是这么做的:
先放两个clientdataset:client1,client2;
设定client1的romoteserver,providername为合适的值,然后双击它,add all fields
加入永久字段.你会发现多了一个TDataSetField类型的字段,记住字段名.这就是从表的信息.
第二个clientdataset除了datasetfield属性什么都不用设,就把这个
属性设为那个TDataSetField类型字段的名字.
然后就一切ok了.
如果还有问题你就在 client1的afterscroll中:
client2.Close;
client2.Open;
 
To xeen:
我的客户端是这么作的呀。你可以这样作一个例子试试。然后只查出一条主档记录,
看会不会发生我说的情况。你可以用SQL的pubs数据库或DELPHI自己带的数据库。
当主档查出多条记录时是没问题的。。。
 
打了补丁没有,我用D6,原先有很多奇怪的问题,打个补丁就好些了,我的数据库设计和
你的一样,我试试先
 
我打了ADO的两个补丁其他的没有。我用的是D5+SQL2K.
 
帮忙呀?!
 
TO wumeng,我试验了 sql server 的pubs数据库,在我的机器上一切正常,
其他的库也正常,即使是设定了clientdataset的indexfieldname。看来
是你系统问题的可能性比较大.
我用的 win 2000 + d6 +update pack2
 
你的中间层的主从表好象没有关联。
实在不行,可以在客户端filter里加过滤条件
 
顶部