查询语句的更新和删除问题

Lenic__ 2009-03-22 02:46:20
我这里有一个两个表:
第一个表Medicines有三个字段:MedicineID,MedicineName,MakerID
第二个表Makers有两个字段:MakerID,MakerName

这两个表的数据我用下面这条语句提取出来:
Select M.MedicineID, M.MedicineName, A.MakerName
From Medicines AS M Left Join Makers AS A On M.MakerID = A.MakerID

这样查询出来的是一个记录集,我把这个记录集放到TDBGrid中显示。

现在问题出来了:
我如果要在TDBGrid中增加、修改或者删除,完之后提交到数据库中。怎样在我对TDBGrid操作完成之后,提交到数据库中?
我要的不是那种另外重新写一个查询,提交到数据库,然后TDBGrid中刷新数据的那种;而是TDBGrid直接中直接修改,并提交到数据库中。
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
QPhySon 2009-03-22
  • 打赏
  • 举报
回复
有用过TClientDataSet,TDataSetProvider 吗,这个可以帮助人处理这个问题,多表更新,即通过视图去更新表,查看资料,最重要的是知道通过什么方式可以做,然后再去想怎么做这个问题
Lenic__ 2009-03-22
  • 打赏
  • 举报
回复
至于bdmh大大所说的。。。

我不大明白,bdmh能解释一下吗?
Lenic__ 2009-03-22
  • 打赏
  • 举报
回复
大家说的差不多都对。

我没用TClientDataSet,TDataSetProvider 这类的控件,这只是一个演示的小程序。只包含了一个DBGrid、ADOConnection、ADOQuery和DataSource这几个控件。

在BeforePost中手工填写了代码,执行之后,会提示“缺少更新或刷新的键列信息”,此时结束程序之后再运行,就会发现数据更改成功了。

在AfterPost中手工填写代码,执行完毕之后,同样会出现上面的错误信息,但是数据不会发生更改。

同时在上面的两个事件中添加相同的代码,还是会出现上面的错误,但是情况和只在前面手工填写代码相同。

在这里我想的就是是不是有一个OnPost事件,我手工填写代码覆盖这个事件的原始代码?不过这个事件我没发现。。。

或者在执行了BeforePost事件之后,屏蔽系统的Post代码,转而跳出不往下继续执行。这个想法实现了,提交页成功了。

但是提交之后只让你编辑这一行代码,其他的都不能动,程序假死。。。

不明白是不是原始Post代码里面有什么功能,导致我屏蔽了之后更新失败。
楚人无衣 2009-03-22
  • 打赏
  • 举报
回复
想是只有在OnBeforePost事件中对表单独处理了,更新联合查询本来就是个很难的话题
wzca 2009-03-22
  • 打赏
  • 举报
回复
用视图可以解决这类的问题
bdmh 2009-03-22
  • 打赏
  • 举报
回复
这种提交要用sql语句提交,提交后,Requery数据集,可以在字段的settext事件中处理

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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