|
7#

楼主 |
发表于 2011-11-25 22:12:17
|
只看该作者
本帖最后由 鱼儿游游 于 2011-11-25 22:14 编辑
t小宝 发表于 2011-11-25 20:43 ![]()
2楼的似乎可行呀
我用下面的方法基本可行了,待改进的地方:当有某字段名是另一字段名的一部分时,会出错。
‘
' 如数据源的SELECT语句字段名有别名,把 strFilter 中的所有字段加上原来的别名
'
Private Function AddAliasNameIntoFilter(ByVal strSQL_FieldList As String, ByVal strFilter As String) As String
Dim arrFieldName() As String
Dim strFieldName As String '不含[]的字段名
Dim intPos As Integer
Dim intI As Integer
'取SQL语句中的字段
arrFieldName = Split(strSQL_FieldList, ",")
strResult = ""
For intI = LBound(arrFieldName) To UBound(arrFieldName) Step 1
arrFieldName(intI) = Trim(Nz(arrFieldName(intI), ""))
intPos = InStr(1, arrFieldName(intI), ".", vbTextCompare)
If intPos > 0 Then
strFieldName = Trim(Mid(arrFieldName(intI), intPos + 2))
strFieldName = Trim(Left(strFieldName, Len(strFieldName) - 1))
strFilter = Replace(strFilter, strFieldName, "[" & strFieldName & "]", 1, -1, vbTextCompare) 'YYY ------> [YYY]
strFilter = Replace(strFilter, "[[" & strFieldName & "]]", "[" & strFieldName & "]", 1, -1, vbTextCompare) '[[YYY]] --> [YYY]
strFilter = Replace(strFilter, "[" & strFieldName & "]", arrFieldName(intI), 1, -1, vbTextCompare) '[YYY] ----> [XXX].[YYY]
End If
Next
AddAliasNameIntoFilter = strFilter
End Function |
|