使用基于表单的文本框更新查询中的单个记录

时间:2015-03-10 20:26:10

标签: ms-access

我正在使用Access2013,我有一个名为PaidOrderQ的查询,其中包含“SalesRep”,“Customer”和“PaidAmount”列。我需要计算SalesRep的佣金,每个记录的百分比并不总是相同。在阅读了类似的问题后,我仍然没有想出来。

我认为这样做的方法是让一个名为PaidOrderF的表格与Soucre是PaidOrderQ,一个名为“CommRate”的文本框和一个计算字段“Commission”。 “佣金”由“AmountPaid”*“CommRate”计算。

2 个答案:

答案 0 :(得分:0)

我不确定如何计算佣金百分比,但根据百分比的计算方法,可以通过以下几种方式完成。首先是你可以计算自动使用的百分比。然后您可以自动添加所有内容(即使百分比根据项目更改)。如果可以,您可以在DESIGN视图中打开查询。然后单击一个空白字段,您可以创建一个计算字段,例如:

佣金:[AmountPaid] * [CommRate]

现在您可以为CommRate添加计算,例如:

CommRate:IIf([AmountPaid]> 200,.15,.2)

这将使任何通信率超过200美元和20%以下的15%。 如果不是,您可以在表单中创建文本框(这将是未绑定的并添加更新后的vba代码以将它们相乘并更改第三个文本框的值,标签等。)

您可能还想在原始表中添加一列以显示佣金率,以便存储信息以供将来参考。

如果有任何不清楚的地方或者您希望看到vba代码的示例

,请告诉我

EDIT ::

将信息存储到表格中:

这个将是非常基本的,你可能知道大部分内容,但万一我将包括它,因为它是最直接的。

通过在“设计”视图中打开表格,向您正在使用的表中添加一列(如果您使用的是受欢迎的表,或者您不想修改结构,也可以使用make表查询创建临时表,但如果可能的话,最好把它放在主表中)。在这里,您可以进行包含所有字段的查询以及显示已付金额*佣金的额外计算字段。然后,当您根据查询创建表单时,您将输入佣金率,表单将保存信息并自动更新字段以提供佣金。

按主要ID链接另一个表 -

如果这些选项都不起作用,您还可以创建另一个共享主ID的表。这个选项会更复杂,但是可行。 (我建议不要将它作为第二个表的真正主要ID,以便更容易修改(或者具有真正的主ID和用于链接的ID,即总共3列))。如果这是您需要的选项,我可以进一步深入,但这种方法的缺点是如果没有列出给定记录的CommRate它将自动隐藏信息(可以避免这种情况,但同样会更多这很容易犯错误。

VBA编码

VBA将是最复杂的解决方案,并且具有最大的缺点。首先 - 您必须一次循环所有记录(或至少为一名员工),当您关闭表单时,您将丢失所有内容。如果有任何方法可以避免这种情况,我建议这样做,但理论上你可以将信息存储在一个数组中。

标准方式 - 据我所知,你的表看起来像这样:

SalesRep Customer PaidAmount
John      Eric      2040
Stacy     Brian     1020
Stacy     Eric      2004
etc.

您需要在“设计”视图中打开表格并添加一列" CommRate" 所以它看起来像:

 SalesRep Customer PaidAmount  CommRate
    John      Eric      2040
    Stacy     Brian     1020
    Stacy     Eric      2004
    etc.

CommRate的数据类型应为Number - 类型Double - 现在我将使用Comm rate作为百分比 - 即10.2 = 10.2%,但您也可以.102 = 10.2%任何一个都可以(稍后会更多)保存并关闭表格。

现在选择表格,使用创建查询向导将所有字段添加到查询中,为查询命名并单击最后修改查询(或保存,然后在设计视图中将其打开)。现在,您将看到列中的每个字段,其中列出了下表。将以下条目复制并粘贴到您的查询中的某个银行"字段"位置:

表示百分比,即10.2 = 10.2%

Commission: [CommRate]*[PaidAmount]/100

表示.102 = 10.2%

Commission: [CommRate]*[PaidAmount]

现在保存并关闭查询。

最后,您将选择查询,然后单击“创建表单”。这将基于查询创建一个表单。使用此表单,您可以单独添加CommRate,它将保存以供将来使用。您将看到,当您添加CommRate时,Commission字段将自动更新,表格将使用新值进行更新。

这是执行此操作的标准方法。这对你正在做的事情有用吗?

答案 1 :(得分:0)

好吧,这是个好消息!主键将有很多帮助: 好的,你可以用两个表来解决这个问题。

首先创建一个包含三列的新表: " ID" - 主键" RelatedID" - Number Long Int" CommRate" - 双号

此表基本上只用于"添加" CommRate而不更改链接表。

接下来,您将进行一次查询,其中包括" SalesRep","客户"和#34; PaidAmount"来自链接表和" RelatedID"和#34; CommRate"来自新表。

当您在设计视图中查看查询时,您将在不同字段列表上方看到两个表,并且您将单击链接表中的主键并将其拖到" ReatedID"在新表中。从这里开始,它将打开一个询问关系加入的对话框。这一部分是最重要的 - 您希望使关系成为LEFT JOIN - 您可以通过声明要显示Linked表中的所有记录以及仅显示匹配的New表中的记录来执行此操作。基本上这使得它总是显示新表中的记录,即使新表中没有匹配的条目。

创建完成后,您将通过复制创建一个计算字段:

Commission: [CommRate]*[PaidAmount]/100

到查询设计的新字段

从这里开始设置所有内容,您可以根据刚刚创建的查询创建表单 - 我会删除字段" RelatedID"从FORM(或查询关系是什么链接它所以它没有必要它只是一个很好的双重检查)所以你不要改变它。

工作原理 - 现在,当您循环浏览条目时,您可以直接将佣金率添加到表单中。 - 这将在新表中创建一个新条目,显示交易的主要ID和该销售的佣金率。这将更新计算字段并显示佣金。然后,当您查看它时,它将单独保存值而不更改原始表。

如果您需要有关如何执行此操作的更多帮助,请与我联系。第一次这样做可能有点棘手。