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

このQ&Aに関連する最新のQ&A

A 回答 (3件)

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



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

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

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

まず、"式1"の値を取得してどの様な処理をしたいのでしょうか。


frmMENUの中のコードで使用するなら、ME.txtYear.Text で取得できると思うのですが(式1の参照先が "txtYear" なので)。
補足して下さい。

この回答への補足

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

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

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

補足日時:2001/01/10 11:41
    • good
    • 0

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



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

この回答への補足

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

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

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

補足日時:2001/01/10 11:31
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QN値による軟弱地盤の判定

ある本にN値による軟弱地盤の判定
ってあったのですが、粘性土はN値4以下、砂質土はN値10以下が軟弱地盤とあったんですが、どうして粘性土と砂質土では、数値(N=4、10)が違うのですか?同じN値でも土質によってN値の評価が違うのですか?教えて下さい。

Aベストアンサー

 N値から離れて、しばらく経つので、以下は予想です。

 まず同じ土質なら、N値が低いほど軟弱、これは良いですよね?。次にN値って何だったかと言うと、簡単に言えば、鋼管を地面に垂直に立てておいて、パイルドライバー(←だったっけ?)で杭頭を何回ぶっ叩いたら、鋼管が一定量地盤に貫入するかの回数だったと思います。この際、地盤の主な抵抗は、圧縮作用によるものと思われます。

 粘性地盤を基準に取ります。砂質土は粘性地盤より脆いはずなので、貫入試験で砂質土のN値が、粘性地盤を上回ったとしても、主に圧縮抵抗を測っているだけだとすれば、叩いた回数はそのまま信用できません。その辺りが、土質別のN値評価に関わりそうです。

>同じN値でも土質によってN値の評価が違うの・・・?

 だと思います。


 N値の解説は、Googleしてみれば専門サイトで沢山出ると思います。ここはどちらかと言うと、理論物理系の板
なので、ここよりもっと良い解説を見れる気がします。


 調べてみて下さい。

Q[Access]あるフォームのクラスモジュールで値を入れた変数を他のフォームでそのまま利用したい

モジュールとクラスモジュール(イベントプロシージャ)に違いがあることや、モジュールを超えて変数を利用したいときは、Publicで宣言する、という辺りを本を読んでおおまかに理解しました。
帳票管理フォームというフォームに受付CDという主キーの番号があります。そのフォーム上に帳票の詳細な事項を入力するフォームを呼び出すボタンがあります。フォームのイベントプロシージャの一番上のOption Compare Database,Option Explicitの直下行にPublic UketukeCD as Integerと宣言し、
ボタンのイベントプロシージャで、
UketukeCD = Me![受付CD].Value
などと記述しました。
新規入力データの受付CDが例えば452ならUketukeCDには452が代入されればいいんです。
帳票の詳細な事項を入力するフォーム(報告書フォームとします)の「読みこみ時」のイベントプロシージャに以下のように記述しました。
こちらのモジュールの一番上にもPublic UketukeCD as Integerと宣言し、(←これは必要なんでしょうか?)
Me![受付CD].Value = UketukeCDと書きました。
過去のデータを検索するときはレコードソースのテーブルの受付CDのデータを受付CDフィールドに持ってき、新規入力の場合は、受付CDは帳票管理フォームのものを代入するという設計で、UketukeCDの値(例:452)を報告書フォーム内の受付CDフィールド内に出力する、という感じですが、なぜかUketukeCDにはいつも0が代入されています。
変数は他のモジュールで利用できても代入された値までは移行されないのですか?
イベントプロシージャだからできないんですか?
字数の制限上、コードをかなり省略しています。
足りない部分は補足で補いますのでおっしゃって下さい。

モジュールとクラスモジュール(イベントプロシージャ)に違いがあることや、モジュールを超えて変数を利用したいときは、Publicで宣言する、という辺りを本を読んでおおまかに理解しました。
帳票管理フォームというフォームに受付CDという主キーの番号があります。そのフォーム上に帳票の詳細な事項を入力するフォームを呼び出すボタンがあります。フォームのイベントプロシージャの一番上のOption Compare Database,Option Explicitの直下行にPublic UketukeCD as Integerと宣言し、
ボタンのイベントプロシ...続きを読む

