2015-05-13 27 views
1

我正在嘗試使與子窗體類似的子窗體。刪除/添加具有主窗體的類似記錄源的子窗體上的記錄

我會使用分割形式,但據我所知,我不能過濾分割形式的數據表部分的結果,而不能過濾其餘部分的結果。 請參見這裏... Part Details Form as img

subformPartDetail只返回OrderID等於mainform的OrderID的記錄。 mainform中沒有過濾器,因此無論OrderID如何,它都會返回所有partDetail記錄。在這個特殊情況下,主窗體有21條記錄循環,因爲子窗體只有四條記錄。

我使用子窗體添加或刪除記錄時發生問題。當我嘗試使用主表單循環瀏覽記錄時,添加的表單會被跳過,刪除的表單會拋出一個錯誤,告訴我我正嘗試訪問的記錄已被刪除。 我糾正它像這樣通過把這些子窗體的事件......

Private Sub Form_AfterInsert() 
Dim frm As Form 
Dim rst As Recordset 
Set frm = Forms!PartDetails 
Set rst = frm.Recordset 

rst.Requery 
End Sub 

Private Sub Form_Delete(Cancel As Integer) 
Dim frm As Form 
Dim rst As Recordset 
Set frm = Forms!PartDetails 
Set rst = frm.Recordset 

rst.Requery 
End Sub 

但說我試圖刪除的MainForm從子窗體顯示記錄。該代碼不起作用,不會重新查詢。當我離開,然後回到那條記錄時,它會拋出一個錯誤。

我該如何解決這個問題?

我知道我可以將其刪除之前使用

rst.move 

我不知道從哪裏開始測試正被刪除的記錄是否是同一個記錄被刪除的一個動議主窗體正在顯示。

回答

0

也許我沒有正確理解情況,但不應該有任何需要VBA來實現這一點。如果子窗體正在使用鏈接主字段和鏈接子窗體與您的子窗體,這些ID將自動工作。如果您在兩個表格之間建立了關係,如果您刪除了訂單記錄(並且選擇了強制參照完整性:級聯刪除),則應自動清除行項目以避免孤立記錄。

+0

子窗體和主窗體都從相同的記錄集中拉出。兩者都可以添加和刪除相同記錄集中的記錄。 – adanthuis

+0

即使設置了鏈接子字段和主字段,當從子窗體中給出添加和刪除命令時,主窗體不會重新查詢。 – adanthuis

+0

對不起,我誤解了。也許你應該使用單獨的查詢來拉取子表單數據。 –

相關問題