Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > 源码示例

Access数组函数 Array Split Join 常见用法示例

时 间:2016-11-02 13:24:09
作 者:张义成   ID:37928  城市:赤峰
摘 要:Access数组函数 Array Split Join 常见用法示例
正 文:

Option Compare Database
Option Explicit
Option Base 1
'---------------------------------------------------
'数组
'连续可索引的具有相同内在数据类型的元素所成的集合,数组中的每一元素具有唯一索引号。更改其中一个元素并不会影响其它元素。
'---------------------------------------------------
'Option Base 语句
'在模块级别中使用,用来声明数组下标的缺省下界。
'Option Base {0 | 1}
'由于下界的缺省设置是 0,因此无需使用 Option Base 语句。如果使用该语句,则必须写在模块的所有过程之前。
'一个模块中只能出现一次 Option Base,且必须位于带维数的数组声明之前。
'注意 Dim、Private、Public、ReDim 以及 Static 语句中的 To 子句提供了一种更灵活的方式来控制数组的下标。
'不过,如果没有使用 To 子句显式地指定下界,则可以使用 Option Base 将缺省下界设为 1。
'使用 Array 函数或 ParamArray 关键字创建的数组的下界为 0;Option Base 对 Array 或 ParamArray 不起作用。
'Option Base 语句只影响位于包含该语句的模块中的数组下界。
'---------------------------------------------------
'Array 函数
'返回一个包含数组的 Variant
'Array(arglist)
'所需的 arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。
'用来表示数组元素的符号由变量名。圆括号以及括号中的所需元素的索引号组成。
'在下面的示例中,第一条语句创建一个 Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。
'Dim A As Variant
'A = Array(10, 20, 30)
'B = A(2)
'使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBA.Array )名称限定。
'如果是由类型库名称限定,则 Array 不受 Option Base 的影响。
'注意 没有作为数组声明的 Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。
'尽管一个包含数组的 Variant 和一个元素为 Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。
'---------------------------------------------------
'LBound 函数
'返回一个 Long 型数据,其值为指定数组维可用的最小下标。
'---------------------------------------------------
'UBound 函数
'返回一个 Long 型数据,其值为指定的数组维可用的最大下标。
'---------------------------------------------------
'Split 函数
'返回一个下标从零开始的一维数组,它包含指定数目的子字符串。
'Split(expression[, delimiter[, limit[, compare]]])
'Split函数语法有如下命名参数:
'expression 必需的。包含子字符串和分隔符的字符串表达式 。
'如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
'delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。
'如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。
'limit 可选的。要返回的子字符串数,–1表示返回所有的子字符串。
'compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。
'---------------------------------------------------
'Join 函数
'返回一个字符串,该字符串是通过连接某个数组中的多个子字符串而创建的。
'Join(sourcearray[, delimiter])
'Join函数语法有如下命名参数:
'sourcearray 必需的。包含被连接子字符串的一维数组。
'delimiter 可选的。在返回字符串中用于分隔子字符串的字符。如果忽略该项,则使用空格(" ")来分隔子字符串。
'如果delimiter是零长度字符串(""),则列表中的所有项目都连接在一起,中间没有分隔符。
'---------------------------------------------------


'编者:张义成
'日期:2016-10-10
'功能:数组函数 Array Split Join 常见用法示例
'---------------------------------------------------


'使用 Array 函数或 ParamArray 关键字创建的数组的下界为 0;Option Base 对 Array 或 ParamArray 不起作用。
'使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBA.Array )名称限定。
'以上引述两条说明,似有相互龃龉的感觉 !
'以下示例过程表明,Option Base 1 的语句,仅对 使用 Array 函数创建的数组的下界 产生影响 !
'---------------------------------------------------


Private Sub cbo项目_AfterUpdate()
On Error GoTo ErrorHandler


        Dim arrSplit As Variant
        Dim i As Long
        Dim strQ As String
        Dim strR As String
        
    If Not IsNull(cbo项目) And cbo项目 <> "" Then
    
            Text32 = "cbo项目.Column(0) = " & cbo项目.Column(0) & "  cbo项目.Column(1) = " & cbo项目.Column(1)
            
        For i = 0 To cbo项目.ListCount - 1
            strQ = strQ & " " & cbo项目.ItemData(i)
        Next i
        
            strQ = Trim(strQ)
            Text34 = strQ
            
            arrSplit = Split(strQ, " ")      '如果 strU 中的分隔符是空格(" "),那么 Split(strQ, " ") 可以简缩为 Split(strQ) 。
            
        If Not IsArray(arrSplit) Then
            MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
            Exit Sub
        End If
        
            strR = Join(arrSplit, "-")
            Text36 = strR
    Else
            Text30 = Null
            Text32 = Null
            Text34 = Null
            Text36 = Null
            Text38 = Null
    End If
    
ErrorHandlerExit:
    Exit Sub
ErrorHandler:
    MsgBox "Error No:" & Err.Number & "    Description:" & Err.Description
    Resume ErrorHandlerExit
End Sub


Private Sub cbo项目_GotFocus()
On Error GoTo ErrorHandler
        cbo项目.Dropdown
ErrorHandlerExit:
    Exit Sub
ErrorHandler:
    MsgBox "Error No:" & Err.Number & "    Description:" & Err.Description
    Resume ErrorHandlerExit
End Sub


