2017-04-18 47 views
1

我想通过我建立的窗体来使用ComboBox来附加查询。 Combobox应该是可选的,但我似乎无法解决空错误的无效使用。这是我目前访问组合框中无效的空使用

Dim MyDB As DAO.Database 
Dim qdef As DAO.QueryDef 
Dim i As Integer 
Dim strSQL As String 
Dim strWhere As String 
Dim strIN As String 
Dim Box1 As String 
Dim strBox1 As String 
Dim flgSelectAll As Boolean 
Dim varItem As Variant 
Set MyDB = CurrentDb() 

'General SQL Code 
strSQL = "SELECT * FROM Test1" 

'Build the IN string by looping through the listbox 
For i = 0 To List6.ListCount - 1 
    If List6.Selected(i) Then 
     If List6.Column(0, i) = "_All" Then 
      flgSelectAll = True 
     End If 
     strIN = strIN & "'" & List6.Column(0, i) & "'," 
    End If 
Next i 
'Create the WHERE string, and strip off the last comma of the IN string 
strWhere = " WHERE [Test1.Brand_Name] in " & _ 
      "(" & Left(strIN, Len(strIN) - 1) & ")" 
'Create the AND string 
Box1 = Me.Combo8.Value 
If IsNull(Me.Combo8.Value) Then 
strBox1 = Nz(Me.Combo8.Column(0), "") 
Else: strBox1 = " AND [Test1.Population] = '" & Box1 & "'" 
End If 
If Not flgSelectAll Then 
    strSQL = strSQL & strWhere & strBox1 
End If 
MyDB.QueryDefs.Delete "cpwg" 
Set qdef = MyDB.CreateQueryDef("cpwg", strSQL) 

'Open the query, built using the IN clause to set the criteria 
DoCmd.OpenQuery "cpwg", acViewNormal 

我也曾尝试

If IsNull(Box1) Or Box1 = "Null" Then 
strBox1 = Nz(Me.Combo8.Column(0), "") 
Else: strBox1 = " AND [Test1.Population] = '" & Box1 & "'" 
End If 

回答

2

尝试代码:

if isnull(me.combo8) then 

而且,我不知道你的组合框的填充方式,但是不同于没有数据。也许尝试

if me.combo8.value = "" then 
+0

这个工作的。价值是被脱胶了作品的作品。谢谢 – SQLnRprobs

+0

我想尽可能多;我提到的_null_ <>到_no data_ point属于.value方面。我不认为你真的会永远填充组合框 – scott

1
IF IsNull(Trim(me.combo8)) Then 
    'Do Stuff 
End if 
+0

这也适用,谢谢 – SQLnRprobs