【问题标题】:Add New Record From Form Access 2010从 Form Access 2010 添加新记录
【发布时间】:2014-03-26 00:18:41
【问题描述】:

我正在使用表单创建发票(“frmInvoices”)。由于人们有时会发送下个月发票的预付款,因此我记录了三个字段; “frmInvoices”上的“预付款金额”、“预付款月份”、“预付款年份”。我也希望将这些数据放在“tblPrapayment”表中。

踢球者。为了使我的系统正常工作,我需要确保在保存发票表格并输入预付款值时,还输入了该月份和年份。

我已将此代码放在我的 Microsoft Access 类对象中,而不是模块中。我只需要在“frmInvoices”表单上工作。我没有收到任何错误。但也没有真正发生。如果你知道一个更简单的方法来做到这一点,我也愿意接受。

Private Sub Add_Prepayment_Save()
DoCmd.Save ("frmInvoices")
If [Rec'd_Prepayment] = "$0.00" Then
DoCmd.Save ("frmInvoices")
End If
If [Rec'd_Prepayments] <> "$0.00" And [Prepayment_Month] = "" Or [Prepayment_Year] = "" Then
    MsgBox "Please Update Prepayment Month And/Or Prepayment Year"
End If
If [Rec'd_Prepayments] <> "0.00" And [Prepayment_Month] <> "" Or [Prepayment_Year] <> "" Then
    Dim RecSet As Recordset
    Set RecSet = CurrentDb.OpenRecordset("tblPrePayments")
    RecSet.AddNew
        RecSet![AccountID] = "AccountID"
        RecSet![Prepayment_Month] = "Billing_Month"
        RecSet![Prepayment_Year] = "Billing_Year"
        RecSet![Rec'd_Prepayment] = "Prepayment1"
    RecSet.Update
End If
End Sub   

【问题讨论】:

  • 您确认代码是否完全运行?如果没有,请在第一个 DoCmd.Save 上设置断点,然后按 F8 一次单步执行代码。
  • @HansUp 我不相信代码正在运行。我在 DoCmd.Save 上设置了一个断点并尝试单步执行,但什么也没发生。我无法通过任何线条突出显示黄色。我尝试在 DoCmd.Save acForm 中添加“acForm”,“frmInvoices”,但这也没有帮助。
  • Smandoli 的建议对我来说很有希望。如果这不是您要查找的内容,请告诉我们您如何调用 Add_Prepayment_Save() ... 应该是什么导致该代码被执行?
  • @HansUp 我还没有尝试过 Smandoli 的建议,但我会的。我正在寻找在保存表单时执行此操作。
  • 您有一些带有多个子句的If 标准。建议您使用括号来避免运算符(和/或)的意外处理顺序。

标签: ms-access if-statement vba ms-access-2010 recordset


【解决方案1】:

尝试将其添加到您的表单模块中:

Private Sub Form_AfterUpdate()
    MsgBox "Time to validate the form!"  ''reassurance, temp
    Call Add_Prepayment_Save
End Sub

您可能希望将Add_Prepayment_Save 设为一个返回True 或False 的函数。如果用户需要在表单上进行更多操作,该函数将返回 false,然后您从那里处理它。我通常不得不摆弄一下——例如,从Form_CloseForm_LostFocus 调用您的验证可能比Form_AfterUpdate() 更好。

【讨论】:

  • 我还没有尝试过你的建议,但我会的。感谢您的洞察力。我对 VBA 还是很陌生....
  • 我尝试了你的想法,它成功了!代码正在运行。但我现在遇到了另一个问题。
  • 对不起,我试图编辑上面的内容并花了很长时间。我尝试了你的想法,它奏效了!代码正在运行。但我现在遇到了一个不同的问题。我的“AccountID”是一个组合框,它是一个数字,但随后显示的是人名,而不是数字。这会导致数据类型转换错误。我一直在搜索,我认为唯一可能的是将“AccountID”声明为整数和 DLookup。有什么想法吗?错误:RecSet![AccountID] = "AccountID"
  • 查看 VBA 帮助。 VBA 要求您使用以下语法引用组合框中的值:Me!cboAccount.Column(1)。如果不高兴,我建议单独发帖。在您在此处发布的内容中,我没有看到此问题的上下文,并且似乎无关。很高兴取得部分成功,干得好!
  • 我认为您现在就是这样做的。我一直在四处寻找答案,这似乎是常见的。我会试一试,让你知道。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2015-07-07
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多