2015-10-05 55 views
0

我有一個帶有3個選項卡的導航窗體。家園,客戶,裝飾。如何使用Microsoft Access導航表格加載過濾

在導航窗體中,我有一個未綁定的字段LOTNUMSELECT。

在每個選項卡內的子窗體中,它有一個名爲LOT_NUMBER的字段。

因爲主/子關係似乎不可能與導航窗體,我正在尋找子窗體來加載過濾。

用戶在LOTNUMSELECT中輸入很多#然後點擊一個標籤。當選項卡變爲當前時,顯示特定批次#(記錄)。

我一直在用「控制面板」窗體打開另一個窗體,並使用下面的代碼。

Dim stDocName As String 
Dim stLinkCriteria As String 

stDocName = "Decor" 

If IsNull(LotNumberSelect.Value) = True Then 

MsgBox "Please enter a lot number first." 

Else 
stLinkCriteria = "[Lot_Number]=" & "'" & Me![LotNumberSelect] & "'" 
DoCmd.OpenForm stDocName, , , stLinkCriteria 
End If 

我只是不知道如何編輯這個工作與導航窗體和子窗體。

回答

-1

PART2

我已經做了一些更多的想法做了一些實驗。

我不認爲導航控件是適合您情況的正確控件。導航控件似乎沒有事件和屬性,可以讓您將其鏈接到具有導航控件的主窗體上的控件(我認爲這是您正在嘗試執行的操作)。

我想你會發現使用「選項卡控件」更容易,在這種情況下更容易使用「選項卡控件」。

我認爲導航控件的設計真的是一個菜單,允許您訪問其中的其他表單和報表。

下面是有關使用標籤控件鏈接到視頻: video 1 Video 2

下面是一些視頻鏈接瞭解如何使用導覽控制: video 1 video 2 video 3

這裏的一些筆記我做緊靠導航控件:

導航控件有一個「navigation subfo rm「,它沒有任何主/子數據鏈接字段。但是,此子窗體不是正常的子窗體。

使用導航控件時,必須將導航按鈕(在導航菜單中)的「導航目標名稱」屬性設置爲單擊按鈕時想要顯示在導航子窗體中的窗體。

此外,該按鈕還有一個屬性「導航Where子句」,我相信這是用來設置過濾顯示在表單加載時顯示的行。在主窗體上使用控件時,似乎沒有允許您更改此過濾器的事件。 。

+0

你完全迷失了我。我的VB技能不符合您的標準。 – NewbieVBA

+0

請參閱我的回答的第2部分 – HarveyFrench

+0

我以前使用過選項卡控件,但問題是隻要表單打開,它就會加載所有數據。由於我們在路上的這個數據庫(通過MYODBC連接到mysql),一次加載所有數據並不是有益的。這就是爲什麼我認爲導航形式最好,因爲它切換標籤時「卸載」數據。 – NewbieVBA

0

導航控件有兩部分。導航菜單和導航窗口。每個導航按鈕(aka選項卡)都會將目標表單加載到導航子窗體控件中。一次只能將一個表單加載到導航窗體中。 由於navigationsubform打開了目標窗體,因此可以使用標準的「form_open」方法來設置過濾器或相應地設置您的記錄集。 所有你需要做的,點擊表格打開事件和事件中,你可以簡單地通過

dim lotno as long 
Lotno = nz(me.Parent!controlname.value,0) 
If lotno <> 0 the 
' do your filter or recordset operation 
End if 

訪問父控件也可以使用Form_Load事件。由於您要在加載後執行過濾器,最好將其設置在form_open上。這會增加你的表現。

+0

我得到你的答案,並添加了一些文字。我的主要問題是使用選項卡式控件的性能是否會更好。看起來很多子表單都與主表單上的控件相關聯,並且更改此控件需要影響子表單的所有記錄源。在不更改LOTNUMSELECT控件的情況下切換標籤並返回到上一個標籤會導致更多查詢是否使用導航控件而不是標籤控件。 – HarveyFrench

+0

更改主窗體中的批號需要在navigationsubform上重新查詢。因爲你的表單總是在加載時查詢,所以你不需要添加額外的代碼。但這當然是你想要去的方式。 –

+0

@哈維法國對不起,看不到你的編輯,其被主持人拒絕 –

相關問題