2016-04-08 47 views
0

这里查找值是我的情况:MS访问:对于基于字符串的多值字段

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

所以我们说一个行具有值:在此列A,B,C。映射表映射:A | 1,B | 2,C | 3。在我的查询结果列应列出1,2,3(映射值)。

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

+0

请澄清你的问题:源列是一个纯文本字段,它是否包含逗号分隔的字符串,还是真正的多值字段(由Access中的“查阅向导”创建)? –

+0

文本字符串。我编辑了描述。 – lcdservices

+0

我有一个查询,其中我想输出字符串“1,2,3”作为映射表中的值“A,B,C”。 – lcdservices

回答

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 

所以一旦你建立这个翻译功能,它可以用来把数字翻译成一些文本。