2016-05-13 51 views
0

我有兩種子窗體,都處於連續模式的Access窗體。因爲我不能在一個連續的表單中有一個子表單,所以我必須這樣做(數據表也不是這樣)訪問子表單記錄源還原爲原始

無論哪種方式,當我點擊我的第一個子表單時,我使用一些子表單來更改其他子表單記錄源相當簡單的代碼:

Public Sub MAJFiltre(intIdMembership As Integer) 
    IdMembershipFiltre = intIdMembership 

    Me.RecordSource = "SELECT * FROM T_PeriodeMembershipPartipant WHERE IdPeriodeMembreship=" & IdMembershipFiltre 
    Me.Requery 

End Sub 

從第一個子窗體調用此函數。我爲另一個表單做了這個,它工作的很好。對於這一個,如果我使用斷點,我可以看到記錄源已更改,但在UI中沒有任何事情發生。但是,如果我在BeforeInsert事件中放置斷點,我可以清楚地看到記錄源恢復到原來的狀態(沒有WHERE子句)

我還注意到一些不尋常的事情:如果我在調試時保存表單代碼,突然,它工作。不過,只要我關閉表格,它就會恢復到其「錯誤版」版本。

無論如何都不知道發生了什麼以及我如何糾正/阻止它?

感謝

回答

0

可能的問題是你的字段名稱在您的查詢條件拼寫錯誤?

IdPeriodeMembreship 

如果您T_PeriodeMembershipPartipant表中的字段是IdPeriodeMembERship而不是IdPeriodeMembREship查詢可能會提示您在運行時手動輸入參數值。

如果該字段確實存在於您的表中,但您在該條件中指定的值未在該字段中找到,則它將不返回結果,第二個子表單的記錄源將設置爲空記錄集。

+0

該字段名稱是正確的。就像我提到的那樣,如果我修改代碼,那麼它就開始工作,但是如果我關閉,它會停止,不管我是否保存。看起來像腐敗......我會嘗試從頭重新創建所有形式,如果一切都失敗了。 –

1

這聽起來很像我們週期性遭遇的問題,它涉及到鏈接到具有鏈接主/子ID的父表單的子表單:如果您(即Access已爲您完成)無意中將過濾器值保存爲屬性(在某個記錄源中進行過濾),當代碼重新分配記錄源時,此保存的值將阻止正確分配新記錄源,並且ms訪問將執行它認爲最好的功能 - 這種情況下,恢復到有效(以前)的記錄來源。

檢查您的子窗體中是否存在不需要保存的數據選項卡屬性值。

+0

什麼是最佳行動方案?我是否應該重新制作表格以確保沒有遺漏?它不是那麼大,但是如果這經常發生,它可能會變得煩人。 –

+0

只需清除設計視圖中的屬性,保存表單,然後在運行時根據需要設置屬性 –