VB6.0,关于ACCESSS的数据库查询问题,假设有几百个字段,怎么找出字段值为1的所有字段?

字段为1 , 2 , 3不断递增的,有规律,现在只能用循环语句一个一个地查询,有没有快捷的方式方法,字段数量大的时候这样方式很慢例如:如果是下面的数据库,那么查询出来的字段名为1,3, 7 。

'假定数据表记录集已读取到对象变量rs中
Dim zd As Object
For Each zd In rs.Fields
    If zd.Name <> "ID" And Val(zd.Value) = 1 Then
        Print zd.Name     '这个就是找到的字段名
    End If
Next

 另外,你这种数据库结构不够科学,应该从横向结构改为纵向结构(即把1、2、3……设为一个字段的不同值,而现在的值则设为另一个字段的不同值),这样的话效率肯定提高10倍以上。此外,字段的总数量是有限制的(好像是256个),所以你这种方法弊端明显。

追问

1,2,3其实是指商品1.2.3三种商品,然后一行数据就是一个用户购买某某商品的记录,用户购买哪些商品就给商品赋值为1,找出所有1的字段,就能知道用户买了哪些商品。这思路应该还好吧?有没有更好的方法,其实我觉得这个有点麻烦。。。。。。。。

追答

那你最好应该用三个表来解决,一个是商品信息表,一个是用户信息表,一个是购买信息表。
其中商品表的结构为(PID为商品编号,PName为商品名):
PID PName
1 商品1
2 商品2
3 商品3
用户表的结构为(UID为商品编号,UName为用户名):
UID UName
1 用户1
2 用户2
3 用户3
而购买信息表的结构则为(UID为用户编号,PID为商品编号,PNumber为数量):
UID PID PNumber
1 1 1
1 2 1
2 2 1
3 1 1
3 3 1
这样的话从上表就能很容易得出用户1买了商品1和2,用户2买了商品2,用户3买了商品1和3。
这样的话数据库的结构一目了然,SQL的查询速度也会很快,而且数据库的空间利用率很高。而你的方法不但会造成空间浪费(会有很多空白数据),运行效率很低,而且要想增加商品的种类会很困难,并且还有数量限制。

温馨提示:答案为网友推荐,仅供参考
相似回答