访问中的 VBA。组合框的问题
Posted
技术标签:
【中文标题】访问中的 VBA。组合框的问题【英文标题】:VBA in ACCESS. Trouble with ComboBox 【发布时间】:2020-03-24 11:34:54 【问题描述】:我的 FORM 上有一些 ComboBoxes。其中一个有 items 作为来自字段 PG (cbPG.RowSource = "SELECT DISTINCT W_report.PG FROM W_report WHERE ......)
的 SQL 请求的结果,该字段的大小是 byte时间>。
After reqest
用户可以选择其中一种变体,也可以列出多个以逗号分隔的 (2,4,5,7,11,13)。
Correct value
生成的 ComboBox.value 用于类似于选择打印页面的过程。在对 cbPG 的事件处理程序进行更改之前,一切正常。然后值会自动四舍五入(如果是一个逗号)
wrong value
或出现错误“输入的值不适用于此字段”(如果有几个逗号),我必须从备份中复制 cbPG,因为我可以'找不到将 cbPG.value 格式更改为 byte 的属性。
这是使用我的 ComboBox 的程序的一部分Public Function MnogoListov(str As String) As String
Dim i, j As Integer
Dim res As String
Dim listArr() As String
res = ""
ReDim listArr(Len(str)) As String
For i = 1 To Len(str)
If Mid(str, i, 1) <> "," And Mid(str, i, 1) <> "." Then
listArr(j) = listArr(j) & Mid(str, i, 1)
Else
j = j + 1
End If
Next
For i = 0 To j
If i = 0 Then
res = listArr(i)
Else
res = res & " OR W_report.PG = " & listArr(i) End If
Next
MnogoListov = res
End Function
【问题讨论】:
【参考方案1】:你不能那样做。组合框用于从多个值中选择一个。
所以,要么使用多选列表框,要么使用简单的文本框 - 类似于选择打印页面 - 解析输入值来获取项目(页面)的序列(列表)。
【讨论】:
感谢您的回答。我考虑过切换到 ListBox 和 TextBox,但我有大约十几个这样的表单 - 转换需要时间。此外,正如我所描述的那样,ComboBox 在一个真实的项目中工作(类似于选择要打印的页面)。套用这个问题:如何将每个 ComboBox 元素的格式设置为字符串? 组合框的返回值始终是一个字符串——即使它是一个数字。 从 ComboBox 失去焦点后,如果我将 [1,2,3] 放入其中,则 VBA 会给我一个错误,如果我放入 [1,2],则会给出“1”。看起来价值变成了字节。但我知道 ComboBox.Value - String。看不懂 如前所述,组合框不适用于多值输入。仅一项。在你的情况下,只有一位数。 这是 1 分钟视频的链接,以展示其工作原理drive.google.com/open?id=1kPJiyTi1jkpkGNrNuGCigZTrEMfYnZat以上是关于访问中的 VBA。组合框的问题的主要内容,如果未能解决你的问题,请参考以下文章