设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 647|回复: 10
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2003-2-15 06:24:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
Access 的组合框(列表框)实在不如VB的方便.
比如不能使用 AddItem,Clear 等方法.

如果我们能够使 组合框的数据源基于一个数组的话....
相信所有问题都会迎刃而解!

也就是我们自制了 AddItem 方法![em27]

那我们应该如何去做呢?......
请各路高手发表意见!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
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 为 "值列表" 以实现此功能,但实现起来会有更多的限制(比如数组长度的限制)

如果使用表,则首先你得定义一个临时表.且对表的操作相信也没有对数组的操作那么自由.
10#
发表于 2003-2-17 21:06:00 | 只看该作者
好主意,够简单的。

点击这里给我发消息

9#
发表于 2003-2-17 20:57:00 | 只看该作者
其实最简单的方法就是:数据源对应一个表,然后对表进行追加/删除等操作,再刷新COMBOX或LISTBOX的数据,即可!

[em26]
8#
 楼主| 发表于 2003-2-17 18:03:00 | 只看该作者
方法有两种,都可以实现多列
7#
 楼主| 发表于 2003-2-17 18:02:00 | 只看该作者
To:对面男孩
这个问题应该是用 RowSourceType 实现.
其实我早已实现了这个功能.只是想看看有没人与我有同样的想法或是有更好的方法.
没想到,大家都对它不感兴趣.
6#
发表于 2003-2-17 17:44:00 | 只看该作者
可以用RowSource来实现,但是Column只能是一列,所以N不方便,XP我没有用过,不知道是不是改正了这个缺点。
5#
 楼主| 发表于 2003-2-15 23:11:00 | 只看该作者
无人问津?
4#
 楼主| 发表于 2003-2-15 16:56:00 | 只看该作者
我是希望 Access 2000 也能实现.
相信还有很多朋友都还在用 2000 吧
3#
发表于 2003-2-15 07:35:00 | 只看该作者
ACCESS XP的列表框好像有这些功能了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-23 18:21 , Processed in 0.105878 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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