0

我有一个名为 Main 的表格。我有

  • 保存记录 ID 的文本框
  • 用于从现有记录中选择或输入新记录名称的组合框
  • 一个文本框,用于保存组合框中的名称
  • 一个打开表单的按钮,让我们输入其他数据并创建新记录
  • 一个打开表单的按钮,让我们可以编辑现有记录

我级联组合框中列表的行源。如果条目不在列表中,则 NotInList 事件

  • 将组合框中的名称复制到 Main 上的文本框
  • 加载创建表单并将名称从 Main 复制到创建表单上的相应字段。

一切正常。问题是当我在创建表单上点击保存时,我无法将值正确写回主表单。我想将来自组合框的名称写回 Main 上的组合框,并将记录 ID 写入 Main 上的文本字段。

这是两行代码。如果我改变他们的顺序,输出就会改变。组合框以空白结尾,或者记录 ID 文本字段以空白结尾。

当我调试这个时,我可以看到值存在,但我无法进行分配。上次我尝试 combobox.text 时,它抱怨该值不在列表中,所以我运行了对行源的查询,但记录没有出现在组合框列表中,而是在表中。请参见下面的两行代码(粗体)。

    Private Sub cmbSaveClose_Click()
    Dim x As Integer

    x = MsgBox("Are you sure you want to save changes?", 4, "Exit?")

    'VbNo constant throws back #7
    'VbYes constant throws back #6

     Me.Txt32 = DLookup("InsuranceCarrierContractID", "ICCDupRecordCheckQ")

     If x = 7 Then
     Exit Sub
     End If

     If IsNull(Me.Txt32) Then

        Me.Txt31 = Form_frmMain.Txt65

        DoCmd.RunCommand acCmdSaveRecord

**Forms!frmMain.cboInsuranceCarrierContract = Me.InsuranceCarrierContractID
Forms!frmMain.Txt66 = Me.InsuranceCarrierContractID**

        DoCmd.Close

        Forms!frmMain!InsuranceCarrierContract.RowSource = 
                              " SELECT InsuranceCarrierContract.ContractNumber " & _
                              " FROM InsuranceCarrierContract " & _
                              " ORDER BY InsuranceCarrierContract.ContractNumber;"

'Other stuff,works fine. 

    Form_frmMain.cboInsuranceCarrierContract.Locked = False
    Form_frmMain.cboInsuranceCarrierContract.BackColor = 
                                 Form_frmMain.cboInsuranceCarrier.BackColor
    
Else
    Me.Undo
    DoCmd.Close

End If
End Sub
4

1 回答 1

0

这对大卫有效,因此将其添加为答案:

更改数据后重新查询和刷新表单。

Me.Requery 
Me.Refresh

从表单模块内部或外部:

Forms("MyFormName").Requery
Forms("MyFormName").Refresh

http://msdn.microsoft.com/en-us/library/office/ff191903.aspx

http://msdn.microsoft.com/en-us/library/office/ff836021.aspx

于 2013-10-25T13:16:22.240 回答