用vb连access进行多条件查询
比如有10个check,但是我不确定我要勾选哪些,只能确定至少有一个,至多10个都选,我想如果用if来遍历的话至少要2^10显然是不可能的,所以想请教下有没有简便方法...
比如有10个check,但是我不确定我要勾选哪些,只能确定至少有一个,至多10个都选,我想如果用if来遍历的话至少要2^10显然是不可能的,所以想请教下有没有简便方法
展开
5个回答
展开全部
这个基本上没什么简便的方法。用checkbox来设置多个查询条件因为是相对独立且没什么规律,所以无法用循环之类的简便方法处理。控件数组的方法最多也就是代码看起来少了几行,其实逻辑并没改变。不要一味追求代码行的最精简,而要注意实际执行代码的最少。
其实用if判断也没多少语句,用独立的if语句分别处理每个check也就10*2,而不是2^10次。形式如1楼,先写好前面部分,并加个"where 1=1",然后根据check的选择添加条件:
if checkbox1.value=vbchecked then sSQL=sSQL & " and field1=fieldvalue1"
其实用if判断也没多少语句,用独立的if语句分别处理每个check也就10*2,而不是2^10次。形式如1楼,先写好前面部分,并加个"where 1=1",然后根据check的选择添加条件:
if checkbox1.value=vbchecked then sSQL=sSQL & " and field1=fieldvalue1"
展开全部
我的建议是,你在放check控件的时候,直接做成控件数组,这样你遍历就容易了
比如check1(0),check1(1),check1(2)...................
这样你随便用循环就简单的很了,不需要你写10个if
可以试试
控件数组做法,你先放一个check在窗口上,选中它,然后复制(CTRL+C),然后选中粘贴(CTRL+V),提示你是不是建立控件数组,你选yes就ok了,然后拷贝若干,直至满足你要的数量。
请参看。
比如check1(0),check1(1),check1(2)...................
这样你随便用循环就简单的很了,不需要你写10个if
可以试试
控件数组做法,你先放一个check在窗口上,选中它,然后复制(CTRL+C),然后选中粘贴(CTRL+V),提示你是不是建立控件数组,你选yes就ok了,然后拷贝若干,直至满足你要的数量。
请参看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你将每个checkbox当成独立的,判断10个就可以
然后根据这个checkbox值来生成sql语句
比如:
dim sSQL as string
sSQL="select * from table1 where 1=1 " 'where 1=1虽然没有意义,但是后边添加条件只要都在前边加and就可以,不用判断第一个条件前是where
if checkbox1.value=true then ‘我忘记checkbox判断选中是不是这样,如果不会你更正下
sSQL=sSQL & “ and ” & 选中对应的选件
else
sSQL=sSQL & “ and ” & 未选中对应的选件
end if
其他依次类推。
然后根据这个checkbox值来生成sql语句
比如:
dim sSQL as string
sSQL="select * from table1 where 1=1 " 'where 1=1虽然没有意义,但是后边添加条件只要都在前边加and就可以,不用判断第一个条件前是where
if checkbox1.value=true then ‘我忘记checkbox判断选中是不是这样,如果不会你更正下
sSQL=sSQL & “ and ” & 选中对应的选件
else
sSQL=sSQL & “ and ” & 未选中对应的选件
end if
其他依次类推。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写if是肯定的,这种要使用动态的拼接sql语句,如果不想写10个if,就必须要做check的控件数组,用循环来遍历:
sql="select * from 表名 where 1=1 "
for i=1 to 10
if check(i).checked then sql=sql & " and 对应字段" & i & "=1"
next
'执行SQL查询
sql="select * from 表名 where 1=1 "
for i=1 to 10
if check(i).checked then sql=sql & " and 对应字段" & i & "=1"
next
'执行SQL查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也在关注这个问题,谢谢1楼的分享!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询