1

MicrosoftAccessデータベースに2つのテーブルと1つのフォームがあります。最初のテーブルをtblCUSTOMERS、2番目のテーブルをtblINVOICESにします。tblCUSTOMERSには、CustomerID(主キー)、FirstName、およびLastNameというフィールドが含まれています。tblINVOICESには、InvoiceID(主キー)、CustomerID(外部キー)、および金額と呼ばれるフィールドが含まれています。このフォームはfrmInvoicesと呼ばれ、tblINVOICESのフィールドのテキストボックスが含まれています。

私がやるべきことは、customersテーブルを検索し、そのテーブルからcustomerレコードを選択して、そのレコードのCustomerIDをfrmInvoicesに返す機能を作成することです。理想的には、検索は、FirstName、LastName、およびCustomerIDによる検索を可能にするデータグリッドのような形式で行われます。

具体的には、次の最も簡単な方法を教えてください。1.顧客レコードを表示するデータグリッドコントロールなどのフォームを挿入します(この新しいフォームをfrmCUSTOMERSと呼びます)。2. frmCUSTOMERSのデータグリッドを更新して、tblCUSTOMERのクエリに一致するレコードのみを表示します(名が「B」で始まる顧客のみなど)。3。CustomerIDをfrmCUSTOMERSからfrmINVOICESに渡します。

どうもありがとう、

ブレット

4

1 に答える 1

1

フォームを開くときに、フォームの開始引数として値を渡すことができます。

DoCmd.OpenForm "frmFormName", , , , , ,"B"

または、基準ステートメントを渡すことができます。

DoCmd.OpenForm "frmFormName", , , "FirstName LIKE 'B*'"

あなたが最初のルートに行くなら、あなたはこのようなことをするでしょう:

Private Sub Form_Load()
    Me.Filter = "FirstName LIKE '" & Nz(Me.OpenArgs, "") & "*'"
    'or
    Me.Subform1.Form.Filter = "FirstName LIKE '" & Nz(Me.OpenArgs, "") & "*'"
End Sub

CustomerIDなどの値を検索フォームから返すには、多数のオプションがあります。値をグローバル変数に入れることができます。または、呼び出し元フォームでパブリック変数またはパブリック関数を使用して、検索フォームに呼び出し元フォームに値を返すようにすることもできます。

間違いなく、これをすべて行うためのより正確でクリーンな方法は、検索フォームを開いてインバウンド値とアウトバウンド値を渡すことを処理するクラスを設計することです。クラスは書くためにより多くの知識とスキルを必要とします、そしてそれはおそらくあなたがやろうとしていることに対してやり過ぎでしょう。これを機能させるためにクラスは確かに必要ありません。少しだけきれいになります。実際には、このためのクラスを作成した場合は、上記でリストしたものと同じ手法の多くを使用します。

于 2012-05-02T03:11:57.180 に答える