首页 > 解决方案 > 更新先前表单上的数据

问题描述

我为无家可归者收容所工作,并正在开发一个数据库来跟踪客户在收容所所做的工作。第一个表格显示客户剩余的天数(CDays)、他们的工作计划小时数(CWPHours)和他们的志愿者小时数(CVHours),所有这些都是数字。

当客户提交工作计划信用时,这三个数据由第二种形式处理。一切似乎都工作正常,但我无法让第二个表单将更新的信息传递回第一个表单。我不断收到错误 7878“数据已更改”。但是,当我逐步执行代码时,它可以正常工作。

下面是第二种形式的代码。对不起,如果它草率,我在这方面还是比较新的。

Private Sub cmd_Apply_Click()
Dim TempHours As Single
Dim TempDays As Single
Dim TempVol As Single

DoCmd.SetWarnings False

'Update the client work program hours. This starts the chain reaction
DoCmd.RunSQL "UPDATE tblClient " & _
    "SET tblClient.CWPHours = [tblClient].[CWPHours]+[Forms]![Work Pay Form]![WPHours] " & _
    "WHERE (((tblClient.ClientID)=[Forms]![Work Pay Form]![ClientID]))"
DoCmd.SetWarnings True

'Set temp values based on the current values of the First Form
TempHours = Forms![Navigation Form]![NavigationSubform].Form![CWPHours]
TempDays = Forms![Navigation Form]![NavigationSubform].Form![CDays]
TempVol = Forms![Navigation Form]![NavigationSubform].Form![CVHours]

'Update TempHours to include new credits
TempHours = TempHours + Me.WPHours
TempHours2 = TempHours 'This is used to update TempDays later on

'Convert TempHours of 2 or more into additional days
If TempHours > 1.9 Then
    TempHours = TempHours - (Int(TempHours / 2) * 2)
    TempDays = TempDays + (Int(TempHours2 / 2))
End If

'Convert 10 or more days into volunteer hours
If TempDays > 9.9 Then
    TempVol = TempVol + ((TempDays - 10) * 2)
    TempDays = 10
End If

'Pass the new values back to the First Form
'This is where the problem starts
Forms![Navigation Form]![NavigationSubform].Form![CWPHours] = TempHours
Forms![Navigation Form]![NavigationSubform].Form![CDays] = TempDays
Forms![Navigation Form]![NavigationSubform].Form![CVHours] = TempVol
DoCmd.Close

End Sub

最后的三行是导致问题的原因。如果有人有任何建议,我感谢您的帮助。

标签: ms-access

解决方案


推荐阅读