• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access2002 フォーム間のデータ受け渡し条件による動作分岐)

Access2002 フォーム間のデータ受け渡し条件による動作分岐

このQ&Aのポイント
  • Access2002でフォーム間のデータ受け渡し条件による動作分岐について教えてください。
  • フォームAとフォームBでデータを受け渡す際、データが入っていない場合はフォームCを表示させる方法を教えてください。
  • Access2002において、フォーム間のデータの受け渡しや条件による動作分岐について質問です。フォームAで表示されるデータがフォームBに受け渡される際、データがない場合はフォームCを表示させる方法をお教えください。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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が、そういうデータを表示しない場合、杞憂という  ことにもなりますので・・・)

camo-tech
質問者

お礼

ご回答ありがとうございます。 コードを読み解きまして、「ID」フィールドを「文字列」とするよう、改造した結果、うまく分岐してくれるようになりました。 本当に助かりました^^ ありがとうございました。

関連するQ&A

専門家に質問してみよう