Access上で新しいデータベースを作成中なのですが、サブフォーム内の再クエリが上手くできません。
2つのコンボボックスを連動させた物がサブフォーム内にあるのですが、この2つを連動させる為にどうしてもサブフォームでの再クエリが必要となります。
そして、その再クエリのマクロでのコントロール名がわかりません。
最初のコンボボックスを[果物]次のコンボボックスを[りんご]と仮定すると、
[果物]→再クエリ→[りんご]のような形になる為、コントロール名は[りんご]になるはずなのですが、サブフォーム内の[りんご]の為、なんと表現していいのかわかりません。その結果、上手く再クエリが働いてくれません。
コントロール名はなんと書けばよろしいのでしょうか?
(何も書かなくても再クエリされないです…)
Access初心者なのでわかりやすく言っていただければと思います。
長い質問になってしまいましたがよろしくお願いいたします。

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

文法 SQL」に関するQ&A: PL/SQLでのSQL文法

A 回答 (2件)

はずしていたすみません。



連動させるということは、「果物」コンボボックスで
指定した値を元に「りんご」コンボボックスのレコ
ードを抽出するっていう形でしょうか?

「果物」コントロールの更新後イベントモジュールで「りんご」コントロールの値集合ソースのSQL文を書き換え再クエリーをかけるっていうやり方はどうでしょう?

Private Sub 果物_AfterUpdate
りんご.RowSource="SELECT フィールド名1,フィールド名...... FROM テーブル名 WHERE (フィールド名="& 果物 &")"
りんご.Requery
End Sub

この回答への補足

CHOROLYNさん、ご返答をありがとうございます。
実はAccess初心者の為、SQLが使えません。
でもおっしゃるとおりにしてあるはずですが…

[りんご]の値集合体ソースに以下の文を入れています。

SELECT [元になるクエリ].[りんご] FROM 元になるクエリ WHERE ((([元になるクエリ].[果物])=[FORMS]![メインフォーム]![サブフォーム]![果物])) ORDER BY [元になるクエリ].[ID];
※元になるクエリとは[果物]と[りんご]の値の集合体です。

そして、[果物]の更新後処理として[りんご]の再クエリのマクロを組んでいます。
その再クエリマクロが働きません。
マクロ上ではアクションで再クエリを選択し、その際の「コントロール名」がわかりません。
[りんご]では働かないし…、
Forms![メインフォーム].form.[サブフォーム]![りんご]でもダメでした…。

う~ん?? どうすればいいんでしょう??
よろしくお願いいたします。

補足日時:2001/03/26 10:36
    • good
    • 0

メインフォームに「果物」サブフォームに「りんご」があるということでしょうか?



Forms![メインフォーム名].form.[サブフォーム名]![コンボボックス名].Requery

では駄目でしょうか?
ちょっと確認できないので細かい文法とか不安ですが...

この回答への補足

CHOROLYNさん、ご返答をありがとうございます。
やってみましたがダメでした…。

補足ですが、[果物]と[りんご]は両方サブフォームにあります。
サブフォームだけで試してみると、両方のコンボボックスはきちんと連動しています。
それを応用させてメインフォーム上で試してみるとダメなのです…。

「このウインドウでは"ApplyFilter/フィルタの実行アクションを実行できません」というエラーメッセージが出て、それをOKで返すと、「アクションの実行エラー」ダイアログで「再クエリ」で引っかかっていることがわかります。

なぜでしょう????
ご存知の方はよろしくお願いいたします。

補足日時:2001/03/25 12:16
    • good
    • 0

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

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

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

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

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

QACCESSでVBAから選択クエリの抽出条件を指定したい

選択クエリの抽出条件はデザインビューの「抽出条件」欄に直接条件式を書き込むのが普通だと思いますが、この条件式をVBAで記述することは出来るでしょうか?

