大家好:想向大家求一个思路,我的问题是这样的:
    我的一张二维表字段有,材料名称、编号和32个检测项目共计字段数有35个,每条记录中“材料名称”固定的有40个并不断有新的增加,每种材料的检测项目不同,少的只检测2、3项多的要20几项,编号不能重复。这张表的各检测项目由不同的检测人员在各自的电脑上用EXCEL录入检测数据后,最后传到我的机子上汇成EXCEL的总表。上述的过程我已经通过VB实现了自动操作,并切通过VB在EXCEl表中实现简单查询。在把各个收到的单表整理成总表的过程中我也顺便按同样格式存入了access表中。因为数据量比较大尤其是字段太多,用vb做的查询在显示界面不够灵活且不美观,所以我想用access建个库来管理查询,试了几遍总觉得和在excel没有太大改善,效果不明显,因此想听听大家有什么好的思路。
我的积分是0哦,所以不好就意思了。

解决方案 »

  1.   


    记住,关系型数据库的记录都是线性结构。就好比字符的内码,原则上数据库中的数据不是直接给人看的。你要通过查询得到你所需的信息。比如,你最终人机界面是二维表,可以通过对线性表的交叉表查询获得。说说利弊。你有几十个检测项目字段,有很多记录中是空的。也就是说,你构建的是稀疏表。计算机对数据库表的虚拟内存只有一部分是 RAM,大部分是磁盘空间。你这样的表,在查询时会频繁进行磁盘交换,因而效率很低。你的表只需:材料名称、编号、检测项目、检测数据等几个字段。你原来的一条记录,由编号、材料名称相同的多条记录保存信息。你可以试着把录入所用的 Excel 表也改成这样,并采用直接导入的方式。至于交叉表,在 Access 中有交叉表查询向导,你不仅可以看到查询得到的二维表的结果,还可以生成你所需的 SQL 代码。不过,我倒是觉得没有必要用二维表堆砌大量的信息。你的 VB 界面上,可以一次显示一项材料的监测情况。"select distinct Material_Name from Your_Table"结果放入一个 ListBox 或 ComboBox。在 ListBox 或 ComboBox 的 Click 事件中再查询:"select Material_Name, Test_Item, Test_Resoult from Your_Table where Material_Name = '" & List1.List(List1.ListIndex) & "'"然后显示查询结果。只是一个简化的例子,有什么需求加以改动就是了。
      

  2.   

      是啊,把查询分成两步进行,直接使用SQL,是个好办法回头马上试试。太谢谢了。
       说实在的我现在有点闷了,我刚开始直接用Access做的表用VB扫描客户机上的读写标志是"0”我就读,读完了置"1"取数据挺方便的,但是有些人说ACCESS不会用不方便等等,有时候连我的读写标志字段里写上数据,弄的我哭笑不得,我看她们只认EXCEL,我又改成EXCEL一个一个收表再整理。搞的我机子里一大堆EXCEL文件。看着头都大了。好在还没给我送一大堆纸条了,要不我还得一个一个敲。
       贵论坛我还是第一次来,非常不错。
       再次谢谢您!