如何在窗体上使用复选框将记录添加到Microsoft Office Access中的窗体中?

问题描述:

我有一个地毯公司的数据库。我有一个表格,可以让用户进行报价,包括选择客户等。还有一个子表格处理产品和附加费用,数量和单价。为了说明用户是否需要安装,有一个复选框。当打勾时,我想作为其中一个产品添加到子窗体中。产品通常使用下拉菜单进行手动选择。如何在窗体上使用复选框将记录添加到Microsoft Office Access中的窗体中?

重要的属性是:
表单名称:订单
表单名称:订单明细子窗体
复选框名称:产品配件
字段名称:产品编号
子窗体链接表:订单详情
链接到表的表格:Orders

我假设需要VBA或宏建设者。

无论如何感谢提前!

+0

请注意,子窗体包含子窗体控件和控件中包含的窗体,并且这些窗体并不总是具有相同的名称。从VBA的角度来看,包含表单的名称与控件本身的名称相比很少需要。 – Fionnuala 2009-02-03 16:21:37

在复选框控件上,您将在复选框的After Update事件(请参阅属性窗口)上添加一个[Event Procedure]。这将删除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] 

不过,你可能还需要检查该产品已经不为订单存在于(做你的业务规则允许安排多个配件),并且您可能还希望在未检查时允许拆卸配件产品 - 如果在“end if”之前if可以使用其他条件:

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子窗体,以便如果您从中删除Fittin*品,则更新复选框(或者您无法以此方式删除Fittings)。

然后,也许你不想使用复选框,只是让配件作为另一个下拉选项,就像其他产品一样。无论何时创建新订单,您都可以确保将其自动填充到[订单明细]中,因此不会被遗忘。这将与产品选择用户界面的其余部分更加一致。

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

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 
+0

对不起,我很困惑...把它放到我的新手! 这是在vba编辑器中进行的,或者实际上是在追加查询设计视图中。也有你添加另一个文本字段只是作为一个例子? – 2009-02-03 15:23:31

+0

这是VBA,文本字段是显示文本所需分隔符的示例。您还需要日期(#)的分隔符,但日期很复杂,而且需要格式化。如果您想获取附加(插入)查询的示例,可以使用查询设计窗口并切换到SQL视图。 – Fionnuala 2009-02-03 16:18:46

这是无码解决方案:

摆脱适配复选框。安装一个产品,并像所有其他产品一样添加。如果您想知道订单是否需要配件(我猜这就是您选中该复选框的原因),您可以创建一个查询来查看配件是否是报告/发票中的产品之一。