2016-12-30 13 views
0

ホームページを持ち、水平ナビゲーションにNavigationButton7が含まれています。私にはemployeesfrmがあり、移動する必要があります。形。水平タブ、ナビゲーションボタン内のフォームからテキスト値を取得

IDはemployeesFrmに埋め込まれているため、ホームフォームではなくemployeesfrmをアンロードしたときのVBAコードは、ホームフォーム上にある間は正しいIDを与えません。

他のNavigationButton8または9内の任意のIDが別の結果を返すため、これはエラーとなりますが、他のボタンの他​​のフォームのIDはわかりません。

私の懸案事項は、employeesfrm内のIDとホームフォームのテキストの間にリンクがあることです。

何も私は私のブックマークのために、この番号が必要

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

ナビゲーションフォームコントロールの代わりにタブコントロールを使用する必要があります。あなたのニーズに一層合っているかもしれません。 –

+0

今、デザインを変更することはできません...そうですか? – zee

+0

必要に応じて、デザインを変更することができます。目標を達成しながら何かを達成するために、設計を通して反復することは非常に一般的です。 –

答えて

0

私はあなたが達成しようとしていることを完全に理解していませんが、ホームフォームにEmpIDと呼ばれている非連結のテキストボックスを持ち、従業員フォームセットのOnCurrentイベントを設定する方法については

Me.Parent!EmpID = ID 

これを使用して、別のサブフォームを見に行く前に行っていた同じレコードに戻ってみると、戻ってきたことを検出する方法が必要になりますこのサブフォームでなければ、OnCurrentイベントは最初のレコードに再び戻ってきます。したがって、メインフォーム上のチェックボックス(chkGoToBookmark、デフォルト値False)が必要なので、NavigationButton7(これはEmployeesサブフォームをロードするものですか?)はこのボックスにチェックを入れることができます。そして、従業員フォームのOnCurrentイベントは次のようになります。

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

ありがとうございます。私は立ち往生した、私はすべてと私のソリューションを共有していますが、水平フォームは痛みです、本当にタブコントロールに行く代わりに、 – zee

0

ありがとうございました。私はスタックされて、私はすべてと私の解決策を共有していますが、水平フォームは痛みは、実際にタブコントロールに行く代わりに、私の問題はブックマークだった、あなたは同じフォーム上にある場合ブックマークを扱うのは簡単だったが、 は、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 

ます。Private SubのForm_Load()

薄暗いvarIDバリアントとして 薄暗い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 

End Subの

の現在のイベントに追加してください忘れないでくださいフォームme.parent.txtv = ID を入力してIDをメインフォームに更新します。

データベースが分割されてもfindfirstがうまく動作しないと聞いたので、データベースを分割した後に苦労すると思います。 わかりませんが、統合されたデータベースで正常に動作するはずです

関連する問題