300分的主从表更新的问题,会者不难!分不算太多,要是嫌少,说一声,还可以再加!!(300分)

  • 主题发起人 主题发起人 ndch
  • 开始时间 开始时间
to 52free:
我已经用查询分析器看过生成的SQL了,错误是在生成SQL之前发生的。换言之,这个错误
与SQL2K没关系。而且,resolvetodataset设为false时,可以在SQL2K里看到更新的数据,
这些个更新的记录只是在前台的客户端不出现而已!
to zbsfg:
李维的几本书关于主从表的已经反复看了好几个来回了。郁闷ing
to kele6666:
如果这样就可以解决问题的话,这个帖子就不会出现在这里了。
to 兔老:
对于这样一个最简单的三层的主从表应用,还要自己去手动控制更新过程,
那MIDAS还有什么用呢?
to all:
我现在只有怀疑是我的D7的问题了(应该与系统无关,我在一台全新的
2K server上也用D7做过试验,还是出错),哪位富翁可不可以在D5或D6上做这样
一个测试?我现在只有D7。
 
是不是ADO的问题?有一些很烦人的问题! 
 
在使用A D O处理多个数据表的主从架构应用程序中,
一定要记得激活事务管理的功能以保护更新的数据[:D]
 
midas的主从架构处理是比较烦的,只有自己写提交过程才能轻松控制.
 
ndch,你是用巢装数据吗?如果用巢装数据的话我试过,一点问题没有。
 
to foxweimin:
对啊,我就是用的巢状表。你是怎么做的啊??
 
首先回答第一个问题。Delphi的帮助如此说:
It is very difficult to apply updates, because client datasets apply
updates at the dataset level and master/detail updates span multiple
datasets. Even in a two-tiered environment, where you can use the
database connection component to apply updates for multiple tables in a
single transaction, applying updates in master/detail forms is tricky.
In multi-tiered applications, you can avoid these problems by using
nested tables to represent the master/detail relationship. Todo
this
when providing from datasets, set up a master/detail relationship
between the datasets on the application server. then
set the DataSet
property of your provider component to the master table. To use nested
tables to represent master/detail relationships when providing from XML
documents, use a transformation file that defines the nested detail
sets.
也就是解决的核心在于不使用一般的主从表,而是嵌套表。
 
到了今天,还没有答案,好失望!
 
对 socketconnection 不是很熟悉,不过,对于主从表你只要注意表的联系,
还有就是溶错的处理,如果还是不行的话,你再跟我联系,我想办法帮你解决
h1yn@sohu.com
 
对 socketconnection 不是很熟悉。
类似问题我碰到过,说出来不知道对你有没有用。
从表在相应主表没有更新以前更新就会报错。我以前采用最笨的办法就是先将主表更新以后,
关闭再打开主从表一次,后面就一切OK。
 
看看李维的系统篇,你一定会想通的。
 
我在D6中试过没有问题,可否贴上代码。
resolvetodataset设为TRUE时数据通过DATASET进行提交,DATASET必须在ACTIVE状态;
resolvetodataset设为FALSE时数据通过MADIA自己的SQLPATH提交数据;
关键在嵌套数据设置是否正确。
 
代码方面现在可以排除,
我现在正在检查我的数据库,看是不是数据库的问题。
 
怎么说呢?很多不是程序的问题,而是系统出了问题了。
 
你的主表的主键是自增的!
从表更新的时候可能会出现问题!
三层的东东我也做了一些!
你可以通过主表主键人工赋值的方法试试,或者在主表ApplyUpdata之后,取得主表的ID然后进行从表的赋值。
虽然这样有一定的漏洞,但是应该可以解决!
 
当然服务器端的datasetprovider是需要参数设置的!
这个你要注意!
 
to delphi_newuser:
我现在也在考虑不要自增长的字段做主键了。还是不要怕麻烦,现在正在手写数据库
的SQL,没办法,突然开始很不信任SQL2K了!:)
to all:
看来这个问题是没有什么更好的想法了。再过一段时间结帖吧。
 
不要这么极端啊!
任何一个数据库都有这个问题吧!:)
只要是有数据库自增ID这个问题,从表就必须从主表更新后立即得到主表的ID进行赋值!
如果通过数据库的话,他们也是这么做的!
 
to delphi_newuser:
今天用手写的SQL又重新生成了数据库,本来我也不相信,但结果是:
第1、第2两个错误排除!(同样的代码!!)
但第3个涛声依旧。(但AppServer将ADO换成dbexpress后就可以了。)
麻烦请教别一个问题:
这种主从结构的表,主表不能在INSERT多条记录后,(此时不管从表),再一次更新么?
现在我只能一条记录INSERT后,马上APPLYUPDATE,才能新增下一条记录。有点搞不懂。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部