• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルのレコードが0件時にmsg表示(アクセス))

テーブルのレコードが0件時にmsg表示(アクセス)

このQ&Aのポイント
  • テーブルにレコードが追加されなかった=0件 の場合の回避策を教えてください。
  • プライベートサブ「ボタン_Click()」のエラーメッセージがデータが投入され、処理が成功しても表示されてしまいます。
  • テーブルのレコードが0件の場合、何らかの処理を行う方法を教えてください。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

>テーブルにレコードが追加されなかった=0件 の場合 というのは二通り考えられるのですが、 AA・・・「テーブル1」にデータが無い場合。 BB・・・処理を行なったが該当するするデータが「テーブル1」になかった場合 です。 AAの場合は、   If rs1.RecordCount > 0 Then   rs1.MoveFirst   Do Until rs1.EOF     If rs1!フィールドA1 = rs1!フィールドA2 Then       rs2.AddNew         rs2!ID = rs1!ID         rs2!フィールドA = rs1!フィールドA1         rs2!B = rs1!フィールドB         rs2!C = rs1!フィールドC       rs2.Update     End If     If rs1!フィールドA1 < rs1!フィールドA2 Then       For i = rs1!フィールドA1 To rs1!フィールドA2 Step 1         rs2.AddNew           rs2!ID = rs1!ID           rs2!フィールドA = i           rs2!フィールドB = rs1!フィールドB           rs2!フィールドC = rs1!フィールドC         rs2.Update       Next i     End If   rs1.MoveNext   Loop   rs1.Close: Set rs1 = Nothing   rs2.Close: Set rs2 = Nothing   DB.Close: Set DB = Nothing   MsgBox ("処理が完了しました")   Else     MsgBox ("元テーブルにレコードがありません。")   End If   End Sub のようにします。 BBの場合は、以下のように変数jを追加して、 Dim i As Long Dim j As Long   Set DB = CurrentDb   Set rs1 = DB.OpenRecordset("テーブル1")   Set rs2 = DB.OpenRecordset("テーブル2", dbOpenDynaset)   j = 0   rs1.MoveFirst   Do Until rs1.EOF     If rs1!フィールドA1 = rs1!フィールドA2 Then       rs2.AddNew         rs2!ID = rs1!ID         rs2!フィールドA = rs1!フィールドA1         rs2!B = rs1!フィールドB         rs2!C = rs1!フィールドC       rs2.Update       j = j + 1     End If     If rs1!フィールドA1 < rs1!フィールドA2 Then       For i = rs1!フィールドA1 To rs1!フィールドA2 Step 1         rs2.AddNew           rs2!ID = rs1!ID           rs2!フィールドA = i           rs2!フィールドB = rs1!フィールドB           rs2!フィールドC = rs1!フィールドC        rs2.Update        j = j + 1        Next i     End If   rs1.MoveNext   Loop   rs1.Close: Set rs1 = Nothing   rs2.Close: Set rs2 = Nothing   DB.Close: Set DB = Nothin   MsgBox ("処理が完了しました")   If j = 0 Then     MsgBox ("該当するデータがありませんでした。")   End If End Sub のようにします。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

考えてみるとAAもBBの場合も一緒にすればいいので、 Dim i As Long Dim j As Long   Set DB = CurrentDb   Set rs1 = DB.OpenRecordset("テーブル1")   Set rs2 = DB.OpenRecordset("テーブル2", dbOpenDynaset)   'テーブル1にデータがある場合   If rs1.RecordCount > 0 Then     j = 0     rs1.MoveFirst     Do Until rs1.EOF       If rs1!フィールドA1 = rs1!フィールドA2 Then         rs2.AddNew           rs2!ID = rs1!ID           rs2!フィールドA = rs1!フィールドA1           rs2!B = rs1!フィールドB           rs2!C = rs1!フィールドC         rs2.Update         j = j + 1       End If       If rs1!フィールドA1 < rs1!フィールドA2 Then          For i = rs1!フィールドA1 To rs1!フィールドA2 Step 1            rs2.AddNew              rs2!ID = rs1!ID              rs2!フィールドA = i              rs2!フィールドB = rs1!フィールドB              rs2!フィールドC = rs1!フィールドC            rs2.Update          j = j + 1          Next i       End If     rs1.MoveNext     Loop     rs1.Close: Set rs1 = Nothing     rs2.Close: Set rs2 = Nothing     DB.Close: Set DB = Nothing     '該当するデータがあった場合     If j > 0 Then       MsgBox ("処理が完了しました")     '該当するデータがなかった場合     Else       MsgBox ("該当するデータがありませんでした。")     End If   'テーブル1にデータがない場合   Else     MsgBox("元テーブルにデータがありません")   End If End Sub でdぷでしょうか。何かあれば補足してください。 何度もすみません。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

失礼しました。BBの場合のところで、   MsgBox ("処理が完了しました")   If j = 0 Then     MsgBox ("該当するデータがありませんでした。")   End If は、   If j > 0 Then     MsgBox ("処理が完了しました")   Else     MsgBox ("該当するデータがありませんでした。")   End If です。