2016-04-08 81 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 

所以一旦你建立這個翻譯功能,它可以用來把數字翻譯成一些文本。