2017-03-20 11 views
0

私はデータアクセスMS Accessベースのデータベースを作成しています。メイン画面に人物IDを入力し、Createをクリックすると、他の4つのフォーム(基本的に1人分のデータエントリの4ページ)を表示するナビゲーションフォームに誘導されます。MS Accessフォームの新しいレコード

このフォームでは、person_IDと日付もヘッダーに表示されます。個人IDを入力してCreateをクリックすると、それぞれのレコードの詳細を入力できるようになります。しかし、フォームが開かれると、その特定のレコードではなく、DBの最初のレコードにリダイレクトされます。親切に私にそれを行う適切な方法をお勧めします。

答えて

0

特定のレコードでフォームを開くには、WhereConditionを使用してDoCmd.OpenFormメソッドを使用できます。

最初のフォームにperson_IDのテキストボックスがあります。 これはコード内でme!person_IDと呼ばれます。

DoCmd.OpenForm "Form2", acNormal, , "person_ID = " & me!person_ID 

これだけです。

もう少し進んだことがあれば、Form.OpenArgsフォームのフォームを使用できます。 以下のコードでは、OpenArgsが指定されていない限り、フォームを開くことができません。 これは必ずしも必要ではないかもしれないが、私は彼らが望むような経路でフォームを開くことができない。

その後、ボタンを「作成」の背後にあるコードのようなものになります:あなたは(Form2の)上の特定のレコードに開きたいフォームで

DoCmd.OpenForm "Form2", acNormal, , , , acNormal, me!person_ID 

は、「オンオープン」に次のコードを使用しますイベント:

Private Sub Form2_Open(Cancel As Integer) 
    If IsNull(Me.OpenArgs) Then 
     MsgBox "Open from the first form, I won't work otherwise" 
     DoCmd.Close , "Form2" 
     Cancel = True 
     Exit Sub 
    End If 

    Me.Filter = "person_ID = """ & Me.OpenArgs & """" 

    Me.FilterOn = True 
End Sub 

フィルタは、今二番目の形式の「オンオープン」イベントに設定されているのではなく最初のフォームにWhereConditionによって供給されているイベント「クリックオン」ボタンを作成します。

デザインの選択肢として、単一のフォームを使用し、それぞれのフォームの代わりにタブを持つ「タブコントロール」を使用することを考えました。次のフォームを開く「作成」ボタンの代わりに、単にタブを変更します。

これは私の最初の投稿ですstackoverflow、私は良いですか?

+0

おい、あなたはすごいよ!私はとても素早く対応してくれてうれしいです。さて、あなたからもう少しサポートが必要です。 私のデータベースは異なるレコードのために同じperson_IDを持つことができますが、主キーではないことが分かりました。したがって、フォームを特定のperson_IDにリダイレクトするのではなく、最初のページから追加した新しいIDであり、特定のレコードにデータを追加する必要があるため、フォームに追加された最後のレコードを開きます。 –

+0

現在、フォームはデータベースの最初のエントリをロードします。 は、私が作成]ボタンで、次の追加: > DoCmd.GoToRecord、acNewRec > DoCmd.OpenForm "Fund_ValMain" と > DoCmd.GoToRecord、フォームのonloadイベントとしてacLast 。しかし、最後のレコードは常に読み込まれません。 私たちは問題に関して私的な会話ができ、私は製品のスクリーンショットを共有できます。私は本当にこれを理解する上であなたの指導を必要とします。 –

+0

こんにちはShoumik Goswami、私はあなたが最後のレコードに行くことが判明したように、それは信頼できないと思う、注文は、例えば、ユーザーによって変更される可能性があります。もちろん、これは "On Open"イベントで変更することができます。最後のレコードが常に必要なレコードである場合は、フォームの再クエリーとリフレッシュを試みてください。可能であれば固有のフィールドを使用することをお勧めします。次に、正しいレコードがフォームで開かれるという事実を知っています。また、開いていないフォームが開いていた前のレコードを表示している場合は、再度開く前に、開いているフォームが閉じていることを確認してください。 – robv

関連する問題