これが私の質問です。メイン フォーム内にサブフォームがあります。メイン フォームには顧客番号が含まれ、サブフォームにはその顧客の注文が含まれます。そのため、1 人の顧客が複数の注文を行う場合があります。クリックすると、その顧客の次の注文に移動するボタンを作成したいと考えています。私はコードでこれを行うことに問題はありません:
Private Sub next_comp_Click()
[Forms]![Customer]![Order Subform].SetFocus
DoCmd.GoToRecord , , acNext
end sub
私が問題を抱えているのは、その顧客の最後の注文に到達したときです。最初の注文にループバックするようにします。これを行うには、次のコードを使用しました:
Private sub next_comp_click()
[Forms]![Customer]![Compressor Subform].SetFocus
Dim dbcustomer As Database
Dim rstorder As Recordset
Set dbcustomer = CurrentDb
Set rstorder= dbcustomer.OpenRecordset("orders", dbOpenSnapshot)
With rstEmployees
If .AbsolutePosition = - 1 Then
MsgBox (.RecordCount)
'DoCmd.GoToRecord , , acFirst
Else
DoCmd.GoToRecord , , acNext
End If
End With
end sub
MsgBox 関数を使用してデバッグを行い、現在のレコードを特定しました (最終的には、コメント アウトされたコードに示されているように、最初のレコードにループ バックするようにします)。最初のレコード、つまり、RecordCount が 1 であることがわかります。私が扱っているほとんどのレコードには複数の注文があるため、これはそうではないはずです。条件を If .AbsolutePosition = 3 のようなものに変更すると、最後のレコードまたは空のレコードに到達するまでレコードが次のレコードに移動し、そこから [次へ] をクリックすると、実行時エラー '2105' が表示されます。指定されたレコードに移動できません。
問題は、 .AbsolutePositon プロパティが正しいフォームまたはテーブルを見ていないことだと思いますが、回答をいただければ幸いです。
前もって感謝します。