- ベストアンサー
Access2002 フォーム間のデータ受け渡し条件による動作分岐
- Access2002でフォーム間のデータ受け渡し条件による動作分岐について教えてください。
- フォームAとフォームBでデータを受け渡す際、データが入っていない場合はフォームCを表示させる方法を教えてください。
- Access2002において、フォーム間のデータの受け渡しや条件による動作分岐について質問です。フォームAで表示されるデータがフォームBに受け渡される際、データがない場合はフォームCを表示させる方法をお教えください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
幾つか方法はありますが、比較的わかりやすいと思われる、DCount関数で レコードの有無を確認し、If文で条件分岐、という方法をご紹介します: '【ウィザードで作られたVBA(コマンドボタン名=コマンド3)】 Private Sub コマンド3_Click() On Error GoTo Err_コマンド3_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "フォームB" stLinkCriteria = "[ID]=" & Me![ID] DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド3_Click: Exit Sub Err_コマンド3_Click: MsgBox Err.Description Resume Exit_コマンド3_Click End Sub '【加筆修正したコード】 Private Sub コマンド3_Click() On Error GoTo Err_コマンド3_Click Dim stDocName As String Dim stLinkCriteria As String stLinkCriteria = "[ID]=" & Me![ID] 'DCountの結果で、開くフォーム名(→stDocName)を切替 If DCount("*", "フォームBの元テーブル", stLinkCriteria) = 0 Then stDocName = "フォームC" 'レコード不在(=0)時はフォームCを指定 DoCmd.OpenForm stDocName 'stLinkCriteriaは使用しません Else stDocName = "フォームB" 'レコード存在時はフォームBを指定 DoCmd.OpenForm stDocName, , , stLinkCriteria End If Exit_コマンド3_Click: Exit Sub Err_コマンド3_Click: MsgBox Err.Description Resume Exit_コマンド3_Click End Sub ・・・以上です。 なお、コードの理解を最優先に考え、「ID自体が空白(Null)」といった場合の 例外処理は入れていません。 (呼び出しもとのフォームAが、そういうデータを表示しない場合、杞憂という ことにもなりますので・・・)
お礼
ご回答ありがとうございます。 コードを読み解きまして、「ID」フィールドを「文字列」とするよう、改造した結果、うまく分岐してくれるようになりました。 本当に助かりました^^ ありがとうございました。