【问题标题】:formatting combobox elements格式化组合框元素
【发布时间】:2018-01-12 11:35:48
【问题描述】:

在我的数据库中,序列号存储为 整数。 我想用不同的格式在 Access-frontend 组合框中表示这些数字:

  • "121212345" --> "12.12.12345"

When a number is chosen it should be stored as an Integer again.

我已经尝试使用一些 VBA 代码自己填充组合框:

  1. 使用查询选择所有数字
  2. 迭代所有数字并将每个数字转换为新形式
  3. 将每个转换后的数字放入组合框

做出选择后,我使用 afterUpdate-Event 将其转换回整数值并将其存储在我的表中。

这种方法效果很好,但填充组合框需要很长时间(20.000 个数字需要 4 秒)。

有没有更快的方法?

当我只使用普通整数字段作为记录源时,该框很快就会被填充。

编辑:

'populate Combobobox:

Set db = CurrentDb
strSQL = "SELECT intSerialNumber FROM tblXXXX"
Set rs = db.OpenRecordset(strSQL)

Do While Not rs.EOF
    strCurrentSerNum = rs.Fields(0).Value
    Dim strSerNum As String

    'xxxxxxxxx to xx.xx.xxxxx when possible
    If (Len(strCurrentSerNum)) = 9 Then
        strSerNum = Left(strCurrentSerNum, 2) & "." & 
        Mid(strCurrentSerNum, 3, 2) & "." & Right(strCurrentSerNum, 5)       
    Else
        strSerNum = strCurrentSerNum
    End If

    cboSerNum.AddItem (strSerNum)

    rs.MoveNext
Loop

【问题讨论】:

  • 请发布您用于迭代整数并修改它们以在视图中显示的代码。还包括检索数据的代码。
  • 我用一些代码编辑了我的帖子

标签: vba ms-access combobox formatting


【解决方案1】:

您应该为此使用 Input Mask 属性。

一个有效的输入掩码来达到你想要的效果如下:

##.##.#####;;

【讨论】:

  • 非常感谢。这适用于在组合框中显示选定值和手动输入。但是当我展开我的组合框时,所有值仍然显示不带点。我可以忍受。
  • 我可以解决这个问题,但如果我这样做,答案会变得更长(并且更慢)。如果答案提供了预期的效果,请接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 2012-11-06
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多