总共200分:如何用adodataset更新关联表记录

lonaerd 2006-01-06 11:15:59
组件:adodataset,dbedit,dbgrid

adodataset中commandtext:

select product.* ,producttype.name as typename from Product inner join producttype on product.producttypeid=producttype.id


locktype=ltBatchOptimistic

很简单,dbgrid显示两个表的记录,其中typename字段只是用来显示;我的目标是修改主表product里面的内容。
现在是可以插入记录,但不能修改。



请高手帮一下忙。这里120分,加上http://community.csdn.net/Expert/topic/4496/4496985.xml?temp=.6410944中的80分,一起结帐。
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
must0001 2006-01-07
  • 打赏
  • 举报
回复
你用你写的这个SQL,在服务器上建立一个视图,在服务器上看看能不能更新,如果视图不能更新,就不关客户端程序的什么事了,你的两个表中,肯定有表没有定义主键,否则不会有问题
WangZWang 2006-01-06
  • 打赏
  • 举报
回复
这应该没有什么问题。
提示这个错误应该是你运行了adodataset.refresh
就会提示这个错误。
解决办法,可以在更新表中建立一个主键或
刷新时用先close, 后open.
lonaerd 2006-01-06
  • 打赏
  • 举报
回复
没有什么代码,就
ADODataSet1.UpdateBatch ; 一个语句而已

错误提示:缺少更新或刷新的键列信息
WangZWang 2006-01-06
  • 打赏
  • 举报
回复
把你的代码贴出来,

更新时有没有错误提示,在保存最好用
TException来捕捉提交时的错误。
zhlwyy 2006-01-06
  • 打赏
  • 举报
回复
请问一下你的这两个表是否是主从表或者有外键关系
如果有外键关系
你应该在设计表的时候就级联更新选中
同时这两个表设计的时候要指定主键
yrb 2006-01-06
  • 打赏
  • 举报
回复
最好临时生成一个adocommand实例,然后使用这个实例去执行更新数据库的操作,然后再刷新界面。
代码片断:
adocommand.ExecuteSql('update ... set ...');

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