Aベストアンサー

どうも変数のスコープ(変数の有効範囲)を理解していないようですね。
例えば
------モジュールのモジュール1
Option Compare Database
Public a As Integer
Sub aaa()
a = 3
End Sub

------フォーム1のモジュール
Option Compare Database
Public a As Integer
Private Sub Form_Load()
Dim a As Integer
a = 1
MsgBox CStr(a)
End Sub

Private Sub コマンド1_Click()
a = 2
Call aaa
End Sub

Private Sub コマンド2_Click()
MsgBox CStr(a)
End Sub

-------フォーム2のモジュール
Option Compare Database

Private Sub Form_Load()
MsgBox CStr(a)
End Sub


ではこれをフォーム1を開いて、ボタン1を押して、ボタン2を押して、フォーム2を開くと
メッセージボックスは



との順で表示されます。

これはスコープが
関数内が宣言
フォーム共通の宣言
DB全体(モジュール)の宣言

の順に優先度が高いためです。一番したが一番低い
各々スコープは

関数内は
sub

End sub
が有効範囲で

フォーム共通の宣言は同一フォーム内で有効

モジュールの場合は同一DB内で有効です。

通常、Publicを宣言して別のフォームに値を渡す場合はモジュールにPublic宣言をします。

よって今回の場合はフォームAにPublic変数を定義してもフォームBに対しては有効では有りません。
このような場合はモジュールでPublic変数の定義をする必要があります。

フォーム内は宣言不要!!

どうも変数のスコープ(変数の有効範囲)を理解していないようですね。
例えば
------モジュールのモジュール1
Option Compare Database
Public a As Integer
Sub aaa()
a = 3
End Sub

------フォーム1のモジュール
Option Compare Database
Public a As Integer
Private Sub Form_Load()
Dim a As Integer
a = 1
MsgBox CStr(a)
End Sub

Private Sub コマンド1_Click()
a = 2
Call aaa
End Sub

