2016-12-30 76 views
0

我有主頁,從其中包含許多導航按鈕的水平導航,在NavigationButton7下我擁有employeesfrm,並且我需要在我在家時導航下一個或上一個形成。水平選項卡,從導航按鈕中獲取文本值

該ID嵌入在employeesFrm中,因此在卸載Employeesfrm時(而不是在主窗體上),VBA代碼在我處於主窗體時未提供正確的ID。

我已經試過Froms!home!navigationSubform!ID,但是這會給出錯誤,因爲任何其他NavigationButton8或9中的任何ID都會給出另一個結果,而且我不想知道其他按鈕中其他窗體的ID 。

我擔心的是在employeesfrm中的ID和Home窗體文本之間有一個鏈接。

沒有從下面

Dim MyIDS As Integer 

' this is giving only the first ID number all the time. 
MyIDS = Me.ID 

' this is giving error. 
MyIDS = Forms![Home]![NavigationSubform].[Form]![employeesfrm]![ID] 

' this is giving error. 
MyIDS = Forms![Home]![NavigationSubform]![Navigationform]![studentsfrm]![ID] 

' this one works but if I am on another Navigation button, 
' lets say 8 not 7, I am not interested in the number. 
MyIDS = Forms![Home]![NavigationSubform].Form![ID] 

我需要這個數量的工作,我的書籤,它工作正常,如果我直接本人對employeesfrm,但不是在家裏形式

enter image description here

+1

您應該使用Tab控件而不是導航窗體控件。可能更適合你的需求。 –

+0

我現在無法改變設計......對吧? – zee

+0

如果你願意,你可以改變設計。遍歷設計而達到實現目標的目標是很常見的。 –

回答

0

我不確定我完全理解你要達到的目標,但如何在Home窗體上創建一個名爲EmpID的未綁定文本框,然後在Employees表單的OnCurrent事件中設置

Me.Parent!EmpID = ID 

如果您正在使用此功能嘗試恢復與您在查看其他子窗體之前所用的相同記錄,那麼您還需要一種方法來檢測您是否回到這個子表單,否則OnCurrent事件將會把你重新設置回第一個記錄。因此,您可能需要在主窗體上使用複選框(chkGoToBookmark,默認值爲False),以便NavigationButton7(這是加載Employees子窗體的權利?)可以在此框中打勾。然後僱員窗體的成爲當前事件是:

If Me.Parent!chkGoToBookmark = True And Not IsNull(Me.Parent!EmpID) Then 
    Me.RecordsetClone.FindFirst "ID=" & Me.Parent!EmpID 
    Me.Bookmark = Me.RecordsetClone.Bookmark 
Else 
    Me.Parent!EmpID = ID 
End If 

請注意,如果你是僱員窗體上直接再到Me.Parent任何引用會導致錯誤,所以你可能要捕獲此。

+0

非常感謝。我被困住了,我與All共享我的解決方案,但是,Horizo​​ntal Form很痛苦,而是真正轉到Tab控件, – zee

0

非常感謝。我被卡住了,我與All共享我的解決方案,但是,橫向表單很痛苦,真正轉到Tab控件,而我的問題是書籤,如果您處於相同的表單上,很容易處理書籤,但是當表單是在導航控制的主要(主)形式,那麼這是不容易的,我所做的是以下幾點: 在主窗體上創建了一個名爲Txtv的txt,這將從我的水平按鈕中的窗體託管我的ID ,並在卸載和裝載事件我用下面,

私人小組Form_Unload(取消作爲整數)

昏暗RS作爲DAO。記錄

If Not IsNull(Me.Parent!txtv) Then 

    Set rs = CurrentDb().OpenRecordset("bookmarktb", dbOpenDynaset) 
    With rs 
     .FindFirst "[Variable] = 'CustomerIDLast'" 
     If .NoMatch Then 
      .AddNew  'Create the entry if not found. 
       ![Variable] = "CustomerIDLast" 
       ![Values] = Me.Parent!txtv 
       ![Description] = "Last customerID, for form " & Me.Name 
      .Update 
     Else 
      .Edit   'Save the current record's primary key. 
       ![Values] = Me.Parent!txtv 
      .Update 
     End If 
    End With 
    rs.Close 
End If 
Set rs = Nothing 

私人小組的Form_Load()

昏暗VARID爲Variant 昏暗strIIZ作爲字符串

varID = DLookup("Values", "bookmarktb", "[Variable] = 'CustomerIDLast'") 
If IsNumeric(varID) Then 
    With Me.RecordsetClone 
     .FindFirst "[ID] = " & strIIZ & varID & strIIZ 
     If Not .NoMatch Then 
      Me.Bookmark = .Bookmark 
     End If 
    End With 
End If 

末次

不要忘記取悅於對當前事件增加形式爲me.parent.txtv = ID ,因此它將更新主窗體的ID。

我想我會在分裂數據庫後受到影響,因爲我聽說findfirst在分割數據庫時無法正常工作。 我不確定,但它應該可以在整合的數據庫中正常工作,