Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 使用Access中表单的计算字段更新表_Ms Access - Fatal编程技术网

Ms access 使用Access中表单的计算字段更新表

Ms access 使用Access中表单的计算字段更新表,ms-access,Ms Access,我对Acces非常陌生,我试图根据工作天数计算员工的工资。 为此,我创建了一个表单来输入当前天数,并根据输入计算挣来的工资。现在,我想将挣来的工资值传递到表字段。 由于您没有给出太多详细信息,请您帮助我非常通用,但在后更新中类似的内容应该可以工作: 假设表单上的控件为: 员工ID的txtEmpID, txtHourlyRate表示数字或小时的乘法, txthours工作时间与您输入的工作时间相同 Dim dblEarnings as Double dblEarnings = me!txtHou

我对Acces非常陌生,我试图根据工作天数计算员工的工资。 为此,我创建了一个表单来输入当前天数,并根据输入计算挣来的工资。现在,我想将挣来的工资值传递到表字段。
由于您没有给出太多详细信息,请您帮助我

非常通用,但在后更新中类似的内容应该可以工作:

假设表单上的控件为:

员工ID的txtEmpID, txtHourlyRate表示数字或小时的乘法, txthours工作时间与您输入的工作时间相同

Dim dblEarnings as Double

dblEarnings = me!txtHourlyRate * me!HoursWorked

CurrentDb.Execute "INSERT INTO [tblYourTable] (EmployeeID, EarnedSalary) VALUES (" _
    & Me!txtEmpID & "," & dblEarnings & ")",dbFailOnError

我可能会记录工作时数和小时工资,并动态计算工资,而不是存储计算出的数字。或者存储小时数和总数,如果需要,计算小时费率。

首先是一些家务;对于字段名,最好不要有空格,这样编码就容易多了(从您的SQL字符串看,您可能已经这样做了,但只是检查一下)。另外,避免使用保留字作为字段名,例如不要使用名称作为字段名,有一个Visual Basic保留字列表,它将涵盖VBA和其他一些内容

其次,您似乎正在存储一个计算出的字段-挣工资是对基本工资、每月总工作日和实际工作日的计算。通常情况下,存储计算字段被认为是不可接受的,参考Allen Browne的。在这一页上,Allen给出了一些关于计算字段的提示,这些提示可能会有所帮助,特别是如果您决定存储它并使用Access 2010(我只关注2007…)

至于你的问题,你仍然没有告诉我你的错误在哪里,所以很难指出问题所在。我的猜测是,您在错误的位置调用了update Sub-您想更新EarnedSalary,但您在该控件的AfterUpdate中调用了该过程,因此在您更新代码要更新的字段之前,代码不会触发。代码需要在实际工作日的后更新中

此外,看起来您使用的是绑定表单,这意味着您不需要使用SQL更新,类似于Allen示例的解决方案就足够了:

在表单上,如果您对计算中涉及的每个字段都有控件:

Private Sub ActualWorkedDays_AfterUpdate()
     Me.EarnedSalary = Me!BasicPay / Me!TotalWorkingDays * Me!ActualWorkedDays
End Sub

获取计算结果,然后在VBA中运行更新查询以影响表中的相应值
DoCmd.RunSQL
可在VBA中用于执行SQL语句。如果您需要更多的帮助,我们将需要更多的信息。我已经尝试在表单的计算字段的更新后事件中写入它,但它没有在我的表中更新。如果我错了,请纠正我,并帮助我如何编写它。我非常感谢您。我也尝试过运行SQL查询,但它显示了错误不相关的物体。你能帮我一下吗。对不起,我不知道你说它显示不相关物体是什么意思。你能编辑你的答案并输入你的代码并告诉我你收到的错误的更多信息吗?你好,西蒙,你能请我再次解决这个问题吗?我已经尝试过sam Ey你的代码仍然没有填充表中的任何数据。我需要更多信息:你的表叫什么?哪些字段需要填充?你的薪水是多少?表单上的控件称为什么?编辑您的问题并粘贴到代码中,我应该能够取得一些进展。我已经创建了一个包含以下字段的员工表:EMP Id、姓名、基本工资、每月总工作日、实际工作日、,挣到的工资。现在我已经创建了表格中的所有字段,并且正在使用控制源计算挣到的工资,使用挣到的工资=基本工资/每月工作天数总数*实际工作天数。现在我想在表格中填充此计算字段。我将在表格中输入实际天数,因为该值将根据员工的当前天数进行更改。因此,您能帮助我吗