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

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

2016-07-18 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26229

向TA提问 私信TA
展开全部
'假定数据表记录集已读取到对象变量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的查询速度也会很快,而且数据库的空间利用率很高。而你的方法不但会造成空间浪费(会有很多空白数据),运行效率很低,而且要想增加商品的种类会很困难,并且还有数量限制。
syx54
2016-07-19 · TA获得超过7379个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2767万
展开全部
网海1书生 的回答,很专业!
追问
楼上的还没回答,不能追问,只好先追问你一下了,运行上面的代码,结果显示无效使用NULL,
If Val(zd.Value) = 1 Then 这句有问题
追答
那是你有的字段数据是空的,那加一点判断:

Dim zd As Object
For Each zd In rs.Fields
If not isnull(zd.Value) then
If zd.Name "ID" And Val(zd.Value) = 1 Then
Print zd.Name '这个就是找到的字段名
End If
end if
Next
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式