• 締切済み

Accessで、コード実行中に、フォームのテキストボックスの値をデータソースとしたクエリーフィールドの値を取得したい

Accessにおいて、frmMENUというフォームを作成し、txtYearというテキストボックスを配置しました。"式1: [Forms]![frmMENU]![txtYear]"というフィールドを含むクエリーを作成しました。 フォームを起動し、txtYearに値を入れた後、そのクエリーを開くと、"式1"には正しく値が入っているのですが、コードの実行中(例えばボタンクリック処理の間など)にクエリを開くと何も入っていません。このとき、クエリーに対するSQL(select 式1 from クエリ1)を実行しようとすると「パラメータが少なすぎます。1を指定してください。」というエラーが発生してしまいます。コード実行中にクエリーから"式1"の値を取得することはできないのでしょうか?

みんなの回答

  • ykymtkt
  • ベストアンサー率51% (14/27)
回答No.3

補足に対してアドバイスします。 >テキストボックスの値を一旦テーブルに書き込む処理を入れ、そのテーブルを参照するクエリーを作成して対処しようかと思い始めています。 テーブルに書きこまなくてもクエリの定義を直接変更することが出来ます。 CurrentDb.QueryDefs("クエリ名称").SQL プロパティーに直接SQLを設定してみてください。

butasan
質問者

お礼

やはり予め、デザイン時にクエリ1のSQLを SELECT [Forms]![frmMENU]![txtYear] AS 式1, テーブル1.aa FROM テーブル1 と定義しておくと、実行中は式1の値を取得することができないようですね。 以下のようにコード中でテキストボックスの値を取得し、その値を直接入れるようなSQLでクエリーを定義する必要があるということですね。 CurrentDb.QueryDefs("クエリ1").SQL = "SELECT '" & [Forms]![frmMENU]![txtYear] & "' AS 式1, テーブル1.aa FROM テーブル1" 大変参考になりました。ありがとうございます。

  • ykymtkt
  • ベストアンサー率51% (14/27)
回答No.2

まず、"式1"の値を取得してどの様な処理をしたいのでしょうか。 frmMENUの中のコードで使用するなら、ME.txtYear.Text で取得できると思うのですが(式1の参照先が "txtYear" なので)。 補足して下さい。

butasan
質問者

補足

皆様からのご回答本当に感謝しております。 クエリ1とは、この質問の為に簡略化して作ったsampleでして、実際には、式1の値をクエリー上で編集を行い、他のデータも付加し、もう少し込み入ったクエリーを作成し、そのクエリーに対し、様々なSQLを発行できるようにしたかったのです。その為、あえてテキストボックスの値をクエリーから参照するように作ろうと思ったのです。 しかし、実行中は、テキストボックスの値を直にクエリーで参照することは出来ないものなのかもしれませんね。この方法は諦めて、テキストボックスの値を一旦テーブルに書き込む処理を入れ、そのテーブルを参照するクエリーを作成して対処しようかと思い始めています。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

単純にコードの実行中(ステップ実行)には、フォーム「frmMENU」が開いていないからなのでは、、、 クエリ1のSQL文ってどうなってます?

butasan
質問者

補足

ご回答本当にありがとうございます。 クエリ1のSQL文は、 SELECT [Forms]![frmMENU]![txtYear] AS 式1, テーブル1.aa FROM テーブル1; ("テーブル1"は適当に作ったテーブルです。) コードの実行中もフォーム「frmMENU」は開いているのですが、式1には値が入っていなく、クエリ1に対するSQLを実行することができません。また、ステップ実行でなくてもSQLを実行することができませんでした・・・・。

関連するQ&A