VB中,建了个ACCESS数据库,里面有6张表,现在我想把这6张表合并显示在控件MSHFlexGrid1,而且可以查询
合并显示在控件MSHFlexGrid1,我做到了,但是查询做不到,我在数据库里新建了一张“汇总表”,查询语句是Adodc1.RecordSource="select*fr...
合并显示在控件MSHFlexGrid1,我做到了,但是查询做不到,我在数据库里新建了一张“汇总表”,查询语句是Adodc1.RecordSource = "select * from 汇总表 where 文件号='" & Val(Text6.Text) & "'" 原因我也知道,合并显示的数据没有写入这个表。
现在两个问题:
1,是合并显示,直接查询好呢,还是合并然后写入新表,然后查询好,写入操作很费内存么?
2,合并写入怎么写代码,要详细的,合并显示,直接查询,怎么写代码?
求大神指点 展开
现在两个问题:
1,是合并显示,直接查询好呢,还是合并然后写入新表,然后查询好,写入操作很费内存么?
2,合并写入怎么写代码,要详细的,合并显示,直接查询,怎么写代码?
求大神指点 展开
2个回答
展开全部
合并后再查询就行了。合并简单 就用个UNION函数
(select * from 表1) Union (select * from 表2) Union .........
这才叫合并。要匹配字段那不叫合并,是叫匹配查询。用LEFT JION是把语句左边的表去匹配右边名称的表,RIGHT JION 相反,INNER JOIN是完全匹配,你是要做联合还是匹配呢。
在一个数据库范围内都可以进行N个表的操作。在N个数据库操作N个表就要先在SQL上建立好查询表,或者用VS部署好再操作。VB用数据环境可以实现,写入新表再操作办法不是很好,相当耗内存。
(select * from 表1) Union (select * from 表2) Union .........
这才叫合并。要匹配字段那不叫合并,是叫匹配查询。用LEFT JION是把语句左边的表去匹配右边名称的表,RIGHT JION 相反,INNER JOIN是完全匹配,你是要做联合还是匹配呢。
在一个数据库范围内都可以进行N个表的操作。在N个数据库操作N个表就要先在SQL上建立好查询表,或者用VS部署好再操作。VB用数据环境可以实现,写入新表再操作办法不是很好,相当耗内存。
更多追问追答
追问
请再次听我的诉求:
目前我用VB做了access的数据库查询的小软件,我卡在哪一步了呢?
是这一步:数据库文件是“项目申报.mdb”,其下的6张表是农业局申报、林业局申报、国土局申报…… 每一个分表,我都做了MSHFlexGrid控件显示。
现在我又把这6个表合起来显示在一个新的窗口,能看到各分表的数据,但是在这新窗口,我不知道怎么用查询语句来查询了
追答
哦,那就简单了,改一个地方就好了,就是Adodc1.RecordSource改一下。改成:
Adodc1.RecordSource = "Select * From ((Select * From 农业局申报) Union (Select * From 林业局申报) Union
(Select * From 国土局申报) Union (Select * From ....局申报)) Where 字段名= '"+控件名+"'"
你的错误在于根本没有确定哪个是汇总表,用括号把子查询括起来,联合后的表括起来是个总表,条件是指向联合后的总表,不是某一个子查询。
别的代码一个都不需要改,就改数据源就好了
展开全部
看明白你的意思了。 你是从未用过“视图”。
你在 Access 里面创建一个视图就可以轻松解决这个问题了。
本质上讲,视图就是一段SQL语句,它会将SQL语句产生的结果“模拟”成一个普通表的样子。
你在 Access 里面创建一个视图就可以轻松解决这个问题了。
本质上讲,视图就是一段SQL语句,它会将SQL语句产生的结果“模拟”成一个普通表的样子。
追问
其实目的挺简单的,我把问题复杂化了。
把6张表(结构相同)所有数据显示在MSHFlexGrid1,如果可以直接在这个返回的MSHFlexGrid1中查询,那就可以了
如果不行,那把这6张表的数据填入 汇总表,然后在这个表中查询,请给写几句代码
(老实告诉你吧,我还是计算机本科毕业的呢,在学校打了几年游戏,悲催)
追答
我非常理解你的需求。使用“视图”解决这个问题是最对症的方法。你试一下就知道方便了。
实际上,这个视图的作用就是把几个相关的表依据索引字段拼合在一起,虚拟成一个新表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询