• ベストアンサー

アクセス2000でデータ抽出できない

アクセス2000でデータ抽出できない サブフォーム上でコンボリストを使用して入力し、その条件にあったものだけを別のコンボボックスに表示したい。 フォーム:[取引名][種別][資材名] ※全てコンボリスト 取引先を選択し、種別を選択し、その2つの条件を満たすものだけテーブルから抽出し、資材名のリストに表示したいのですが、どうしたらできるかわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

訂正です。 >Private Sub 取引名_AfterUpdate() >Me!資材名.Requery >End Sub >Private Sub 種別_AfterUpdate() >Me!資材名.Requery >End Sub となっていましたが、 Private Sub 取引名_AfterUpdate() Me!cmb資材名.Requery End Sub Private Sub 種別_AfterUpdate() Me!cmb資材名.Requery End Sub です。cmbが抜けていました。

tleasure
質問者

お礼

早い返答ありがとうございました まだ、アクセス初心者なので、参考にしてやってみます ありがとうございました

その他の回答 (4)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

再提出です。 メインフォーム:フォーム1 サブフォームを埋め込むコントロール名:フォーム2 各コンボの名前を、 cmb取引名、cmb種別、cmb資材名 とします。 各コンボボックスのソースがわからないので暫定で テーブル1に各フィールドがあるものとします。 なお、テーブル1はサブフォームのレコードソース とは違うものとします。 cmb資材名の値集合ソースを、 SELECT テーブル1.資材名 FROM 資材テーブル WHERE (((テーブル1.取引名)=[Forms]![フォーム1]![フォーム2].[Form].[cmb取引名]) AND ((テーブル1.種別)=[Forms]![フォーム1]![フォーム2].[Form].[cmb種別])); とします。 ここで、フォーム2はサブフォームそのもではなく、 サブフォームを埋め込むコントロール名です。 メインフォームにサブフォームを設定するとき におくコントロールを指します。サブフォーム名 と同じにプロパティで設定していてもいいです。 サブフォームのcmb取引名、cmb種別の更新後処理に以下を設定します。 Private Sub 取引名_AfterUpdate() Me!資材名.Requery End Sub Private Sub 種別_AfterUpdate() Me!資材名.Requery End Sub 一つの案です。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

勘違いしていました。 >サブフォーム上でコンボリストを使用 メインフォームと思っていました。 #2はスルーしてください。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

各コンボの名前を、 cmb取引名、cmb種別、cmb資材名 とします。 資材テーブルに資材名のフィールドがあるとします。 cmb資材名の値集合ソースを、 SELECT 資材テーブル.資材名 FROM テーブル1 WHERE (((テーブル1.取引名)=[Forms]![フォーム1]![cmb取引名]) AND ((テーブル1.種別)=[Forms]![フォーム1]![cmb種別])); とします。 cmb取引名、cmb種別の更新後処理に以下を設定します。 Private Sub cmb取引名_AfterUpdate() Forms!フォーム1!cmb資材名 = "" Forms!フォーム1!cmb資材名.Requery End Sub Private Sub cmb種別_AfterUpdate() Forms!フォーム1!cmb資材名 = "" Forms!フォーム1!cmb資材名.Requery End Sub で、どうでしょうか?

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.1

対応策の一つとして下記します。 [取引名][種別]コンボボックスのいずれか選択変更 が発生した際に、該当テーブルをWHERE句指定でSELECT文で検索する。 [取引名]_Change() { SELECT 資材名 FROM テーブル名 WHERE 取引名 = [取引名]コンボボックスの選択肢 AND 種別 = [種別]コンボボックスの選択肢 [資材名]コンボボックス.RowSource = 資材名 } [種別]_Change() { SELECT 資材名 FROM テーブル名 WHERE 取引名 = [取引名]コンボボックスの選択肢 AND 種別 = [種別]コンボボックスの選択肢 [資材名]コンボボックス.RowSource = 資材名 }

関連するQ&A

専門家に質問してみよう