窗体加载事件给组合框赋上行来源并实现智能筛选


窗体加载事件给组合框赋上行来源并实现智能筛选

1.进入“frm采购订单_Edit_Detail”窗体的设计界面,再进入该窗体模块的VBA设计界面,在代码区的上部:

 Option Compare Database
 '加上这一行代码
 Private mclsSC商品ID As New SearchComboBox '声明一个组合框动态筛选类并将其实例化

2.在窗体的加载事件中写如下代码:

1Private Sub Form_Load()
 mclsSC商品ID.Init Combo:=Me.商品ID, _
                     SearchField:="商品编码 & 品名规格 & 拼音码", _
                     SQLSELECT:="商品ID, 商品编码, 品名规格, 单位, 最新进价 AS 单价", _
                     SQLFROM:="商品信息表", _
                     SQLWHERE:="已停用=0", _
                     SQLORDERBY:="品名规格, 商品编码"
 End Sub


 还要在窗体关闭事件加句:

Private Sub Form_Close()
    Set mclsSC供应商ID = Nothing

End Sub


设置商品ID组合框的属性

1.进入“frm采购订单_Edit_Detail”窗体的设计界面,选中组合框 “商品ID”,进入其属性界面,设置该组合框的以下属性:

列数:5 (代表一共有5列数据)

列标题:是

列宽:0;2.787;7.175;0.99;1.524(这里也可以输入:0;3;7;1;1.5 ----第1个为0代表第1列不显示)

列表宽度:14( 说明:只需要比上面5列的宽度之和大0.1就可以了,这样不致于有滚动条出现)

如下图所示:

2.保存刚才的设置。


商品编码发生重复时提醒操作员

在录入采购明细时,同一供应商同一采购单不应该发生同一商品编码录入2次的情形,如果有也应该合并为1条记录,因此,如果发生了重复,就应该提示操作员进行修改,分两步进行设计:

第1步:找到“TMP_采购订单明细表”,打开这个表,看有数据没有,如果有,则清空该表中的所有数据。然后进入该表的设计视图,将字段“商品ID”设置为主键或者将字段“商品ID”设置为 有索引(不重复)并且“必需”为否(这样当操作员录入重复数据时就会系统提示出错,接下来第2步的代码则会捕捉到这个错误号,从而显示第2步代码中自定义的人性化的错误提示)

第2步:在“frm采购订单_Edit_Detail”窗体的出错事件中写代码如下:

   Private Sub Form_Error(DataErr As Integer, Response As Integer)
     Const conDuplicateKey = 3022
     Dim strMsg As String
     Debug.Print DataErr
     If DataErr = conDuplicateKey Then
         Response = acDataErrContinue
         strMsg = "商品编码不允许重复,请重新选择!"
         Me.商品ID.SetFocus
         MsgBox strMsg, vbCritical, "提示"
         Me.商品ID = Null
     End If
 End Sub


人性化录入数据的思考

从3.1表设计中的采购订单明细表(点击此查看)的设计中可以看出,一共有5个字段:采购订单号、商品ID、数量、单价、完成数量。而之前我们设计的录入界面中,多了3个字段:品名规格、单位、单价(说明:即TMP_采购订单明细表,已入库数量就是完成数量)。

为何要多设计这3个字段呢?不设计不行吗?原因是:为了让操作人员可以方便的看到自已录入的信息,而不仅仅只是看到一个商品编码。因此,当操作员选择了某个商品编码时,若能自动带出相应的品名规格、单位、单价那是最好不过的了,如下图3个红框处所示:

返回页首

商品ID组合框的更新后事件

在前面的学习中,我们知道商品ID组合框一共有5列(第1列由于将列宽设置为0了,因而看不见),当操作员选择了某个商品编码时,通过组合框的Column属性,可以获取同一行相应列的值,例如:

me.组合框名称.Column(0)代表第1列,me.组合框名称.Column(1)代表第2列,以此类推。

进入“frm采购订单_Edit_Detail”窗体设计界面,在组合框商品ID的更新后事件中写以下代码:

 Private Sub 商品ID_AfterUpdate()
    Me.品名规格 = Me.商品ID.Column(2) '2代表第3列,下同
    Me.单位 = Me.商品ID.Column(3)
    Me.单价 = Me.商品ID.Column(4)
    Me.数量.SetFocus
 End Sub

模拟一下录入明细订单的场景,如下图所示:

试想,如果操作员在录入后面的明细商品时,如果没有上图红框中的信息,并不影响软件的应用,但是操作员会感觉好累,因为若要知道商品编码相对应的信息时,还得去选择一下组合框才能查看到该商品编码对应的信息。

这样,我们就用VBA代码实现了当操作员选择某个商品编码时,自动给相应控件赋上了值,非常方便实用。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值