Private Sub Opt字段名称甲_Click()
On Error GoTo ErrorHandler


        Dim arrArray As Variant
        Dim arrSplit As Variant
        Dim i As Long
        Dim strU As String
        Dim strV As String
        Dim strW As String
        
    If Opt字段名称甲 = True Then
    
            arrArray = Array("序号", "链接", "编号", "名称", "年代", "级码", "级别", "件套", "数量", "品类", "质类", "质型", "质地", "完残", "状况")
            
        If Not IsArray(arrArray) Then
            MsgBox "代码错误:变量 arrArray 不是数组 !", vbExclamation, "郑重提示"
            Exit Sub
        End If
        
            Text40 = "LBound(arrArray) = " & LBound(arrArray) & "  UBound(arrArray) = " & UBound(arrArray)
            
        For i = LBound(arrArray) To UBound(arrArray)
            strU = strU & " " & arrArray(i)
        Next
        
            strU = Trim(strU)
            Text42 = strU
            
            arrSplit = Split(strU, " ")      '如果 strU 中的分隔符是空格(" "),那么 Split(strU, " ") 可以简缩为 Split(strU) 。
            
        If Not IsArray(arrSplit) Then
            MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
            Exit Sub
        End If
        
            Text44 = "LBound(arrSplit) = " & LBound(arrSplit) & "  UBound(arrSplit) = " & UBound(arrSplit)
            
            strW = Join(arrSplit, "-")
            Text46 = strW
    Else
            Text40 = Null
            Text42 = Null
            Text44 = Null
            Text46 = Null
            Text48 = Null
    End If
    
ErrorHandlerExit:
    Exit Sub
ErrorHandler:
    MsgBox "Error No:" & Err.Number & "    Description:" & Err.Description
    Resume ErrorHandlerExit
End Sub


Private Sub Opt字段名称乙_Click()
On Error GoTo ErrorHandler


        Dim arrSplit As Variant
        Dim i As Long
        Dim strH As String
        Dim strJ As String
        Dim strK As String
        Dim fld As Field
        Dim rst As DAO.Recordset
        Set rst = Me.Recordset
        
    If Opt字段名称乙 = True Then
    
        For Each fld In rst.Fields
            strH = strH & " " & fld.Name
        Next
        
            strH = Trim(strH)
            Text50 = strH
            
            arrSplit = Split(strH, " ")      '如果 strH 中的分隔符是空格(" "),那么 Split(strH, " ") 可以简缩为 Split(strH) 。
            
        If Not IsArray(arrSplit) Then
            MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
            Exit Sub
        End If
        
            Text52 = "LBound(arrSplit) = " & LBound(arrSplit) & "  UBound(arrSplit) = " & UBound(arrSplit)
            
        For i = LBound(arrSplit) To UBound(arrSplit)
            strK = strK & " " & arrSplit(i)
        Next
        
            strK = Trim(strK)
            Text54 = strK
    Else
            Text50 = Null
            Text52 = Null
            Text54 = Null
            Text56 = Null
    End If
    
ErrorHandlerExit:
    Exit Sub
ErrorHandler:
    MsgBox "Error No:" & Err.Number & "    Description:" & Err.Description
    Resume ErrorHandlerExit
End Sub


Private Sub Opt控件名称_Click()
On Error GoTo ErrorHandler


        Dim strA As String
        Dim strB As String
        Dim strC As String
        Dim strD As String
        Dim strL As String
        Dim strM As String
        Dim strN As String
        Dim ctl As Control
        Dim arrSplit As Variant
        Dim i As Long
        
    If Opt控件名称 = True Then
    
            txt控件个数 = "Me.Controls.Count = " & Me.Controls.Count     '简缩形式 Me.Count
            
        For Each ctl In Me.Controls
            With ctl
                Select Case .ControlType
                    Case acLabel
                        strA = strA & " " & ctl.Name
                    Case acTextBox
                        strB = strB & " " & ctl.Name
                    Case acOptionButton
                        strC = strC & " " & ctl.Name
                    Case acComboBox
                        strD = strD & " " & ctl.Name
                End Select
            End With
        Next ctl
        
            strA = Trim(strA)
            strB = Trim(strB)
            strC = Trim(strC)
            strD = Trim(strD)
            strL = strA & " " & strB & " " & strC & " " & strD
            txt控件名称甲 = strL
            
        'For Each ctl In Me.Controls
            'strM = strM & " " & ctl.Name
        'Next ctl
        
            'strM = Trim(strM)
            'txt控件名称甲 = strM
            
        For i = 0 To Me.Controls.Count - 1
            strN = strN & " " & Me.Controls.Item(i).Name
        Next
        
            strN = Trim(strN)
            txt控件名称乙 = strN
            
            arrSplit = Split(strN, " ")      '如果 strN 中的分隔符是空格(" "),那么 Split(strN, " ") 可以简缩为 Split(strN) 。
            
        If Not IsArray(arrSplit) Then
            MsgBox "代码错误:变量 arrSplit 不是数组 !", vbExclamation, "郑重提示"
            Exit Sub
        End If
        
            txt控件界标 = "LBound(arrSplit) = " & LBound(arrSplit) & "  UBound(arrSplit) = " & UBound(arrSplit)
    Else
            txt控件个数 = Null
            txt控件界标 = Null
            txt控件名称甲 = Null
            txt控件名称乙 = Null
    End If
    
ErrorHandlerExit:
    Exit Sub
ErrorHandler:
    MsgBox "Error No:" & Err.Number & "    Description:" & Err.Description
    Resume ErrorHandlerExit
End Sub


附   件:

点击下载此附件


图   示:

点击图片查看大图



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助