首页 > 解决方案 > 访问 VBA 以连续形式更改图像

问题描述

我正在尝试创建一个收据表格,人们将在其中确认他们是否已收到订单的全部数量。作为其中的一部分,我希望发生以下情况:

  1. 如果他们收到了全部数量,则会出现一个绿色复选标记
  2. 如果他们收到了部分数量,则会出现一个橙色三角形
  3. 如果他们没有收到任何物品,x则会出现红色

为了做到这一点,我为每种情况使用了一个包含 3 个图像文件的连续表单。当数量改变时,我正在使用下面的代码来改变图像。问题是,当数量在 1 行发生变化时,所有行的符号都会发生变化。我也会发图片。

关于如何解决这个问题的任何想法?

我也对实现这个想法的其他方法持开放态度。

Private Sub FinalQTY_AfterUpdate()

If IsNull(Me.FinalQty) Then
    MsgBox "You must enter a quantity for this item"
    Me.FinalQty.SetFocus
    Exit Sub
Else
    LValue = Me.[FinalQty]
    If IsNumeric(LValue) = 0 Then
    Me.FinalQty = ""
    MsgBox "Qty must be a numeric value"
    Me.QTY.SetFocus
    Exit Sub
    End If
End If

Me.FinalTotalPrice = Me.FinalPrice * Me.FinalQty

If Me.FinalQty = 0 Then
    Me.Yes.Visible = False
    Me.Change.Visible = False
    Me.No.Visible = True
End If

If Me.FinalQty < Me.QTY Then
    Me.Yes.Visible = False
    Me.Change.Visible = True
    Me.No.Visible = False
End If

If Me.FinalQty = Me.QTY Then
    Me.Yes.Visible = True
    Me.Change.Visible = False
    Me.No.Visible = False
End If

End Sub

这是在我调整数量之前:

这是在我调整数量之前

这是在我仅调整第二行的数量之后:

这是在我只调整了第二行的数量之后

标签: formsms-accessvba

解决方案


由于连续表单显示的每条记录的格式都继承自表单设计模板,因此对模板的任何更改都将自动应用于表单显示的所有记录,除了有效的条件格式规则或少数可能的属性通过OnPaint详细信息部分的事件进行更改。

一种可能的替代方法是向表中添加一个数据类型为 OLE 对象的新字段,并AfterUpdate使用该AppendChunk方法填充事件的值,从一个单独的表中获取图像数据,其中包含对应于绿色勾号、橙色三角形、和红十字图像。


推荐阅读