Office中国论坛/Access中国论坛

标题: 【Access小品】组合框新增数据--对猫版实例的改造 [打印本页]

作者: todaynew    时间: 2010-8-11 15:49
标题: 【Access小品】组合框新增数据--对猫版实例的改造
  今日见猫版发一组合框自动添加数据的实例,觉得有点意思。说起来,文本框、组合框、列表框三个控件功能有很大的不同,文本框可以输入新数据,列表框是完全不能输入数据,组合框可以输入数据但是很折腾人。从综合性能来说,组合框相对较优。组合框的新数据的增加不像文本框那么简单,需要利用其独有的【不在列表中】事件。由于数据源的复杂性,也不是所有组合框都能实现新增数据的,或者说有些新增可能复杂到不如采取其他更为简单的方式处理,比如说组合框的数据源是一个分组查询或者联合查询什么的。

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

[attach]43075[/attach]

[attach]43076[/attach]

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


作者: 157008880    时间: 2010-8-11 16:08
学习学习!!!
作者: xuwenning    时间: 2010-8-11 19:23
收藏了
谢谢分享
作者: tmtony    时间: 2010-8-11 19:27
实用!
作者: fnsmydyang    时间: 2010-8-11 20:24
实用,学习了,谢谢
作者: t小宝    时间: 2010-8-11 23:27
学习一下,辛苦了
作者: yanwei82123300    时间: 2010-8-12 07:24
学习一下,辛苦了

作者: c101    时间: 2010-8-12 08:38
谢谢分享
作者: lovehere    时间: 2010-8-12 08:41
要好好学习天天向上
作者: lovehere    时间: 2010-8-12 08:57
请教一下,我下载这个例子运行的时候有提示:对文件“mscomct2.ocx”版本2.0丢失或损坏的引用。哪位给发下这个文件啊?我的是VISTA home basic系统.office 2007
作者: asklove    时间: 2010-8-12 16:18
好东东,学习收藏
作者: todaynew    时间: 2010-8-12 16:35
请教一下,我下载这个例子运行的时候有提示:对文件“mscomct2.ocx”版本2.0丢失或损坏的引用。哪位给发下这 ...
lovehere 发表于 2010-8-12 08:57

把丢失的引用不要试试。


作者: 风啸啸    时间: 2010-8-15 15:28
收藏,学习......
作者: wang1950317    时间: 2010-8-15 19:02
学习!
作者: wime911    时间: 2010-8-15 21:09
收藏

作者: ZHENGLIAN    时间: 2010-8-21 12:00
好好学习天天向上
作者: 笑夕阳    时间: 2011-2-9 17:06
用上了,真不错,又完善了自己的程序一步,谢谢斑竹
作者: yanghua1900363    时间: 2012-12-8 17:09
非常实用!多谢老汉!
作者: cjf78    时间: 2012-12-23 17:14
我对此非常需要,感谢分享
作者: xie62    时间: 2012-12-24 18:54
感谢分享
作者: YXH_YXH    时间: 2013-5-18 11:26
学习学习!!!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3