【问题标题】:How do I use a Checkbox on a form to add a record into a subform in Microsoft Office Access?如何使用表单上的复选框将记录添加到 Microsoft Office Access 中的子表单中?
【发布时间】:2010-10-05 04:07:18
【问题描述】:

我有一个地毯公司的数据库。我有一个表格,可以让用户进行报价,包括选择客户等。还有一个处理产品和附加品的子表格,包括数量和单价。要说明用户是否需要拟合,有一个复选框。勾选后,我希望将配件作为产品之一添加到子表单中。通常使用下拉菜单手动选择产品。

重要的属性是:
表单名称:订单
子表单名称:订单详情子表单
复选框名称:拟合
产品的字段名称:产品 ID
链接到表格的子表单:订单详情
表格链接到表格:订单

我假设需要 VBA 或宏生成器。

无论如何提前谢谢!

【问题讨论】:

  • 请注意,子表单由子表单控件和控件中包含的表单组成,并且它们并不总是具有相同的名称。从 VBA 的角度来看,与控件本身的名称相比,很少需要包含表单的名称。

标签: ms-access forms vba checkbox subform


【解决方案1】:

我认为最简单的方法是使用追加查询。

If Me.Fitting Then
   strSQL="INSERT INTO [Order Details] (ProductID,OtherTextField) Values ("
         & Me.ProductID & ",'" & Me.OtherTextField & "')"
   CurrentDB.Execute strSQL, dbFailOnError

   Me.[Subform control name here].Form.Requery
End If

【讨论】:

  • 对不起,我很困惑......把它归结为我的新手!这是在 vba 编辑器中制作的,还是实际上在附加查询设计视图中制作的。您是否还添加了另一个文本字段作为示例??
  • 这是 VBA,文本字段是显示文本所需分隔符的示例。您还需要日期分隔符 (#),但日期很棘手,并且还需要格式化。如果您想获得追加(插入)查询的示例,可以使用查询设计窗口并切换到 SQL 视图。
【解决方案2】:

在复选框控件上,您将在复选框的更新后事件上添加一个[事件过程](参见属性窗口)。这将删除 VBA 代码,单击省略号(“...”)以获取 VBA 代码。

您可以使用 Remou 的代码(经过一段时间)插入新产品:

If Me.Fitting Then
    strSQL="INSERT INTO [Order Details] (ProductID,OtherTextField) " & _
        "Values (" & _
        Me.ProductID & ",'" & Me.OtherTextField & "')"
    CurrentDB.Execute strSQL, dbFailOnError

    Me.[Subform control name here].Form.Requery
End If
'[code not tested]

但是,您可能还想检查订单中不存在该产品(您的业务规则是否允许安排多个试衣),并且您可能还想允许删除试衣产品如果未选中 - 您可以在“结束 if”之前的 if 上使用 else 条件:

if 'blah
     'blah blah
else
    strSQL="Delete [Order Details] " & _
        "where ProductID = " & Me.ProductID & " " & _
            "and OtherTextField = 'fitting' " 
    CurrentDB.Execute strSQL, dbFailOnError

    Me.[Subform control name here].Form.Requery
end if
'[code not tested]

您还必须破解您的 Products 子表单,以便在您从中删除 Fitting 产品时更新复选框(或者这样您就无法删除 Fittings)。

再一次,也许您不想使用复选框,而只是将配件作为另一个下拉选项,就像其他产品一样。每当创建新订单时,您始终可以确保它自动填充到 [订单详细信息] 中,这样就不会被遗忘。这将与产品选择用户界面的其余部分更加一致。

【讨论】:

  • 因此我对“代码未测试”的评论。您的字段是名为“ProductID”还是“Product ID”。在后一种情况下,您可能必须将其更改为类似 Me.[Product ID]。
【解决方案3】:

这是无代码解决方案:

去掉 Fitting 复选框。制作适合产品并像其他所有产品一样添加它。如果您想知道订单是否需要试衣(我猜这就是您有此复选框的原因。),您可以创建查询以查看试衣是否是您的报告/发票上的产品之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多