设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: Roadbeg
打印 上一主题 下一主题

[讨论]如何用数组作为组合框的数据源

[复制链接]
11#
 楼主| 发表于 2003-2-17 23:04:00 | 只看该作者
使用自定义函数作为组合框数据源
设 Combo.RowSourceType=GetList
RowSource 属性不填( 此时 RowSource 属性将被忽略 )
定义全程变量及函数如下:

public ListSource(100) as String

Function GetList(fld As Control, ID As Variant, row As Variant, col As Variant, code As Variant) As Variant
    Static ListCount As Long
    Dim i as Long
    Select Case code
        Case acLBInitialize            ' 初始化。
            For i = 0 To 99
                If ListSource(i) = "" Then Exit For
            Next i
            GetList = IIf(i, True, False)
            ListCount = i
        Case acLBOpen                    ' 打开。
            GetList = Timer        ' 唯一 ID。
        Case acLBGetRowCount            ' 获取行。
            GetList = ListCount
        Case acLBGetColumnCount    ' 获取列。
            GetList = 1
        Case acLBGetColumnWidth    ' 获取列宽。
            GetList = -1            ' 使用默认宽度。
        Case acLBGetValue                ' 获取数据。
            GetList = ListSource(row)
    End Select
End Function

上例定义了一个 容量 为 100 的字符串数组作为 Combo 的数据源.
在使用时可以灵活的通过对 数组数据的增删实现 Combo 的列表增删.(当然,得调用 Combo的Recalc方法)
上例中 ListSource 为一列,也可以设 ListSource 为多维数组,并适当的修改 Case acLBGetColumnCount 及 Case acLBGetValue 处的语句以实现多列.

其实,也可以通过设 RowSourceType 为 "值列表" 以实现此功能,但实现起来会有更多的限制(比如数组长度的限制)

如果使用表,则首先你得定义一个临时表.且对表的操作相信也没有对数组的操作那么自由.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-23 18:27 , Processed in 0.106274 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表