Private Sub コマンド2_Click()
MsgBox CStr(a...続きを読む

Q戸建て判断 ボーリング結果のN値の見方

木造二階建て住宅の建築(ベタ基礎)を予定しております。

1年前まで水田で現在は盛土2メートルの造成がされています。
地盤が気になるので、契約前に周辺のボーリング結果を見せてもらいました。

地下2mまで粘土混じり砂礫 N値3
2m~3m  砂       N値11
3m~7m  砂混じりシルト N値1~3
7m~8m  砂礫  N値40
8m~15m  礫混じり砂  N値11~40
15m~16m シルト  N値11
16m~18m 砂       N値18~35
18m~19m シルト     N値8
19m~20m 砂       N値22

地下水位2m

以上ですが、何分素人な物で地盤が弱いのだろうな・・くらいしか分かりません。
これに適した地盤改良は何でしょうか?
施工業者は、地盤改良の必要は無い、との判断なので不安になります。

よろしくお願い致します。

Aベストアンサー

ANo.5です。「この回答への補足」欄に疑問点が書かれていましたが、返答が遅くなり申し訳ありません。

「10センチ以内程度」と書いたのは3~4センチかもしれないし7~8センチくらいかもしれないということで、最大10センチ見ておけば良いのではないかと言うことです。
地盤改良等を何もせずに建て、仮に10センチ沈下すると想定した場合、建物も均等に10センチ沈めばあまり問題は起こらないのですが、たいていの場合は不同沈下し傾くことが多いようです。
傾き量は建物の重さがどの程度偏りがあるか、敷地内で地盤がどのようにどの程度不均一なのかによって違うようで予測は難しく、10センチ以内で傾くとしか言いようがありません。

傾いた場合は建て替えをせず、傾きを修正する工事をすることになります。
実際に私が担当したことがあるのは、傾いてはいるがこれ以上沈下する確率が少ないと判断して、基礎はそのままにして土台をジャッキアップして修正し、土台と基礎の間にスペーサーを入れた工事。
杭打ちをしているのに支持層まで達しておらずに傾き、杭頭にジャッキを掛けて基礎から持ち上げ(この場合建物の自重で元の杭を支持層まで押し込みます。)足りなくなった杭長分を鋼管杭で足して修正した工事です。
前者の工事で百数十万円、後者の工事で8百万円程度、もちろん建物の大きさで変わりますが、いずれにしても建てかえるよりは安いのですが多額の費用でした。

地盤の保証は10年を超えて行うことはないのではないでしょうか。
例えば20年の保証に応じてくれる施工会社があればいいのですが、まずしないと思いますし、大手の会社じゃない限りいくら信頼できる会社であっても、会社そのものがいつまで存続するのかの問題もありますよね。
理想ですが、これだけやれば大丈夫だ、保証なんかいらないよって言うくらいにご自身が納得できる方法のとれることが一番だと思います。

ANo.5です。「この回答への補足」欄に疑問点が書かれていましたが、返答が遅くなり申し訳ありません。

「10センチ以内程度」と書いたのは3~4センチかもしれないし7~8センチくらいかもしれないということで、最大10センチ見ておけば良いのではないかと言うことです。
地盤改良等を何もせずに建て、仮に10センチ沈下すると想定した場合、建物も均等に10センチ沈めばあまり問題は起こらないのですが、たいていの場合は不同沈下し傾くことが多いようです。
傾き量は建物の重さがどの程度偏りがあ...続きを読む

QOutlookで[全員に返信]をクリックすると、[宛先]と[CC]をす

Outlookで[全員に返信]をクリックすると、[宛先]と[CC]をすべて[CC]に入るように設定。

今までOutlookずっと愛用していますが、現在は最新版のOutlook2010を使用してます。

[全員に返信]をクリックすると、元メールの[送信元]と[宛先]が新メールの[宛先]に変わり、[CC]はそのまま引継ぎますが、元メールの[送信元]と[宛先]と[CC]を全部[CC]に入るように設定などありますか。

または、[送信元]だけを[宛先]にして、ほかはすべて[CC]に入ってもいいですが。

Aベストアンサー

>[全員に返信]をクリックすると、元メールの[送信元]と[宛先]が新メールの[宛先]に変わり、[CC]はそのまま引継ぎます

これって、Microsoftのメールソフトの仕様ですかね。
自分が受信したメールの宛先やCCであっても、Outlook Expressもそうなるようです。

私のメインのThunderbirdでは、自分が複数の宛先やCCに含まれている場合でも、それらの受信メールから「全員に返信」で、受信メールの「送信元」のみが、返信メールの宛先に入り、他の「宛先」や「CC」はすべてCCに表示されます。

>[送信元]だけを[宛先]にして、ほかはすべて[CC]に入ってもいいですが。

この部分での方法は、返信メールの宛先欄で、送信元以外をドラッグして選択して右クリックから切り取り、CC欄に右クリックから貼り付けするしかないと思います。

QN値と換算N値

N値と換算N値では、どのように違うのでしょうか?

Aベストアンサー

N値は「標準貫入試験」という地盤調査を行って得られる値で、今ではもっとも標準的な地盤の強さを表す指標となっています。
換算N値は、それより簡略な地盤調査で得られる指標を、N値に換算したものです。標準貫入試験に比べて誤差が大きく、よくつかわれる「スウェーデン式サウンディング」では、2倍ぐらい誤差がある(値半分)と思ったほうがよいです。

N値を地盤の耐力に換算する式としては、建築基準法の告示H13年第1113号の式が標準的につかわれます。
http://www2.ashitech.ac.jp/arch/osakabe/semi/foundation/low/r93k1113.html

Q[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには

Accessにおいて。
帳票フォームの"詳細"に非連結のコントロール(例:テキストボックス)を配置し、それぞれ別々の値を持たせることは可能なのでしょうか?

例えば。
VBAにおいて、カレントレコードのAという値とBという値を計算し、その値を非連結のテキストボックスに挿入したとします。
単票フォームであれば、問題なくテキストボックスには計算後の値が表示されるわけですが……
帳票フォームの場合では、"規定値"に計算式を入れたときと同様、先頭の値と同じものが連続するテキストボックスに表示されてしまいます。
これを回避し、計算後のデータを連続するテキストボックスにそれぞれの値として表示させるには、どのようにすればよいのでしょうか?

もちろん、連結させたコントロールを使用すれば、問題はないのですが……
状況によっては、これが行えた方が便利かと思い、質問させていただきます。

「帳票フォームでは不可能である」といった回答でもかまいません。
どうぞよろしくお願いいたします。

Aベストアンサー

非連結のTEXTBOXの値は一つなので、帳票フォーム上で別々の値を持つような設計は出来ません。
新たに暫定的なテーブルを作成して、元になるテーブルとリレーションさせる方法でないと難しいと思います。

Q数学の問題です。 A=4n+6/n-3の値が整数となるような整数nの最大値を求めよ。また、Aの最大値

数学の問題です。

A=4n+6/n-3の値が整数となるような整数nの最大値を求めよ。また、Aの最大値も求めよ。

解説お願いしたいです。。

Aベストアンサー

A=(4n+6)/(n-3)とのことですので、先ほどの修正含め説明します。
nに注目すると4nをnで割るので、
(4n+6)=4(n-3)+18と変形します。
つまり、4余り18と表現できます。

Aが整数となるので、18はn-3の倍数です。
18の約数は1,2,3,6,9,18です。
n-3はこれら6個に±を付けた12個に絞られます。

よってnが最大となるのは18+3で21です。

また、Aが最大となるのは18/(n-3)が最大となる時なので、n-3=1
よってn=4
この時A=22/1=22です。

Qクエリーで、全角混じりデータの抽出[access95]

半角で入力すべきフィールドの中に全角文字が混在している時に、
この全角文字が混在しているデータを、クエリーで抽出する方法を
教えてください。

データ型はテキストで、フィールド長は50です。
また入力されているデータは、任意<50文字とないっています。

Aベストアンサー

StrConv([列名],128)でANSI文字に変換すれば半角文字が1バイトに変換されるので判定が出来るようになります。

クエリでしたら
IIf(LenB([列名])=LenB(StrConv([列名],128)),True,False)
で列にTrue、Falseが返ってくるようになりますので抽出条件を設定すればいいですね。

Q(1+(1/n))^nの極限でeの値を求める

lim_n→∞ (1+(1/n))^nのとき値がeに近づいていくということは知っていますが、(1+(1/n))^nを計算機に入力し、nの値をだんだん大きくしていくと(1+(1/n))^nがeより大きくなってしまいます。

何故このようなことが起こっているのか詳しく説明してくれる方いませんか?

Aベストアンサー

大きくなる原因をより詳しく言うと
2進数で表現すると n=10^p に対する 1+1/n の値は正確に表現できず, 常に 0.5 ulp 程度の誤差は考えられる. IEEE754 の倍精度実数であれば 2^-53 程度. つまり, もとから (1+1/n)^n の真の値を計算しているわけじゃなくて (1+1/n+ε)^n の計算をしている (手元計算機における ε は絶対値でだいたい 10^-16 くらい).
この ε の存在は n が小さいときには ((1+1/n)^n の値が e から離れているので) 無視できるが, n が大きくなると無視できなくなる. で, n=10^9 のときに破綻した, と.
実際, n を 2 のべきにすると p=52 まできちんと計算していくはずです.

QAccessで、フォームAからダイアログモードで立ち上げたフォームBを開き、フォームBを閉じた時にフォームA側でマクロを実行したい

タイトルのままなのですが、

フォームA(メインとなる画面)と
フォームB(コードの検索画面)があり、
フォームAからフォームBをダイアログモードで開いている状態から、
フォームBを閉じたときに、フォームA側でマクロを実行したいと思っています。

具体的には、フォームAにコード入力用のテキストボックスがあり、コード検索のためにフォームBを立ち上げ、コードを選択した後フォームAのテキストボックスにそのコードを入れて、そのコードの値を元にフォームAにあるコンボボックスの再クエリを行いたいのです。

コンボボックスの再クエリの方法等は理解しているのですが、
上記のような場合に、どのイベントがキックされるのかが分かりません。
どのようにすれば(どのイベントを選んでマクロを指定すれば)適切に実行できるでしょうか。

Aベストアンサー

フォームBの処理
「値の代入」
「オブジェクトの選択」
  オブジェクトの種類:フォーム
  オブジェクト名:フォームA
「再クエリ」
  コントロール名:コンボボックス名
でいかがでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報