如何将主表和明细表分别在两个dbgrid中显示,(不用shape语言)?
主表a
字段:number,customer,inputdate,inputer(即单号,客户,录入日期,录入人)
明细表b:
字段:number,code,name,count,unitprice(即单号,物料代码,名称,数量,单价)
它们通过单号关联
我想把它们用一上一下两个dbgrid显示它们,
它们是互动的(也就是关联显示的)
怎么样做呢?
问题点数:0、回复次数:28Top
1 楼cutedelphigirl(delphi女孩)回复于 2003-09-04 15:03:37 得分 0
怎么没人?Top
2 楼laoguang_2008(老光)回复于 2003-09-04 15:38:24 得分 0
在数据库(sqlserver)建立关联Top
3 楼treestar001(小鸟)回复于 2003-09-04 15:48:12 得分 0
用两个DBGrid反映主,从表的数据集,然后在主表的ADOQuery的AfterScroll事件中写关于从表的
查询语句,主从表一定要有相关联字段,这样才可以建立联系!
(还有别的方法,自己可以研究!)Top
4 楼lean77(粉红凤凰^飞^)回复于 2003-09-04 15:55:04 得分 0
主要是设置子dbGrid关联主dbGrid的关联字段Top
5 楼Little2000(rainy)回复于 2003-09-04 15:59:51 得分 0
在上面主表的ADOMast的AfterScroll事件中写:
ADOSub.Close;
ADOSub.Sql.Text := 'select * from ChildTable where 单号 = '''+ADOMast.FieldByName('单号').ASString+'''';
ADOSub.Open;
这样做就可以了,别忘记连接数据源Top
6 楼HelpMeNow(混口飯吃)回复于 2003-09-04 16:14:08 得分 0
在子表用Query查询的设datasource为主表...
sql: select * from 明细表 where number=:number
就可以啦.Top
7 楼samcrm(镜花水月)回复于 2003-09-04 16:31:57 得分 0
任何代码都不用即可实现。
1、放两个ADOQuery(或Query)。
ADOQuery1的SQL属性为:select * from a
ADOQuery2的SQL属性为:select * from b where 单号=:单号
2、放两个DataSource和两个DBGrid
分别连到两个ADOQuery
3、重要的步骤:
设置ADOQuery2的DataSource属性为DataSource1。
搞定!
Top
8 楼cutedelphigirl(delphi女孩)回复于 2003-09-04 16:42:03 得分 0
Let my try!Top
9 楼ZyxIp(绝望中...)回复于 2003-09-04 16:43:55 得分 0
来晚了............Top
10 楼JustinLee(皇阳文隐)回复于 2003-09-04 16:52:47 得分 0
Little2000(Rainy) 说的不错!Top
11 楼Niuniu2003(牛牛)回复于 2003-09-04 16:53:27 得分 0
Table1,
DataSourece1,
DataSourece1.dataset = Table1;
Table1.tablename = 'a';
table2,DataSourece2,
dataSourece2.Dataset = Table2;
table2.Tablename = 'b';
table2.Mastersourece = DataSourece1;
table2.MasterFields = 'number=number';
table2.IndexName = 'number';
dbGrid1.datasourece := datasourece1;
dbGrid2.dataSourece := dataSourece2.
Top
12 楼netatomy(Chris)回复于 2003-09-04 17:07:02 得分 0
来晚了............
Top
13 楼afraqiu(afra)回复于 2003-09-04 17:48:49 得分 0
楼上说得没错,
可以实现从表随着主表记录指针移动而移动。Top
14 楼cutedelphigirl(delphi女孩)回复于 2003-09-04 17:59:53 得分 0
samcrm(阿靖):where 单号=:单号
怎么写法?
是:
select * from b where b.number=a.number
吗?
Top
15 楼ww94307(外星人)回复于 2003-09-04 18:18:29 得分 0
samcrm(阿靖) 和Niuniu2003(牛牛)两个人说的都可以呀。
你那里还没有成功吗?
select * from b where b.number=:num
num是一参数,就是把你adoqueyr1当前行的单号(也就是a.number)取出,付给这个参数。
然后adoquery2.open即可。Top
16 楼cutedelphigirl(delphi女孩)回复于 2003-09-04 18:34:48 得分 0
我写:
select * from b where number:=number
出错:应用程序定义parmeter对象的方式不当Top
17 楼cutedelphigirl(delphi女孩)回复于 2003-09-04 19:05:42 得分 0
samcrm(阿靖)说代码不用写的?
Top
18 楼geyobing(大地精灵)回复于 2003-09-04 19:12:14 得分 0
用Niuniu2003(牛牛)的不需要写代码,学DELPHI的应该都知道,明细表的设置啊,也可以用一个Query和一个Table来完成的,楼主,我想这个只要找本DELPHI数据库方面的书都有介绍的啊,Top
19 楼DouZHlang(飞呀飞)回复于 2003-09-04 19:20:50 得分 0
赞成samsrm 的方法 up upTop
20 楼hnhb(不死鸟)回复于 2003-09-04 19:31:50 得分 0
阿靖说的没错,你一试就知道了。Top
21 楼mrtxc(阿春)回复于 2003-09-04 21:25:44 得分 0
楼主,不好意思,今天下午太忙,没上论坛,所以现在才回。下次可以用QQ联系,不发消息。
告诉你一个不写代码只动鼠标的方法:
1、在窗体上放两个ADOTable,两个DBGrid,两个DataSource。假设Table1为主表,Table2从表,Grid1显示主记录,Grid2显示从记录,DataSoure1和Table1关联,DataSource2和Table2关联,Grid1和DataSource1关联,Grid2与DataSource2关联。
2、分别
设置如下:(以Delphi的范例数据库DBDemos为例)
两表相同:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\App\Common Files\Borland Shared\Data\dbdemos.mdb;Persist Security Info=False
3、分别设置两个Table的TableName,如果你不熟悉,也可只用鼠标。
Table1: customer
Table2: orders
4、将Table2.MasterSource设为DataSource1。
5、将Table2.MasterFields设为CustNo。
6、将两个Table的Active设为True。
OK,收工!
Top
22 楼cutedelphigirl(delphi女孩)回复于 2003-09-04 21:39:24 得分 0
我用的是adoquery1与adoquery2
而且adoqquery1以后我想做成动态的sql,先模拟一下固定的
我是新手,才学一个多
望大哥哥们原谅Top
23 楼hmily1688(没什么好说的)回复于 2003-09-05 02:56:41 得分 0
哈哈,建议你看看delphi的Demos中关于主表明细表的设置。mrtxc(阿春)及楼上的几位已经讲得很清楚了。Top
24 楼suuare(督察)回复于 2003-09-06 17:58:27 得分 0
很容易
adoquery1.sql:=select a.*,b,* from a,b where a.单号=b.单号
然后用两个dbgrid 它们的数据集都是adoquery1 数据源也一样
不同的就是双击bdgrid后......Top
25 楼cdzjhmao()回复于 2003-09-07 09:05:17 得分 0
to mrtxc (阿春)
关于主从表的问题,你在http://expert.csdn.net/Expert/topic/2223/2223154.xml?temp=.7197992
中写的,印象中好象在table1中选择一项,table2的数据跟着显示,那返过来,点击table2,table1跟不跟着显示呢?Top
26 楼Tolin2(晶)回复于 2003-09-10 04:35:58 得分 0
upTop
27 楼liner02(liner02)回复于 2003-09-10 07:55:16 得分 0
Niuniu2003(牛牛) 和阿春说的没错我就是这么干的.
cdzjhmao() 说的反过来好象是不行的吧Top
28 楼wupangzi(无本之木)回复于 2003-09-10 08:09:02 得分 0
mrtxc(阿春) 的是对的!其实动态的查询也是不错的选择!Top
29 楼ganju(柑橘)回复于 2004-02-03 17:27:29 得分 0
用MASTERFIELDS也可以的,D5编程指南上有Top
相关问题
- 请教无刷新主表明细表分页控件思路
- 如何保证主表/明细表的更新在同一事务内完成??
- 求一sql语句或存储过程!主表明细表的插入
- 如何查找主表中有而明细表中无明细的记录
- MIDAS的两个clientdataset建立主表/明细表关系。为什么会出现“cannot find object”的错误??
- 单据数据分主表与明细表,使用分区视图如何保证或加快速度?
- 请问各位高手:如何在ASP.net中实现在类似C/S中的订单中主表和明细表的同时提交?
- 如何利用两个 query 组件,两个 dbgrid 一个 datasource ,去创建主/细表(明/细表)?
- 速达3000客户销售明细表可以有小计和合计,请问这个DBGrid是用什么做的?
- 什么是主要/明细表?



