ACCESSのVBAについて質問です。


処理中にdataテーブルの数値フィールドに-99999という値が入った場合は、
処理を中断して、(警告メッセージを出して)dataテーブルを開いて
該当のレコードにカーソルを合わせる。

といったプログラムの書き方を教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/05/09 11:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:freemann No.1

回答回数335ベストアンサー獲得回数55

ポイント60pt

該当のレコードにカーソルを合わせる方法がわかりませんでしたが、以下のような感じになるのではないのでしょうか。

ただ、思ったことは、検証したい数値フィールドがいくつあるのかわかりませんが、いくつあるのかはすでに分かっていると思いますので、-99999を検索するクエリを先に作っておいて(名前をdataクエリとしておきます)、

DoCmd.OpenQuery "dataクエリ"

で開けば、例え-99999のデータが複数あっても一度に見れるので便利かと思います。そうでないと、一個ずつ-99999のデータが見つかるごとに処理を中断していたのではユーザも辟易としてしまうのではないでしょうか。

Private Sub コマンド4_Click()

Dim rs As New ADODB.Recordset

Dim cn As New ADODB.Connection

Dim strSQL As String

strSQL = "SELECT COUNT(*) AS cnt FROM dataテーブル WHERE 数値フィールド = -99999"

Set cn = CurrentProject.Connection

rs.CursorLocation = adUseClient

rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly

If rs(0) > 0 Then

MsgBox "-99999のデータが、" & rs(0) & "個ありました。", vbOKOnly

DoCmd.OpenTable "テーブル1"

Set rs = Nothing

Set cn = Nothing

Exit Sub

End If

'続けたい処理

'・

'・

Set rs = Nothing

Set cn = Nothing

End Sub

コマンド4:処理を開始するボタン

id:rupopon

そうですね、クエリを開くようにしたいと思います。

DoCmd.OpenTable "テーブル1"のところを、DoCmd.OpenQuery "dataクエリ"に置き換える

ということで良いのでしょうか。

使わさせていただきます。ありがとうございました。

2008/05/02 16:31:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません