他のフィールドで指定されたデータに基づいてデータを確認する必要があるというこの要件があります。「N」フィールドのテーブルがあります。ユーザーがテーブルから 4 つのフィールドを選択できるようにする必要があります。次に、その特定のレコードの他のすべてのフィールドを取得してユーザーに表示し、ユーザーがテーブルに入力したデータが正しいことを確認できるようにする必要があります。助けてください。
ありがとう
他のフィールドで指定されたデータに基づいてデータを確認する必要があるというこの要件があります。「N」フィールドのテーブルがあります。ユーザーがテーブルから 4 つのフィールドを選択できるようにする必要があります。次に、その特定のレコードの他のすべてのフィールドを取得してユーザーに表示し、ユーザーがテーブルに入力したデータが正しいことを確認できるようにする必要があります。助けてください。
ありがとう
私はあなたが必要とするものをより明確に理解しています - うまくいけば、これがあなたが必要とするものです:
「Phones」というテーブルがあるとします。
電話テーブルには、製造元、オペレーティング システム、キャリアの 3 つのプライマリ フィールドがあります。これらのプライマリ フィールドに加えて、セカンダリの「仕様」フィールドがあります。今のところ、ScreenSize、Frequency、Price の 3 つがあります。
ManufacturerFilter、OperatingSystemFilter、CarrierFilter の 3 つのコンボ ボックスを含むフォームを作成します。
各コンボ ボックスの行ソースは次のようになります。
SELECT Carrier FROM Phones GROUP BY Carrier ORDER BY Carrier;
Carrier は、製造元と [オペレーティング システム] にそれぞれ置き換えられます。
次に、すべてのセカンダリ フィールドを追加し、それぞれがそれぞれのフィールドにバインドされます。
「取得」というボタンを追加して、クリック コードを空白のままにすることもできます。
この時点で、いくつかのオプションがあります。2 つを強調しますが、どちらのオプションでも次の手順が必要です。
Private Function FilterStr() As String
Dim myFilterStr As String
' Include each filter if they are entered
If Nz(Me.ManufacturerFilter, "") <> "" Then myFilterStr = myFilterStr & "[Manufacturer]='" & Me.ManufacturerFilter.Value & "' AND"
If Nz(Me.OperatingSystemFilter, "") <> "" Then myFilterStr = myFilterStr & "[Operating System]='" & Me.OperatingSystemFilter.Value & "' AND"
If Nz(Me.CarrierFilter, "") <> "" Then myFilterStr = myFilterStr & "[Carrier]='" & Me.CarrierFilter.Value & "' AND"
' Remove the last AND statement
If myFilterStr <> "" Then myFilterStr = Mid(myFilterStr, 1, Len(myFilterStr) - 4)
FilterStr = myFilterStr
End Function
この関数は、選択されたコンボ ボックス オプションに基づいて、フィルター文字列を返します。
オプション 1: レコードセット をフィルター処理する プライマリ フィールドの値が選択されると、条件に一致するレコードのみが表示されるようにレコードがフィルター処理されます。次のコードを取得ボタンの OnClick イベントに追加します。
Private Sub RetreiveButton_Click()
Dim myFilterStr As String
myFilterStr = FilterStr
If myFilterStr <> "" Then
Me.Filter = myFilterStr
Me.FilterOn = True
Else
Me.Filter = ""
Me.FilterOn = False
End If
End Sub
ボタンをクリックすると、選択した値に基づいてフィルター文字列が作成され、フォームにフィルターが適用されます。コンボ ボックスで値が選択されていない場合、フィルタはクリアされ、オフになります。
オプション #2: 値に基づいてレコードを検索する 必要なのは、コンボボックスで値を選択し、条件に一致するレコードに移動することです。
次のコードを取得ボタンの onClick イベントに追加します。
Private Sub RetreiveButton_Click()
Dim rst As DAO.Recordset
Dim myFilterStr As String
myFilterStr = FilterStr()
If myFilterStr = "" Then
MsgBox "No Filter Selected", vbOKOnly, "Error"
Exit Sub
End If
Set rst = Me.RecordsetClone
rst.FindFirst myFilterStr
If rst.NoMatch Then
MsgBox "No Matching Records were found", vbOKOnly, "No Data"
Else
Me.Bookmark = rst.Bookmark
End If
Set rst = Nothing
End Sub
これは、同じ FilterStr() 関数を使用して検索文字列を返しますが、レコードセットの FindFirst メソッドを使用してレコードを検索します。見つかった場合は、レコードに移動します。
それがあなたの質問に答えることを願っています。前述したように、正確な動作はさまざまですが、基本的な原則は同じままです。