设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 12546|回复: 20

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

[复制链接]
发表于 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

本帖被以下淘专辑推荐:

发表于 2010-8-11 16:08:25 | 显示全部楼层
学习学习!!!
发表于 2010-8-11 19:23:41 | 显示全部楼层
收藏了
谢谢分享

点击这里给我发消息

发表于 2010-8-11 19:27:28 | 显示全部楼层
实用!
发表于 2010-8-11 20:24:49 | 显示全部楼层
实用,学习了,谢谢

点击这里给我发消息

发表于 2010-8-11 23:27:02 | 显示全部楼层
学习一下,辛苦了
发表于 2010-8-12 07:24:09 | 显示全部楼层
学习一下,辛苦了
发表于 2010-8-12 08:38:29 | 显示全部楼层
谢谢分享
发表于 2010-8-12 08:41:51 | 显示全部楼层
要好好学习天天向上
发表于 2010-8-12 08:57:10 | 显示全部楼层
请教一下,我下载这个例子运行的时候有提示:对文件“mscomct2.ocx”版本2.0丢失或损坏的引用。哪位给发下这个文件啊?我的是VISTA home basic系统.office 2007
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 23:15 , Processed in 0.118101 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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