当前位置:编程学习 > VB >>

数据库中某字段中,第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次……
这样的话该如何设计代码?我写的老是测试不成功……
--------------------编程问答--------------------
引用 1 楼 of123 的回复:
首先,这个数据表结构有问题。关系型数据库应该是完全线性的。

具体到你这个表,应该如下使用:
name    score     timu
01        20      1
01        20      2
01        20      3
......
04        40      3
04        40      5
……


强烈建议lz先按照1L把你的数据结构规范好,再实现后面的需求。
如同看着地基没打好,非要强行盖楼,后面会遇到更多麻烦,除非lz说,我实现了这个功能,甩手这个程序就这样了。 --------------------编程问答-------------------- 如楼上所说, 楼主你这个数据库建表有问题. 
数据要有唯一性, 除非你对该数据永远没有唯一性需求才可以堆放在一起. 但是将来万一有要求了,就拆不开了. 

象你这个需求至少应该建两个表, 换成我自己做的话就是3个表

表1用于存放用户信息字段:

姓名 , 学号, 性别 , 年龄 ... ,  ....

表2用于存放课题字段:

题目编号 , 题目分值 ......

表3用于存放用户和题目对应关系, 可以是固定表, 如果只是临时用, 也可以在查询中创建临时表:

学号, 题目编号, ...
或者
姓名, 题目编号, ... 

因为姓名可能重复,所以一般用学号, 也可以姓名+学号

学号, 姓名, 题目编号



表1和表2作为基本表来维护, 表3作为查询和报表结果, 从基本标中取数据.

补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,