DoCmd.RunSQL ではアクションクエリしか実行できないようだし、
DoCmsOpenQuery では引数に抽出条件を指定することが出来ないし困っています。

Aベストアンサー

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてます(^^)

ちなみに、
Me.
と打ち込んだ時点でオートコンプリート(名称あってるかな~)
機能が働いて参照できるオブジェクトが表示される
はずです。
その中にKojiさんが書いた埋め込みオブジェクトが
きっとあるはず
もしかすると"FormA"とか名前を付けたつもりでも
Visual Basic Editor君が気を利かせて
Form_formA
とかになってる場合があります。
最近やってないんでうろ覚えなんですが、こんな処を注意すれば大丈夫!

追伸
このコードって検索とかで使えますから
覚えておくときっと役に立ちますよ♪

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてま...続きを読む

QAccessのコンボボックスに連動して、サブフォームを表示させたい。そ

Accessのコンボボックスに連動して、サブフォームを表示させたい。そして、そのサブフォームに新しいデータを追加したい。

コンボボックスに連動さして、サブフォームを表示させるやり方は、検索して見つける事ができました。
そのページはこちらです。
http://www.nurs.or.jp/~ppoy/access/access/acF028.html
しかし、データをサブフォームに追加しようと思うと上記リンク先のやり方では出来ませんでした。

何か方法はないでしょうか?

Aベストアンサー

ANo.1です
URLを参考にしていろいろやってみました。
出来ました!!! こんなの初めてです。

URLを参考にされたのであれば
・コンボボックス名は「CMB_県名」となっていますか ?
・コンボボックスの対象項目は県名のみですか ?


例では tbl参加住所サブと tbl_prf テーブルから 選択クエリーを経由して サブフォームを作ってメインフォームに都道府県のコンボボックスを配置しています。

サブフォームになるフォームは作成できますね

メインフォームは空のフォームから始めます。
1.フォームヘッダーにTbl_Pref(都道府県リスト:都道府県ID,都道府県名) のコンボボックスを配置します。
2.tbl参加住所サブを詳細欄へドラッグするとサブフォームとして配置できます。
3.サブフォームプロパティーでリンクを定義して完成です。
 ただしこの場合ナビしてくれませんので直接入力することになります。
 リンクの対象となる項目は同じデータ形式でなければなりません。

QAccess VBA(条件付きクエリ実行する方法)

タイトルについて、御教示ください。
以下のような事を実行できるVBAを教えてください。

■前提条件
クエリ1・2:チェックボックス付クエリ

■やりたいこと
・クエリ1・クエリ2に両方一つもチェックが入っていない場合 →クエリAを実行
・クエリ1に1つ以上チェックが入っている(クエリ2には1つもチェックが入っていない)場合 →クエリBを実行
・クエリ2に1つ以上チェックが入っている(クエリ1には1つもチェックが入っていない)場合 →クエリCを実行
・クエリ1・クエリ2に両方1つ以上チェックが入っている場合  →クエリDを実行

上記のように、チェックボックスの入る条件によって、
実行するクエリを変更する事は可能なのでしょうか。

Aベストアンサー

あれ?いつぞやの?

さて、可能ではありますが、その実行トリガーは?
ボタン押下時?

まぁ何にしても、そのクエリのチェックのTrueの数をそれぞれDcount関数で取得し条件分岐すれば出来ますよね。

Q[OfficeXP_ACCESS] フォームでのコンボボックスの連動?について 

お力添えいただきたくお願い申し上げます。

MS OfficeXP ACCESS についてです。
やりたいことは次のようなことです。

・フォームで実現したい。
・コンボボックスが3つ[都道府県][市区町村][その他]があります。
・それぞれはリストより選ぶようにしたいです。
・例として[都道府県]で47都道府県より"東京都"を選んだら、次の
 [市区町村]は東京の市区町村名が選べるようになるというものです。

ご説明不足で申し訳ございませんが、ご協力をいただければ幸いです。
よろしくお願いいたします。

