Ms access ms access中的总和

Ms access ms access中的总和,ms-access,ms-access-2007,Ms Access,Ms Access 2007,我有三个领域 字段1=编号, 字段2=编号, 字段3=数字 现在怎么算数 例如: field3 = sum(field1,field2) 或 您可能需要使用DSum。这是针对Access 2003的,但它仍应适用,希望能有所帮助:如果您的意思是如何更新整个表: UPDATE yourTable SET field3 = field1 + field2 如果您有一个表单并希望将控件更新为其他两个控件的结果,则可以将控件源设置为(): 通过将每个控件的控制源设置为相关字段名,可以将Control

我有三个领域

字段1=编号,
字段2=编号,
字段3=数字

现在怎么算数

例如:

field3 = sum(field1,field2)


您可能需要使用DSum。这是针对Access 2003的,但它仍应适用,希望能有所帮助:

如果您的意思是如何更新整个表:

UPDATE yourTable
SET field3 = field1 + field2

如果您有一个表单并希望将控件更新为其他两个控件的结果,则可以将控件源设置为():

通过将每个控件的控制源设置为相关字段名,可以将Control1和Control2绑定到Field1和Field2,但是,您无法将该Control3绑定到Field3,因为它已设置。如果希望以这种方式更新表单上的字段3,则需要在事件中使用代码,Control1和Control2的更新后事件可能适合。存储计算是违反规范化规则的,所以你必须考虑这是否是你想要做的。在Access 2010中,您可以创建计算字段(列),这是另一回事,因为它负责自己的更新:

至于默认值,有几点需要考虑:

  • 不能将表中的默认值AFAIK设置为Field1+Field2
  • DefaultValue属性仅在添加新记录时应用。如果更改DefaultValue属性,更改不会自动应用于现有记录
  • 如果控件位于同一窗体上,则作为默认值源的控件必须在制表符顺序中早于包含表达式的控件

也可以考虑,如果使用:

=Field1 + Field2
您正在引用表中的基础字段,如果字段1和字段2也出现在表单上并且可以更新,则可能会导致问题。最好使用:

Me.MyControl.DefaultValue=Control1+Control2
其中控件绑定到字段1和字段2。在VBA中,这意味着默认值将设置为计算结果,这不太可能是您想要的,更可能是您想要的:

Me.MyControl.DefaultValue="=Control1+Control2"

这些字段是表的一部分还是查询的一部分?请注意,如果两个值中的任何一个为Null,则添加两个值将生成Null。明智地使用Nz()可能会有所帮助。为什么要使用域聚合函数对当前行中的数据求和?我建议使用DSum,因为我认为这是表单或宏的VBA代码,而不是查询。看起来,OPs对@MitchWheat的评论表明情况确实如此。
Me.MyControl.DefaultValue=Control1+Control2
Me.MyControl.DefaultValue="=Control1+Control2"