2007 ADP/ADE にアクセスします。
テーブルにバインドされたモーダルがあります。モーダルには、1 つのリストボックス コントロールと 2 つのボタンがあります。1 つはバインドされたレコードセットの値にアクセスするコードのサブルーチンを実行し、もう 1 つはモーダルを閉じます。
2 つの使用方法:
リストボックスで値を選択し、ボタンをクリックしてサブルーチンを実行すると、問題なく動作します。
リストボックスで値を選択し、キーボードの ENTER キーを 2 回押すと、同じサブルーチンを実行しようとしますが、バインドされたレコードの値に初めてアクセスしようとすると NULL エラーがスローされます。
したがって、方法 1 を使用すると、Me.RecordNumber のような値は 12345 を返します。方法 2 を使用すると、NULL になり、エラーになります。興味深いことに、リストボックス自体で選択された値は、どちらの方法でも使用できます。
重大なバグではありませんが、厄介です。この特定のモーダルで ENTER キーを使用するのではなく、ボタンをクリックするように人々に教えなければなりません。誰もこれを見たことがありますか?方法 2 を使用して、バインドされたレコードセットの値を使用できない理由は何ですか?
明確化のために編集: このエラーは、VBA コードの特定の部分とは無関係のようです。新しいモーダルを作成し、別のテーブルをバインドして、そのレコードセットのランダム データ列にアクセスしようとしました。同じ結果です。
エラーが表示されるスニペットを次に示します。null ではない値である RecordType を取得しようとすると、エラーが発生します。
Private Sub cmdAddFromTemplate_Click()
On Error GoTo Err_MyErrorHandler
Dim myTemplateName As String
Dim myDepartment As String
Dim i As Integer
'Did they provide a valid template name?
If Me.listTemplateToImport.ItemsSelected.Count > 0 Then
'Cycle through list and build criteria
For i = 0 To Me.listTemplateToImport.ListCount - 1
'Is this status selected?
If Me.listTemplateToImport.Selected(i) Then
'Grab selected template name
myTemplateName = Trim(Me.listTemplateToImport.ItemData(i))
End If
Next i
Else
'Warn and exit
MsgBox "You must select a valid template name.", vbOKOnly, "STEP: Action Canceled"
Exit Sub
End If
'Grab Bound Values
myDepartment = Me.RecordType 'NULL error here when using ENTER key.