我可以导入 VBA 代码中的公共枚举作为 Access 中表字段的列表吗?

问题描述 投票:0回答:2

假设我在 Microsoft Access 数据库中有以下 VBA 代码。

Option Compare Database

Public Enum testdata
    foo = 0
    bar = 1
    baz = 2
End Enum

为了上下文,我在模块中声明这一点,如下所示:

现在,我想要发生的是让表中的类别字段自动填充基于此枚举的列表项,如下所示:

我必须手动输入每个列表项才能显示我想要的内容,但肯定有一种方法可以将 VBA 代码中的常量枚举列表“链接”到表中的字段,以便当我添加新的枚举条目,类别列表会相应更新。我尝试在互联网上查找,但我无法找出在不使用图片的情况下解释我想要做什么的最佳方法。

vba database ms-access enums vba7
2个回答
0
投票

除了创建一个笨拙的

Select Case
来返回文字之外,我没有找到其他方法,例如:

' Windows Phone colour enumeration.
Public Enum wpThemeColor
    ' Official colour names from WP8.
    Lime = &HC4A4&
    Green = &H17A960
    Emerald = &H8A00&
    Teal = &HA9AB00
    Cyan = &HE2A11B
    Cobalt = &HEF5000
    Indigo = &HFF006A
    Violet = &HFF00AA
    Pink = &HD072F4
    Magenta = &H7300D8
    Crimson = &H2500A2
    Red = &H14E5&
    Orange = &H68FA&
    Amber = &HAA3F0
    Yellow = &HC8E3&
    Brown = &H2C5A82
    Olive = &H64876D
    Steel = &H87766D
    Mauve = &H8A6076
    Sienna = &H2D52A0
    ' Colour name aliases from WP7.5
    Viridian = &HA9AB00
    Blue = &HE2A11B
    Purple = &HFF00AA
    Mango = &H68FA&
    ' Used for black in popups.
    Darken = &H1D1D1D
    ' Additional must-have names for grey scale.
    Black = &H0&
    DarkGrey = &H3F3F3F
    Grey = &H7F7F7F
    LightGrey = &HBFBFBF
    White = &HFFFFFF
End Enum


' Returns the literal name of the passed colour value if
' it is one of the Windows Phone Theme Colors.
'
' 2017-04-21. Gustav Brock, Cactus Data ApS, CPH.
'
Public Function LiteralWpThemeColor( _
    ByVal Color As wpThemeColor) _
    As String

    Dim Name    As String
    
    Select Case Color
        Case wpThemeColor.Lime
            Name = "Lime"
        Case wpThemeColor.Green
            Name = "Green"
        Case wpThemeColor.Emerald
            Name = "Emerald"
        Case wpThemeColor.Teal
            Name = "Teal"
        Case wpThemeColor.Cyan
            Name = "Cyan"
        Case wpThemeColor.Cobalt
            Name = "Cobalt"
        Case wpThemeColor.Indigo
            Name = "Indigo"
        Case wpThemeColor.Violet
            Name = "Violet"
        Case wpThemeColor.Pink
            Name = "Pink"
        Case wpThemeColor.Magenta
            Name = "Magenta"
        Case wpThemeColor.Crimson
            Name = "Crimson"
        Case wpThemeColor.Red
            Name = "Red"
        Case wpThemeColor.Orange
            Name = "Orange"
        Case wpThemeColor.Amber
            Name = "Amber"
        Case wpThemeColor.Yellow
            Name = "Yellow"
        Case wpThemeColor.Brown
            Name = "Brown"
        Case wpThemeColor.Olive
            Name = "Olive"
        Case wpThemeColor.Steel
            Name = "Steel"
        Case wpThemeColor.Mauve
            Name = "Mauve"
        Case wpThemeColor.Sienna
            Name = "Sienna"
        Case wpThemeColor.Viridian
            Name = "Viridian"
        Case wpThemeColor.Blue
            Name = "Blue"
        Case wpThemeColor.Purple
            Name = "Purple"
        Case wpThemeColor.Mango
            Name = "Mango"
        Case wpThemeColor.Darken
            Name = "Darken"
        Case wpThemeColor.Black
            Name = "Black"
        Case wpThemeColor.DarkGrey
            Name = "DarkGrey"
        Case wpThemeColor.Grey
            Name = "Grey"
        Case wpThemeColor.LightGrey
            Name = "LightGrey"
        Case wpThemeColor.White
            Name = "White"
    End Select
    
    LiteralWpThemeColor = Name
    
End Function

从这里,您可以创建一个循环来填充值列表以填充组合框。

旁注:请小心 MV(多值)字段,因为这些字段会按字母顺序对列表中的名称进行排序,这可能不是您想要的。


0
投票

美好的一天。 我知道您希望将枚举连接到表中列出。我以相反的方式创建一个类(从表到模块创建枚举),我认为这是更实用的解决方案。如果你愿意我可以和你分享。我是 stackflow 的初学者并创建了我的数据库,因此我在该领域并不专业,但通过一些更改和更好的实践,它将对您有用。让我知道。 费尔南多

© www.soinside.com 2019 - 2024. All rights reserved.