Aベストアンサー

> ・都道府県(このテーブルには47都道府県を入力しました。)
> ・東京都(このテーブルには東京都の市区町村を入力しました。)
> ・大阪府(このテーブルには大阪府の市区町村を入力しました。)
都道府県テーブルには都道府県名だけで、都道県別に市町村名が入ったテーブルを作成
したと言うことですか?

であれば、市町区村コンボボックスの集合値ソースプロパティに直接テーブル名を
設定し、Requeryする方法が考えられます。

都道府県コンボボックスの更新後イベントで
Me!市町区村.RowSource = Me!都道府県
Me!市町区村.Requery
とすればどうでしょう?

こちらの方が、SQLとか考えなくて済むので簡単かもしれません。

QVBAからADOを使ってクエリのクエリを作成したい

VBAからADOを使ってクエリのクエリを作成したい

ADO初心者です。

VBA側で入力された引数を元に、ADOを使ってあるmdbファイルにあるクエリ(1)の抽出条件を変更した上で(抽出条件はVBA側の引数によって毎回変わります)、クエリ(1)の中から重複したレコードを抽出するクエリ(2)を作成したいと考えています。クエリ(1)並びにクエリ(2)をそれぞれ単独で作成する事は出来たのですが、クエリ(1)の結果を反映したクエリ(2)を作成する方法が分かりません。

なお、クエリ(1)の抽出条件変更は、RecordsetオブジェクトのOpenメソッドを使って行っています。何となくこれはレコードの更新は出来てもクエリの更新は出来ないような気がしており、それが原因のような気がしているのですが、クエリの更新をしたい場合はどうすればよろしいでしょうか?

Aベストアンサー

SELECT文の中にSELECT文ですが、わかりますか?。

重複しているものを検索した結果を一旦テーブルに(作成し)保持すれば
クエリのクエリと同じ結果を得られると思いますし、
重複しているものは何だったかという後から調べることがあったときには重宝します。

処理ができさえすればシンプルでもいいなら、
機能分けてもいいでしょう。

Q[Access2003]コンボボックスのプロパティの「値集合タイプ」について

[Access2003]コンボボックスのプロパティの「値集合タイプ」について

今、参考書でAccess2003のフォームのコントロールの作成について勉強しています。『コンボボックスのプロパティ』の「すべて」の中の「値集合タイプ」の・・・・
「テーブル/クエリ」、「値リスト」、「フィールドリスト」は、少しの説明だけで理解できなかったです。

Access初心者なので簡潔に「テーブル/クエリ」、「値リスト」、「フィールドリスト」を教えてくださったら助かります。

Aベストアンサー

> Access初心者なので簡潔に「テーブル/クエリ」、「値リスト」、「フィールドリスト」を

No.1の方も言われるとおり、私もヘルプはよく参照しますが、このプロパティの
ヘルプは、初心者にはややとっつきにくいように思いますので、多少具体的な
説明をしてみます。


1)テーブル/クエリ:
 『全社員』テーブルの『社員名』のデータ(鈴木、佐藤、etc.)を表示させる
 場合に使用します。
 『値集合ソース』にはテーブル名やクエリ名(またはSQL文)を指定することに
 なります。
 (恐らくもっとも一般的な使い方(だからこそ既定の設定値なのかと))

2)値リスト:
 データ数が少なく、データベース運用中に変更がほとんど発生しないため、
 そのデータを管理するためのテーブルを作成するまでもない場合に使用
 します(たぶん、多くの場合は)。
 『値集合ソース』には、表示したいデータを「;」区切りで指定します。
 (「"~20歳";"21~40歳";"41~60歳";"61歳~"」と指定すると、
  「~20歳」「21歳~40歳」等が選択肢として表示される)

