- ベストアンサー
テーブルのレコードが0件時にmsg表示(アクセス)
- テーブルにレコードが追加されなかった=0件 の場合の回避策を教えてください。
- プライベートサブ「ボタン_Click()」のエラーメッセージがデータが投入され、処理が成功しても表示されてしまいます。
- テーブルのレコードが0件の場合、何らかの処理を行う方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>テーブルにレコードが追加されなかった=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)
考えてみると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)
失礼しました。BBの場合のところで、 MsgBox ("処理が完了しました") If j = 0 Then MsgBox ("該当するデータがありませんでした。") End If は、 If j > 0 Then MsgBox ("処理が完了しました") Else MsgBox ("該当するデータがありませんでした。") End If です。