こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

投稿日時 - 2001-01-09 15:54:33

QNo.26077

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

補足に対してアドバイスします。

>テキストボックスの値を一旦テーブルに書き込む処理を入れ、そのテーブルを参照するクエリーを作成して対処しようかと思い始めています。

テーブルに書きこまなくてもクエリの定義を直接変更することが出来ます。
CurrentDb.QueryDefs("クエリ名称").SQL プロパティーに直接SQLを設定してみてください。

投稿日時 - 2001-01-10 14:04:15

お礼

やはり予め、デザイン時にクエリ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"

大変参考になりました。ありがとうございます。

投稿日時 - 2001-01-10 16:24:39

ANo.2

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

投稿日時 - 2001-01-10 10:37:08

補足

皆様からのご回答本当に感謝しております。

クエリ1とは、この質問の為に簡略化して作ったsampleでして、実際には、式1の値をクエリー上で編集を行い、他のデータも付加し、もう少し込み入ったクエリーを作成し、そのクエリーに対し、様々なSQLを発行できるようにしたかったのです。その為、あえてテキストボックスの値をクエリーから参照するように作ろうと思ったのです。

しかし、実行中は、テキストボックスの値を直にクエリーで参照することは出来ないものなのかもしれませんね。この方法は諦めて、テキストボックスの値を一旦テーブルに書き込む処理を入れ、そのテーブルを参照するクエリーを作成して対処しようかと思い始めています。

投稿日時 - 2001-01-10 11:41:09

ANo.1

単純にコードの実行中(ステップ実行)には、フォーム「frmMENU」が開いていないからなのでは、、、

クエリ1のSQL文ってどうなってます?

投稿日時 - 2001-01-09 22:07:27

補足

ご回答本当にありがとうございます。

クエリ1のSQL文は、
SELECT [Forms]![frmMENU]![txtYear] AS 式1, テーブル1.aa FROM テーブル1;
("テーブル1"は適当に作ったテーブルです。)

コードの実行中もフォーム「frmMENU」は開いているのですが、式1には値が入っていなく、クエリ1に対するSQLを実行することができません。また、ステップ実行でなくてもSQLを実行することができませんでした・・・・。

投稿日時 - 2001-01-10 11:31:43

あなたにオススメの質問