ACCESS2016 Windows10を使っています。
Private Sub コマンド19_Click()
Dim SearchValue As String '検索値格納変数
Dim Rst As DAO.Recordset 'レコードセット
'
SearchValue = Me.検索
Set Rst = Me.RecordsetClone
Rst.MoveFirst
If IsNumeric(Left(SearchValue, 2)) Then
Rst.FindFirst "[電話番号] = '" & SearchValue & "'"
If Rst.NoMatch Then
GoTo SearchFailer:
Else
GoTo SearchSuccess:
End If
Else
'
Rst.FindFirst "[名前] = '" & SearchValue & "'"
If Rst.NoMatch Then
Rst.FindFirst "[会社名] = '" & SearchValue & "'"
If Rst.NoMatch Then
GoTo SearchFailer:
Else
GoTo SearchSuccess:
End If
Else
GoTo SearchSuccess:
End If
End If
SearchSuccess:
Me.Bookmark = Rst.Bookmark
Me.名前.SetFocus
GoTo Sub_Exit:
SearchFailer:
MsgBox "検索に失敗しました" & vbCrLf &
"もう一度検索値を入力してください"
, vbInformation + vbOKOnly, "検索失敗"
Me.検索 = Null
Me.検索.SetFocus
GoTo Sub_Exit:
Sub_Exit:
Rst.Close
Set Rst = Nothing
End Sub
Rst.MoveFirst⇒ここの部分で、カレントレコードがありませんとなります。
ネットでエラーを検索しましたが、修正をすることができませんでした。
お手数ですが、ご教示していただけないでしょうか?
フォームにレコードは表示されてますか。レコード件数が0だとそのエラーになりますが。
下記のようにしてみては。
フォームにレコードは表示されていません。
If Rst.EOF Then
MsgBox "レコードがありません。"
Exit Sub
Else
Rst.MoveFirst
End If
上記を記載しても同じエラーになります。
このコードは、テーブルを指定しないと動かないのでしょうか?
MT_名簿を検索しています
そのような疑問が出るということは、どこからのコードをそのままコピペして使用しいるのだと思いますが、
それぞれのコードの意味をまずは理解してください。
そのコードのやっていることはフォームのレコードソースのデータを対象に検索するというコードです。
フォームにレコードがなければ検索できるはずかありません。
また、その前に、何をしたいのか分析しましょう。その目的に合致した方法を選ぶ必要があります。
「検索」とは複数のレコードが表示されていて、条件に合致するレコードへ移動するということです。
フォームに最初はレコードは表示してなくて、条件に合致するレコードを表示するのは「抽出」です。
やりたいことは、あるいは目的に合致するのは「検索」か「抽出」のどちらですか。それをまず検討してください。
ご指摘ありがとうございました。いつも参考になる回答をありがとうございます。