请高手出山:关于dbgrid数据保存的难题!
具体难点如下:有两个表:1.商品表(字段有:商品编号,名称,型号)
2.订货表(字段有:商品编号,订购数量)
在订货form窗口中放入一个dbgrid,用于订货的输入,表头为:商品编号,名称,型号,订购数量.用的sql语句是:select 商品编号,名称,型号,订购数量 from 两张表(略).问题是:我如何把订购数量信息通过dbgrid添加后再写回订货表中去?(因为dbgrid包含了两张表的信息,我必须保证原来的商品表的内容不变,而订货表中添加新的订货信息)
求救,万分感谢!烦请说明详细实现机制,最好有Sql语句,谢谢各位兄台:)
具体难点如下:有两个表:1.商品表(字段有:商品编号,名称,型号)
2.订货表(字段有:商品编号,订购数量)
在订货form窗口中放入一个dbgrid,用于订货的输入,表头为:商品编号,名称,型号,订购数量.用的sql语句是:select 商品编号,名称,型号,订购数量 from 两张表(略).问题是:我如何把订购数量信息通过dbgrid添加后再写回订货表中去?(因为dbgrid包含了两张表的信息,我必须保证原来的商品表的内容不变,而订货表中添加新的订货信息)
求救,万分感谢!烦请说明详细实现机制,最好有Sql语句,谢谢各位兄台:)
解决方案 »
- 如何实现这样显示窗体???
- 各位帮忙!急啊!~~
- 在一个函数中创建一个局部TADOQuery组件,在构造函数的参数中应该填什么?
- 谁能简单介绍一下delphi7?如:有什么新特性。。等。谢谢
- 关于打开文件夹的问题,还望大家多多指教!
- 急问SQL语句,在线等待.........
- 简单问题,分数不多,在线等待,在线给分~
- 如果在运行时给已设计或动态创建过的控件重新定义响应事件,如何处理?
- 老千,偶在win31组件版里找到几个drive组件,可以备份了,但是怎么恢复数据库呢?这个问题偶还没研究,偶先问问,过一会该没人了
- 想当程序员的我
- 关于临时表的问题(在线急用!高分求助)
- 跪求!为什么ftp可以上传但在中断过程中不可以中断,一中断就出现错误?
加一个adoquery1,和datasource1,在属性写sql语句:select * from 商品表
加一个datasource2和adoquery2,在sql中写sql语句:select * from 订货表
双击adoquery,然后add all field(右键),然后new field(右键)用来建立一个新的字段商品名称,点击lookup字段,key fields= 商品编号,dataset= adoquery1 lookup keys=商品编号
result field=商品名称,(商品型号同理)
dbgrid.datasource=datasource2;
procedure form1.button1(sender:object);//新增
begin
if adoquery2.active then adoquery2.close;
adoquery2.open
adoquery2.last;
adoquery2.append;
end;
procedure form1.button2(sender:object);//保存
begin
if adoquery2.State = dsBrowse then exit;
try
adoquery2.post;
except
showmessage('保存出错');
adoquery2.Cancel ;
raise;
end;
end;
有一些细节我没有详细写,希望对你有的起发吧!~~
1、可以用存储过程来更新,这个要编写存储过程,代码我不写了。
2、可以用另外一个Query控件来实现保存数据的功能啊。
例如:1、AdoQuery1:select 商品编号,名称,型号,订购数量 from 两张表
2、AdoQuery2:'update 订货表 set 订购数量='+AdoQuery1.FieldByName('订购数量').asString+' where 商品编号='+.FieldByName('商品编号').asString;
这里有几个需要注意的问题,AdoQuery1不可以更新,就是不让他提交保存,用AdoQuery2保存,如果不是用按钮来提交数据,那么就在AdoQuery1的BeforPost事件中触发AdoQuery2的保存,当然,实际使用的时候还有多测试一下。这里的语句只能表明思路,不一定能用到程序中