テーブルと、特定のフォームの現在のOrderbyプロパティに従って並べ替えられたレコードセットを作成しようとしています。 Orderbyプロパティはユーザーが変更すると変更されるため、Orderbyプロパティで最初のフィールドのみを取得する(1つ以上のフィールドを使用して順序付けることができます)、順序付きレコードセットを作成するために使用します。フィールドの名前getField関数から与えられたものは正しく与えられていますが、私は"Set rsAll = ..."
の構文が間違っていると想定しています。これはコードが停止する原因と考えられます。ORDER BYでレコードセットをインスタンス化するVBAにアクセス
順序通りにレコードセットを作成する。
Dim rsAll As DAO.Recordset
If Len(Forms("All Patient Sub").OrderBy) > 0 Then
Set rsAll = CurrentDb.OpenRecordset("SELECT * FROM [All Patient Info] ORDER BY " & getField(Forms("All Patient Sub").OrderBy)) 'code stops here
Else
Set rsAll = CurrentDb.OpenRecordset("All Patient Info")
End If
私は本当にあなたのコードに従わない
Public Function getField(ByVal sorter As String) As String
Debug.Print "Started"
'i = 21 hence [All Patient Info].[ is skipped and starts from the field's name
For i = 21 To Len(sorter)
If Mid(sorter, i, 1) = "]" Then
getField = Mid(sorter, 21, i - 21)
Exit For
End If
Next i
Debug.Print getField
End Function
*「コードはここで停止する」*と言うときは、エラーがあるとみなします。もしそうなら、エラーメッセージは何を言いますか?あなたがエラー以外の何かを意味したら、何? 'Debug.Print" SELECT * FROM [すべての患者情報] ORDER BY "&getField(Forms(" All Patient Sub ")。OrderBy))' – HansUp
また、あなたが何を示しているのか分かりません。 Debug.Print getField'の出力? – Andre
あいまいなボキャブラリを残念に思っています。エラーが発生しました。 「Debug.Print getField」の出力が何も表示されず、 'Debug.Print」を試しました。SELECT * FROM [すべての患者情報] ORDER BY"&getField(Forms( "All Patient Sub")。OrderBy)) '時々、そのDOBを言うことができます。 – Kozero