设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 12885|回复: 20
打印 上一主题 下一主题

[模块/函数] 【Access小品】组合框新增数据--对猫版实例的改造

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-11 15:49:07 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
  今日见猫版发一组合框自动添加数据的实例,觉得有点意思。说起来,文本框、组合框、列表框三个控件功能有很大的不同,文本框可以输入新数据,列表框是完全不能输入数据,组合框可以输入数据但是很折腾人。从综合性能来说,组合框相对较优。组合框的新数据的增加不像文本框那么简单,需要利用其独有的【不在列表中】事件。由于数据源的复杂性,也不是所有组合框都能实现新增数据的,或者说有些新增可能复杂到不如采取其他更为简单的方式处理,比如说组合框的数据源是一个分组查询或者联合查询什么的。

  猫版所发的实例,为一个特定的实例,缺乏通用性。想了想可以在此基础上,做一个相对通用的自定义函数,来一般性的解决组合框新增数据问题。于是写此例,供版友们参考。





Public Function newVal(ctl As Control, NewData As String, Response As Integer)
'功能:组合框添加数据
'适用:1、值列表
'      2、表或查询---仅适用一种情况:表中的ID字段为自动编号数据类型。
'示例:在出仓类别的【不在列表中】事件中写入代码:
'   Private Sub 出仓类别_NotInList(NewData As String, Response As Integer)
'      newVal Me.出仓类别, NewData, Response
'   End Sub
Select Case ctl.RowSourceType
    Case "Table/Query"
        Dim rs As New ADODB.Recordset
        Dim ssql As String
        Dim A, i As Long
        If MsgBox("所输数据不在选择列表中,确认存储数据吗?", vbOKCancel, "确认存储数据") = vbOK Then
            Response = acDataErrAdded
            ssql = ctl.RowSource
            rs.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
            rs.AddNew
            A = Split(ctl.ColumnWidths, ";")
            For i = 0 To UBound(A, 1)
                If Val(A(i)) > 0 Then
                    Exit For
                End If
            Next
            rs.Fields(i).Value = NewData
            rs.Update
            rs.Close
            ctl.RowSource = ssql
        Else
            Response = acDataErrContinue
            ctl.Undo
        End If
    Case "Value List"
        If MsgBox("所输数据不在选择列表中,确认存储数据吗?", vbOKCancel, "确认存储数据") = vbOK Then
            Response = acDataErrAdded
            ctl.RowSource = ctl.RowSource & ";" & NewData
        Else
            Response = acDataErrContinue
            ctl.Undo
        End If
End Select
End Function

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖1 订阅订阅
2#
 楼主| 发表于 2010-8-12 16:35:57 | 显示全部楼层
请教一下,我下载这个例子运行的时候有提示:对文件“mscomct2.ocx”版本2.0丢失或损坏的引用。哪位给发下这 ...
lovehere 发表于 2010-8-12 08:57

把丢失的引用不要试试。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-11 13:36 , Processed in 0.105399 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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