多条件查询?

siyuan79 2001-10-18 10:39:20
多条件查询?
我做了一个小小通讯录,用ADO做的。其他部分都差不多做好了。就是差查询部分,我想做到多重查询,就是说:用户可以用单独用各字段查询,也可以组合各字段来查询。如果判断各字段是否为空的方法是很麻烦的,请问有什么其他好的方法做多条件查询呢?
...全文
454 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amoon 2001-11-07
  • 打赏
  • 举报
回复
to playyuer(女㊣爱):呵呵,我正想给他出这个馊主意,结果被你抢先了。
cs_netwalker 2001-11-07
  • 打赏
  • 举报
回复
以上方法都很好,但只有你能根据你的客户群,你的表的字段编写出最简洁实用的代码。我想说的是:你必须使用模糊查询,也就是说使用 "...like '% & 字段值 & '%"之类的查询。应设想你的客户不可能输入完整准确的字段值(如:住址,...等),你也没有办法规范用户的输入(如用列表选择等)。如有一字之差便一事无成,什么也查不了。
siyuan79 2001-11-06
  • 打赏
  • 举报
回复
再来!
playyuer 2001-11-05
  • 打赏
  • 举报
回复
用网格!
效果如图:
http://microinfo.top263.net/Images/grid.gif
playyuer 2001-11-05
  • 打赏
  • 举报
回复
用网格
siyuan79 2001-11-05
  • 打赏
  • 举报
回复
多谢!
还有吗?
wjhwdm 2001-11-03
  • 打赏
  • 举报
回复
上面是我实现组合查询用过的一段代码,你可以根据自己的需要修改
wjhwdm 2001-11-03
  • 打赏
  • 举报
回复
dim sqlstring as string,tempstring as string
sqlstring = "SELECT UserNO,SerialNO,MachineType,UserName,OpenDate,PayDate,MatureDate,ServiceStatus,CurrentPOS,AgentName FROM user "
If Check1.Value Then TempString = "len(UserName)>0 AND "
If Trim(MEBox1(0).text) <> "" Then TempString = "UserNO=" & Trim(MEBox1(0).text) & " AND "
TempString = TempString & "MachineType like '" & Trim(Combo1(0).text) & "*' AND "
TempString = TempString & "agentname like '" & Trim(Combo2.text) & "*' and "
TempString = TempString & "CurrentPOS like'" & Trim(Combo1(1).text) & "*' AND "
TempString = TempString & "UserName Like '" & Trim(MEBox1(1).text) & "*' AND "
If Trim(Combo1(2).text) <> "" Then TempString = TempString & "ServiceStatus='" & Trim(Combo1(2).text) & "' AND "
If Trim(MEBox1(2).text) <> "" Then TempString = TempString & "SerialNO = " & Trim(MEBox1(2).text) & " AND "
TempString = TempString & "OpenDate BETWEEN #" & Format(DTPicker1(0).Value, "yyyy/m/d") & "# AND #" & Format(DTPicker1(1).Value, "yyyy/m/d") _
& "# AND PayDate BETWEEN #" & Format(DTPicker1(2).Value, "yyyy/m/d") & "# AND #" & Format(DTPicker1(3).Value, "yyyy/m/d") _
& "# AND MatureDate BETWEEN #" & Format(DTPicker1(4).Value, "yyyy/m/d") & "# AND #" & Format(DTPicker1(5).Value, "yyyy/m/d") & "# "
If Trim(TempString) <> "" Then sqlstring = sqlstring & "WHERE " & TempString
darkmoon 2001-11-03
  • 打赏
  • 举报
回复
同意newyon(),一般都是根据一定的条件取出一部分数据,比如根据时间段,再用SetFilter进行筛选,不用多次从数据库读取数据,对数据量不是很大的操作比较方便快捷
siyuan79 2001-11-03
  • 打赏
  • 举报
回复
再来!
feihong0233 2001-10-27
  • 打赏
  • 举报
回复
strSQL="SELECT * FROM Table"
if txtID.text<>"" then
bStart=true
strSQL=strSQL & " ID=" & txtID.text
endif
if txtName.text<>"" then
if bStart then
strSQL=strSQL & " AND Name=" & txtName.text
else
strSQL=strSQL & " Name=" & txtName.text
bStart=true
endif

'呵呵写着玩
siyuan79 2001-10-27
  • 打赏
  • 举报
回复
.
siyuan79 2001-10-24
  • 打赏
  • 举报
回复
还有其他方法吗?
siyuan79 2001-10-23
  • 打赏
  • 举报
回复
.
LiaoCheng 2001-10-22
  • 打赏
  • 举报
回复
96091103(室长)是可行的
siyuan79 2001-10-22
  • 打赏
  • 举报
回复
.
shawls 2001-10-21
  • 打赏
  • 举报
回复
siyuan79 2001-10-21
  • 打赏
  • 举报
回复
.
siyuan79 2001-10-19
  • 打赏
  • 举报
回复
再来。
newyon 2001-10-19
  • 打赏
  • 举报
回复
可以先把字段名保存成一个数组,然后利用循环用ADO的filter,然后把查询的结果列出来

strFind = "单位名称,处室,行政区,名字,电话"
strField = VBA.Split(strFind, ",", , vbTextCompare)
If Trim(txtIF.Text) = "" Then MsgBox "请输入查找的条件", vbInformation, "系统提示": Exit Sub
lngRsCount = m_adoRs.RecordCount '原有记录的个数
For i = 0 To UBound(strField)
m_adoRs.Filter = strField(i) & " like '%" & txtIF.Text & "%'"
If lngRsCount > m_adoRs.RecordCount And m_adoRs.RecordCount <> 0 Then '判断是否记录数有否改动来找到是否继续查找
Exit For
End If
Next i
If lngRsCount = m_adoRs.RecordCount Then
MsgBox "没有找到你所要的内容", vbInformation, "系统提示"
Else
'数据显示
End If
加载更多回复(12)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