设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: zbjit
打印 上一主题 下一主题

[查询] 请教如何使用 IN 运算符做参数查询并输入多个值

[复制链接]
11#
 楼主| 发表于 2006-7-20 00:52:00 | 只看该作者



例子已上传,谢谢版主!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
12#
发表于 2006-7-20 04:47:00 | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
13#
 楼主| 发表于 2006-7-20 17:05:00 | 只看该作者
感谢版主的帮助,看过你修改过的文件了,用的是 Filter,这个方法其实我用过。实际上我是想知道如何给那个 IN操作符赋多个列表值,是不是不能连续输入用逗号分开的参数值,而只能在基层查询中修改 IN 的参数为 IN ([Value1],[Value],[Value],..),请帮忙!
14#
发表于 2006-7-20 18:12:00 | 只看该作者
输入,号后,用SPLIT分隔出来

Private Sub cboRegion_AfterUpdate()
  
Dim strWhere As String
Dim vArr As Variant
Dim i As Integer
Dim Str As String
strWhere = ""

If Not IsNull(Me.cboRegion) Then
     
      If Me.cboRegion = "All" Then
      
             Me.txtRegion = "Export,Local"
            
             vArr = Split(Me.txtRegion, ",")
           
                 For i = LBound(vArr) To UBound(vArr)
         
                     If vArr(i) <> "" Then
                     
                        Str = Str & "'" & vArr(i) & "',"

                     End If
        
                Next i
            
            strWhere = strWhere & "[Region] in (" & Str & ") AND "
   
        Else
        
            strWhere = strWhere & "([Region] like '*" & Me.cboRegion & "*') AND "
         
        End If
   
End If
      
    If Len(strWhere) > 0 Then
    strWhere = Left(strWhere, Len(strWhere) - 5)

End If
   
   
    Me.Form.Filter = strWhere
    Me.Form.FilterOn = True
   
   
End Sub

[此贴子已经被作者于2006-7-20 10:13:33编辑过]

15#
 楼主| 发表于 2006-7-20 18:51:00 | 只看该作者
版主没有把代码写全,该如何传递分割後的阵列值传递给查询呢?
16#
发表于 2006-7-20 19:40:00 | 只看该作者
直接在查询里应该不行,可以根据条件生成查询

Dim AQueryDef As QueryDef

Dim strWhere As String
Dim vArr As Variant
Dim i As Integer
Dim Str As String
strWhere = ""

If Not IsNull(Me.cboRegion) Then
     
      If Me.cboRegion = "All" Then
      
             Me.txtRegion = "Export,Local"
            
             vArr = Split(Me.txtRegion, ",")
           
                 For i = LBound(vArr) To UBound(vArr)
         
                     If vArr(i) <> "" Then
                     
                        Str = Str & "'" & vArr(i) & "',"

                     End If
        
                Next i
            
            strWhere = strWhere & "[Region] in (" & Str & ") AND "
   
        Else
        
            strWhere = strWhere & "([Region] like '*" & Me.cboRegion & "*') AND "
         
        End If
   
End If
      
    If Len(strWhere) > 0 Then
    strWhere = Left(strWhere, Len(strWhere) - 5)

End If
   
Set AQueryDef = CurrentDb.QueryDefs("qryItem")

AQueryDef.Sql = "SELECT * FROM tblItem where " & strWhere & ""

If (Err) Then
   Exit Sub
End If
   
AQueryDef.Close

CurrentDb.QueryDefs.Refresh
DoCmd.OpenQuery "qryItem"



17#
 楼主| 发表于 2006-7-20 22:23:00 | 只看该作者
多謝版主,看來我只有運用篩選和多個參數查詢了
18#
发表于 2007-5-2 07:21:00 | 只看该作者
怎么代码看不见

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-20 15:35 , Processed in 0.094599 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表