3)フィールドリスト:
 『値集合ソース』に指定してテーブルやクエリ、SQLのフィールドの
 一覧が表示されるようになります。
 (上記『全社員』テーブルを指定すると、「鈴木」などではなく「社員名」等
  が表示される)
 たとえば検索用フォームを作成する場合にこのタイプのコンボボックスを
 使うと、絞り込み条件を指定するフィールドを、ユーザーが選択できるように
 することもできます。
 (予め絞り込みフィールドが確定したフォームを作るより、プログラミングは
  複雑になりますが)


・・・以上、参考まで。

> Access初心者なので簡潔に「テーブル/クエリ」、「値リスト」、「フィールドリスト」を

No.1の方も言われるとおり、私もヘルプはよく参照しますが、このプロパティの
ヘルプは、初心者にはややとっつきにくいように思いますので、多少具体的な
説明をしてみます。


1)テーブル/クエリ:
 『全社員』テーブルの『社員名』のデータ(鈴木、佐藤、etc.)を表示させる
 場合に使用します。
 『値集合ソース』にはテーブル名やクエリ名(またはSQL文)を指定することに
 なります。
 (恐らくもっとも...続きを読む

QVBAでアクセスのクリエの抽出条件を変更

エクセルで、契約管理表を作っています。
仕様としては、エクセルとアクセルを使用し、
エクセルからアクセスのデータベースを操作
するようにしています。
(複数拠点で仕様する為。)

アクセスでは「T_契約メイン」というテーブルと
「T_契約今月」というクエリがあって、今月分の
データのみ抽出できるようになっています。

これを、エクセルのVBAのフォームでADOとSQL等を
利用してデータ取得、編集、新規契約の登録などを
行うように考えています。

ここまでの内容は無事、作成する事が出来ています。

ここからが質問なのですが、クエリ「T_契約今月」の抽出
条件をエクセルVBAから変更するにはどのようにコードを
書けばいいのでしょうか?

毎月毎月、アクセルを開いてクエリのデザインビューで
抽出条件を変更すればいいのでしょうが、あんまりスマート
では無いですよね。

出来れば、エクセル側からVBAで設定変更等のフォームや
ボタンを作って、処理したいのですが…。

とりあえずアクセスに繋げるところまでは分かるので、
クエリの抽出条件変更の部分のコードの記載方法を
教えて頂けないでしょうか?

どうぞよろしくお願いいたします。

エクセルで、契約管理表を作っています。
仕様としては、エクセルとアクセルを使用し、
エクセルからアクセスのデータベースを操作
するようにしています。
(複数拠点で仕様する為。)

アクセスでは「T_契約メイン」というテーブルと
「T_契約今月」というクエリがあって、今月分の
データのみ抽出できるようになっています。

これを、エクセルのVBAのフォームでADOとSQL等を
利用してデータ取得、編集、新規契約の登録などを
行うように考えています。

ここまでの内容は無事、作成する事が出来て...続きを読む

Aベストアンサー

VBAを持ち出さずとも、Excelに抽出条件を入力するセルを設け
Accessにリンクして抽出条件とすればいいのでは

リンクテーブルの名前を「エクセル」、フィールド名を「抽出条件」とすれば
Accessのクエリの抽出条件欄に

In (select 抽出条件 from エクセル)

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

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

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

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

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

Aベストアンサー

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

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

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

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

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

QVBAをつかってクエリの情報を抽出するには??

ACCESS VBAを使ってプログラムを組んでいるVBA初心者です。ヘルプやいろんなHPを参考にしているのですが、どうしてもわからないことがあるのでおしえてください。
クエリの情報をフォームの日付から抽出し、csvファイルを作成するというものを作ろうとしています。
クエリの抽出条件でフォームの日付の期間で抽出するようにしてあります。
VBAにてOpenRecordsetでクエリから情報を抽出しようとするのですがクエリがありませんとエラーをはかれてしまいます。クエリの指定方法がまちがっているのでしょうか?
また、以下の方法とは別の方法でクエリから抽出するやりかたがありましたら教えていただけませんでしょうか?よろしくお願いいたします。
以下にどのように記述しているか記します。
------------
Public Function value()
On Error GoTo ERRORRR
Set db = CurrentDb
Dim rs As Recordset

Set rs = db.OpenRecordset("[開通チェック]", dbOpenDynaset)
Debug.Print rs.EOF
Do Until rs.EOF
Debug.Print rs!ID
Debug.Print rs!登録状態
Debug.Print rs!開通年月日
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
Exit Function
ERRORRR:
msgbox Err.number & ":" & Err.description
End Function

--------
開通チェック:クエリ (開通年月日には Between [Forms]![開通チェック]![開始日] And [Forms]![開通チェック]![終了日] の抽出条件が書かれています。)

使用しているACCESS Ver:ACCESS97

ACCESS VBAを使ってプログラムを組んでいるVBA初心者です。ヘルプやいろんなHPを参考にしているのですが、どうしてもわからないことがあるのでおしえてください。
クエリの情報をフォームの日付から抽出し、csvファイルを作成するというものを作ろうとしています。
クエリの抽出条件でフォームの日付の期間で抽出するようにしてあります。
VBAにてOpenRecordsetでクエリから情報を抽出しようとするのですがクエリがありませんとエラーをはかれてしまいます。クエリの指定方法がまちがっているのでしょうか?
...続きを読む

Aベストアンサー

パラメータがあるクエリはパラメータをParametersで入れてあげないと開けません。
パラメータを読み取れないのでRecordsetにクエリを渡せない状態でエラーが出ていると思います。

Dim db as Database
Dim qd as QueryDefs
Dim rs as Recordset
Dim pr1 As Date, pr2 As Date

Set db = CurrentDb()

pr1 = Format(Forms("開通チェック")("開始日"), "yyyy/mm/dd")
pr2 = Format(Forms("開通チェック")("終了日"), "yyyy/mm/dd")

Set qd = db.QueryDefs("開通チェック")
qd.Parameters("pr1").Value = pr1
qd.Parameters("pr2").Value = pr2

Set rs = qd.OpenRecordSet() 'ここでRecordsetにクエリを渡します。

これでいけると思います。

パラメータがあるクエリはパラメータをParametersで入れてあげないと開けません。
パラメータを読み取れないのでRecordsetにクエリを渡せない状態でエラーが出ていると思います。

Dim db as Database
Dim qd as QueryDefs
Dim rs as Recordset
Dim pr1 As Date, pr2 As Date

Set db = CurrentDb()

pr1 = Format(Forms("開通チェック")("開始日"), "yyyy/mm/dd")
pr2 = Format(Forms("開通チェック")("終了日"), "yyyy/mm/dd")

Set qd = db.QueryDefs("開通チェック")
qd.Parameters("pr1")....続きを読む

Q[Access]複数のサブフォームで1つのテーブル

1つのフォームに複数のサブフォーム(sb1,sb2,sb3)があります。
そのサブフォームは1つの同じテーブルを参照しています。
そこで、sb1, sb2, sb3にデータを入力すると
全て別のレコードに書き込まれます。
これを1つのレコードに書き込む方法はないでしょうか?

簡単に、
sb1 には個人情報
sb2 には会社情報
sb3 にはメールアドレス
のようになっています。

これが
レコード1 個人情報
レコード2        会社情報
レコード3               メールアドレス

となってしまいます。
これを

レコード1 個人情報 会社情報 メールアドレス

とするにはどうしたらよいでしょうか??
よろしくお願いします。

Aベストアンサー

それぞれのサブフォーム更新後にリクエリーすればできそうな気がしますが。
ひとつの入力フォーム上に、同一テーブルを参照するサブフォームを複数置く設計は、No1で回答した方が述べているように、あんまりよい方法ではないと、私も思います。


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

人気Q&Aランキング

おすすめ情報