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

  • 主题发起人 主题发起人 ndch
  • 开始时间 开始时间
N

ndch

Unregistered / Unconfirmed
GUEST, unregistred user!
近日,我正在做一个三层的东东,用了ado 2.7 + winxp + sql 2000(sp3) + d7 。
用 socketconnection来联结。
一个很简单的主从表结构。我用了sql 2000自带的northword数据库来试验以避免自建库
带来的不稳定因素。主表suppliers和从表products。appserver端用了2个adodataset,
1个datasource来建立主从关联,1个datasetprovider来建立输出dataset。使用的控件属
性均使用默认值,在client端用了2个clientdataset来存放显示主从数据集,界面用了2个
dbgrid来显示数据。
出现的问题是:
1、如果appserver的datasetprovider的[red]resolvetodataset[/red]设为true,那applyupdates时,
如只更新主表则一切正常。若只对从表进行更新时,更新错误为:field 'productid'
cannot be modified。回回如此。(productid为关联字段)。
2、如果appserver的datasetprovider的[red]resolvetodataset[/red]设为false时,那applyupdates
时,如只对从表进行更新则一切正常,若只对主表进行更新时,主表记录更新后,新添加
记录消失在dbgrid中,此时用close &
open clientdataset,refresh clientdataset均看
不到新增的记录。但这条记录已很真实的放在了后台数据库中。client却死活都看不到。
3、当datasetprovider可以使用客户端传来的sql语句时,在客户端传递一个sql,却报
错,”不能在一个打开的记录集上执行这个操作?!“但同样的架构,换成
dbexpress + interbase,一切ok!
这几个错误让我近来是茶饭不思!脑力严重透支!!
天啊!神啊!救救我吧!!
 
去洗个头,让人按摩一下就可以了
 
刚自己给自己洗了一个!
呵呵!!苦笑中。。。。
 
没人愿意理我么???
还是问题太简单了??
又或是我没把问题说清楚???
帮帮我啊!!!
 
看来今天又得过一个充满悬念的夜晚了!
 
又一次自己踢!
等了这么久,还是没人给个意见
 
把数据改用SQL语句直接插入到数据库算了。
 
但我更迷惑的是这么简单的应用MIDAS都不能搞定么?
我的错误在哪里呢??这是我更关心的问题
 
search 'join '資料表﹐這方面的問題在2000年就已經有很多了﹐
論壇中已經有你的結果﹐如果找到別忘加分
 
我已经找了很多了,也不知是我笨还是怎么的,没有找到我想的答案。
 
我用BDE连接也遇到类似问题,就是说有另外的联结不能更新云云。。。其实很简单,
我也不认为我会出错,但实际就报错!
 
to fishxie:
那你解决了没有呢?
 
这个问题怎么就是没人愿意光顾呢?莫非300分太少了??
 
建议看一下李维的书,可能有
 
resolvetodataset设为false(一切属性默认);只要设置一下adodataset2的MasterFields;
最后applyupdates主表的clientdataset就可以了.
 
你的问题没怎么碰过只是随便谈谈
resolvetodataset设置的不同那么通过查看SQLSERVER 的查询分析器就会发现生成的更新
语句也会不同说明为TRUE时ADO解释了更新的行为反之SQLPATH代劳了
如果你的表是JION得来的话那就只能使用ADO本身的能力了
其实这种问题原因并不难找看看查询分析器一切便在掌握中了

 
resolvetodataset 为是否用ADO来处理数据,所以为TRUE时,修改主键ADO会报错。
为FALSE时,当提交主记录时,从表的外键是否和主表的主键一致,建议响应从表的BEFORPOST
事件,人工将主表键值赋给从表的外键。
我写过类似东东,一切正常。
如果对,别忘给分,偶是才来大富翁,没钱。
 

Similar threads

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