Microsoft Access 2007にリストフォームがあり、フィールドの1つで特定のフレーズを検索するボタンを作成しようとしています。問題は、私が検索しようとしているフィールドがメモフィールドであり、通常、レコードを(カウントフィールドで)ソートしたままにしておきたいということです。これにより、メモフィールドが255文字に切り捨てられ、残りのフィールドが検索できなくなります。そのため、検索フォームのForm_Openイベント中に、検索しているフォームの「OrderByOn」プロパティをオフにしました(または「OrderBy」を「」に設定しました)。これにより、データが正しくソート解除され、メモフィールドが完全に表示されます。ただし、検索しようとすると、FindNext行に到達したときに、「Microsoft Visual Basicランタイムエラー'1006':不明」というエラーが表示されることがあります。現在のレコードとレコードセットの最後の間のレコードの最初の255文字に検索語が見つからない場合、エラーが発生すると思います。これは検索フォームのコードです。
Private Sub Form_Open(Cancel As Integer)
[Forms]![MyForm]![MySubform].[Form].OrderBy = ""
'[Forms]![MyForm]![MySubform].[Form].OrderByOn = False
End Sub
Private Sub Search_Click()
Dim vDescription As String
Dim r As Recordset
vDescription = ""
If Me![Description] <> "" Then vDescription = "[MyFieldName] LIKE('*' + '" & Me![Description] & "' + '*')"
If Not (vDescription = "") Then
Set r = [Forms]![MyForm]![MySubform].[Form].Recordset
> r.FindNext (vDescription)
If r.NoMatch Then
r.MoveFirst
r.FindNext (vDescription)
If r.NoMatch Then
MsgBox ("No match found.")
r.MoveFirst
End If
End If
End If
End Sub
このエラーメッセージの検索結果が見つかりません。奇妙に思えます。エラーが発生するのはなぜですか?レコードセットを正しく使用していますか?OrderBy / OrderByOnを別の方法で処理する必要がありますか?