Access快速开发平台2.5.1版新增的MultiSelectFor函数为指定文本控件添加多选值很实用。但在特定的情景下比如多选值是句子。句子里有","/";"等常用标点符号和函数本身的分列字符相同就会出现重复选项情况。
例:
请假,家里有事。
病假,感冒了。
strSQL = "Select DISTINCT NOTE from tblLeave"
MultiSelectFor Me.NOTE, strSQL
选项卡里会出现:
请假
家里有事
病假
感冒了
解决办法是用不常用分列字符如:"__"
然后在文本控件的更新事件里打自定义的分列符替换成空格 " "
选项卡里会出现:
请假,家里有事。
病假,感冒了。

事例代码:
Private Sub NOTE_AfterUpdate()
If Not IsNull(Me.NOTE) Then
Me.NOTE = Replace(Me.NOTE, "__", " ")
End If
End Sub
Private Sub NOTEMulti_Click()
Dim strSQL As String
strSQL = "Select DISTINCT NOTE from tblLeave"
MultiSelectFor Me.NOTE, strSQL, "__"
End Sub
提示:
access 升迁到SQL SERVER 备注类型变成 ntext类型。
SQL SERVER ntext类型不支持 DISTINCT。
把 access备注类型改成合适长度的文本类型即可。