2013-10-24 84 views
0

我有一個名爲Main的窗體。在這我有Access vba中代碼行的順序

  • 文本框以保存記錄ID
  • 一個組合框從現有的記錄選擇或新記錄
  • 輸入名稱的文本框,從下拉框
  • 按住名
  • 一個按鈕打開一個表單,讓我們一起進入附加數據,並創建一個新的記錄
  • 一個按鈕以打開的形式,讓我們編輯現有記錄

我在組合框中級聯列源的列表。如果該條目中的不在列表中, NotInList事件

  • 複製在下拉列表的名稱被移動到一個文本框上主要
  • 載荷的創建窗體和複製的名字從主到相應的字段在創建表單上。

所有的工作正常。問題是,當我在創建窗體上點擊保存時,我無法正確地將值寫回到主窗體。我想將來自組合框的名稱寫回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;" 

'其他的東西,工作正常。

Form_frmMain.cboInsuranceCarrierContract.Locked = False 
Form_frmMain.cboInsuranceCarrierContract.BackColor = 
          Form_frmMain.cboInsuranceCarrier.BackColor 

否則 Me.Undo DoCmd.Close

結束如果 結束小組

+0

你嘗試過重新查詢並刷新表格,您更改後的數據? –

+0

ReQuery從來不適用於我的任何地方。 Select的要點是重新查詢列表。也許過度殺傷。我會嘗試兩個。謝謝。 –

+0

@AlanWaage移動代碼並執行重新查詢。謝謝。這是一整天,我發現我可以重新查詢而不是更新行源。更少的工作。 –

回答