数据库中某字段中,第i题出现的次数
数据库:test包含的数据表:test
name score timu
01 20 1 2 3 4 5 6 7 8 9 10 11 12
02 10 1 3 5 6 8 10 12
03 30 2 4 7 9 10
04 40 3 5
想通过VBA判断出,此表中timu字段中包含从第1题到第12题 各题出现的次数。
即:在timu字段中,第1题出现:2次
第2题出现:2次
第3题出现:3次……
该如何设计代码?
我用instr()函数,结果把 11 和10和12 中的1也统计出来了…… --------------------编程问答-------------------- 首先,这个数据表结构有问题。关系型数据库应该是完全线性的。
具体到你这个表,应该如下使用:
name score timu
01 20 1
01 20 2
01 20 3
......
04 40 3
04 40 5
或者有两张表,第一张包含 name, score,每个 name 占用一条记录;第二张表包含 name, timu,每一个题目占用一条记录。
这样用 SQL 查询就很方便:
Select Sum(timu) As cishu From test Group By timu --------------------编程问答-------------------- 设计成两张表还没试验,需要改前面的代码,如果我把表中的timu 字段改成如下:
name score timu
01 20 #1##2##3##4##6##7##8##9##10##11##12#
02 10 #1##3##5##6##8##10##12#
03 30 #2##4##7##9##10#
04 40 #3##5#
想通过VBA判断出,此表中timu字段中包含#1# #2# #3# …… #12#出现的次数。
即:在timu字段中, #1#出现:2次
#2#出现:2次
#3#出现:3次……
这样的话该如何设计代码?我写的老是测试不成功……
--------------------编程问答--------------------
强烈建议lz先按照1L把你的数据结构规范好,再实现后面的需求。
如同看着地基没打好,非要强行盖楼,后面会遇到更多麻烦,除非lz说,我实现了这个功能,甩手这个程序就这样了。 --------------------编程问答-------------------- 如楼上所说, 楼主你这个数据库建表有问题.
数据要有唯一性, 除非你对该数据永远没有唯一性需求才可以堆放在一起. 但是将来万一有要求了,就拆不开了.
象你这个需求至少应该建两个表, 换成我自己做的话就是3个表
表1用于存放用户信息字段:
姓名 , 学号, 性别 , 年龄 ... , ....
表2用于存放课题字段:
题目编号 , 题目分值 ......
表3用于存放用户和题目对应关系, 可以是固定表, 如果只是临时用, 也可以在查询中创建临时表:
学号, 题目编号, ...
或者
姓名, 题目编号, ...
因为姓名可能重复,所以一般用学号, 也可以姓名+学号
学号, 姓名, 题目编号
表1和表2作为基本表来维护, 表3作为查询和报表结果, 从基本标中取数据.
补充:VB , 数据库(包含打印,安装,报表)