MS Access:基于字符串的多值字段

时间:2016-04-08 18:34:06

标签: ms-access multivalue

以下是我的情况:

  • 链接表(所以我实际上无法修改列配置)有一个列,其中包含以逗号分隔的值列表。这是一个文本字符串 - 不是真正的多值字段。
  • 我需要将这些值映射到查找表,并使用查找值
  • 返回逗号分隔列表

因此,假设一行中包含以下值:A,B,C。映射表映射:A | 1,B | 2,C | 3。我查询中的结果列应列出1,2,3(映射值)。

我可以在查询中添加一个列,指示显示控件是组合框(这是您通常对多值字段执行的操作),选择我的行源,并绑定列 - 但只包含行单个选项值将正确映射。如果它具有以逗号分隔的列表,则根据上面的示例,它不会映射值。我该怎么做这个映射?

1 个答案:

答案 0 :(得分:1)

要显示此类结果,您需要一个VBA功能。

代码如下:

Public Function TransComma(MyList As Variant) As String

   Dim TransList        As Variant
   Dim Token            As Variant
   Dim result           As String

   If IsNull(MyList) = False Then
      TransList = Split(MyList, ",")
      For Each Token In TransList
         If result <> "" Then result = result & ","
         result = result & DLookup("Color", "tblColors", "ID = " & Trim(Token))
     Next Token
     TransComma = result
  End If

End Function

以上代码将放在标准代码模块中。

现在,您可以在表单中放置一个文本框,并将控件源设置为此

=(TransComma([name of field]))

对于报告或SQL查询,只需转到:

Select firstName, LastName, ColorList, TransComma([ColorList) 
as translated from tblCustomers

因此,一旦构建了这个翻译函数,就可以使用它将数字翻译成某些文本。