Ms access 从Form Access 2010添加新记录

Ms access 从Form Access 2010添加新记录,ms-access,if-statement,vba,ms-access-2010,recordset,Ms Access,If Statement,Vba,Ms Access 2010,Recordset,我正在使用表单创建发票(“frmInvoices”)。由于人们有时会发送下个月发票的预付款,我记录了三个字段;“FRM”上的“预付款金额”、“预付款月份”、“预付款年度”。我希望将这些数据也放在“tblPrapayment”表中 踢者。为了使我的系统正常工作,我需要确保在保存发票表单并输入预付款值时,也输入了月份和年份 Private Sub Add_Prepayment_Save() DoCmd.Save ("frmInvoices") If [Rec'd_Prepayment] = "$0.

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

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

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   
我已将此代码放置在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   
Private Sub Add\u preadcase\u Save()
DoCmd.Save(“frmInvoices”)
如果[Rec'd_预付款]=“$0.00”,则
DoCmd.Save(“frmInvoices”)
如果结束
如果[提前还款]“$0.00”和[提前还款月]=”或[提前还款年]=”,则
MsgBox“请更新预付款月份和/或预付款年度”
如果结束
如果[提前还款记录]“0.00”和[提前还款月]“或[提前还款年]”,则
Dim RecSet作为记录集
Set RecSet=CurrentDb.OpenRecordset(“TBLPreturnations”)
RecSet.AddNew
记录![AccountID]=“AccountID”
记录![预付款月]=“计费月”
记录![预付款年]=“计费年”
记录![记录预付款]=“预付款1”
记录集。更新
如果结束
端接头

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

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

您可能希望使
Add\u preadpayment\u Save
函数返回True或False。如果用户需要在表单上做更多的工作,函数将返回false,您将从那里处理它。我通常需要处理一些问题——例如,从
Form\u Close
Form\u LostFocus
调用您的验证可能比
Form\u AfterUpdate()

更好。您确认代码是否运行了吗?如果没有,请在第一个
DoCmd.Save
上设置一个断点,然后用F8一行一行地遍历代码。@HansUp我不相信代码正在运行。我在DoCmd.Save上设置了一个断点并尝试单步执行,但什么也没发生。我找不到任何一行高亮显示黄色的线。我试着在DoCmd中添加“acForm”。保存acForm,“frmInvoices”也没用。斯曼多利的建议对我来说很有希望。如果这不是您想要的,请告诉我们您是如何调用
Add\u preadpayment\u Save()
。。。是什么导致代码被执行?@HansUp我还没有尝试Smandoli的建议,但我会的。我希望在保存表单时执行此操作。您有一些带有多个子句的
If
条件。建议您使用括号以避免运算符(和/或)意外的处理顺序。我还没有尝试过您的建议,但我会的。谢谢你的洞察力。我对VBA还是相当陌生的…我尝试了你的想法,并且成功了!代码正在运行。但是我现在遇到了一个不同的问题。对不起,我试图编辑上面的内容,但花了很长时间。我尝试了你的想法,结果成功了!代码正在运行。但我现在遇到了另一个问题。我的“AccountID”是一个组合框,它是一个数字,但随后会显示一个人的姓名,而不是数字。这将导致数据类型转换错误。我一直在搜索,我认为唯一可能的是将“AccountID”声明为整数,然后使用DLookup。有什么想法吗?错误:重新设置![AccountID]=“AccountID”检查VBA帮助。VBA要求您使用以下语法引用组合框中的值:
Me!cboAccount.Column(1)
。如果没有快乐,我建议单独发布。我看不出你在这里发布的内容与这个问题有什么关联,它似乎不相关。很高兴取得了部分成功,干得不错!我想你现在正是这个时候。我一直在四处寻找答案,这似乎是最常见的答案。我会试试看,然后告诉你。非常感谢你的帮助!