我正在基于多选择列表框中的选择构建一个SQL字符串,为了实现这一点,我试图确定我的列表框的绑定列的类型是否为字符串。我编写了以下代码:
If lstBox.ItemsSelected.Count > 0 Then
lstVar = lstBox.ItemData(i)
Debug.Print VarType(lstVar)
For Each varItem In lstBox.ItemsSelected
strCrit = strCrit & "," & "'" & lstBox.ItemData(varItem) & "'"
Next varItem
' remove first comma
strCrit = Mid(strCrit, 2)在debug.print VarType语句上,即使列表框的绑定列是自动编号字段,它也总是会生成字符串类型。我想知道类型是否是数字的,而不是字符串,以便以后,在SQL语句中
SELECT … FROM … WHERE … IN (x,y,z) 我可以在哪里写正确的…在以后不会导致类型不匹配的标准中。是否有一种方法可以准确确定列表框绑定列的变量类型?也许我应该以另一种方式来处理,通过查看列表框的行源的类型。因为我使用这个函数来迭代构建where标准的多个列表框,所以我需要它是动态的和灵活的,因为某些列表框绑定列将是数字列,而其他列将是字符串,所以我不能仅仅将它硬编码到循环中。
发布于 2018-12-01 07:50:12
对于绑定列表框,可以使用基础记录集获取绑定列的类型。
请参阅下列代码:
Dim rs As Object 'most likely DAO.Recordset but could be ADODB.Recordset
With lstBox
Set rs = .Recordset
Debug.Print rs.Fields(.BoundColumn - 1).Type
End With如果使用DAO记录集,则打印DAO.DataTypeEnum;如果使用ADODB记录集,则打印ADODB.DataTypeEnum。它们很容易转换成VBA数据类型。
但是Mathieu Guindon关于使用参数的观点仍然存在。我强烈推荐。
https://stackoverflow.com/questions/53564709
复制相似问题