• ベストアンサー

AccessVBAフォームデータソースについて

お伺いします。 サブフォームにSQLで指定したテーブルを表示しようと、標準モジュールの中で、 myRS = "SELECT * FROM イベントテーブル WHERE (((イベントテーブル.年度)=" & DirObj & ")) ORDER BY イベントテーブル.htmlファイル名;" Forms!目次作成!イベント一覧.SourceObject = myRS としたのですが、エラーが出てしまいます。 Accessで標準モジュールを使い慣れていないので、先達の皆様に、援助を乞う次第です。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

>指定した式で、閉じているかまたは存在しないオブジェクトを参照しています ということなので オブジェクト=フォームが見つからないよ?と言ってます。 ・フォームを開いていないか ・フォーム名が間違っているか ・フォームの指定方法が間違っているか↓ http://hatenachips.blog34.fc2.com/blog-entry-347.html ではないですか? では。

r58_on_job
質問者

お礼

ありがとうございます。 私の間違いに気づかせていただいたことに感謝します。 サブフォームを開いていませんでした。サブフォームを開き、テーブルを表示させてから、この行を実行したら、期待通りの結果になりました。 再度、感謝します。

その他の回答 (1)

回答No.1

それでエラーの内容は? たぶん、 Forms!目次作成!イベント一覧.SourceObject = myRS を↓ Forms!目次作成!イベント一覧.form.recordsource = myRS では? http://support.microsoft.com/kb/113352/ja http://www.accessclub.jp/bibouroku/019.html あとは、 debug.print DirObj や debug.print myRS で内容を確認してみる。 どこのサイトでも言われると思いますが、 今後の質問の際には Access のバージョン、 エラー内容 を必ず一緒に投稿するようにしましょう。

r58_on_job
質問者

補足

さっそくのご回答ありがとうございます。 また、失礼しました。 AccessはOffice 2007です。 ところで、ご教示いただいた内容に、行を修正し、実行しましたが、 実行時エラー'2467' 指定した式で、閉じているかまたは存在しないオブジェクトを参照しています。 のエラーが出てしまいます。 私には全く分りません。 お手数ですが、よろしくお願いいたします。

関連するQ&A

  • 五十音順

    テーブルのフィールドに、読み仮名が入っています。 あ行、か行など、五十音順に抽出する場合のSQL文ですが、 $sql = 'select * from テーブル名 where kana between "あ" and "お" order by kana'; 上記の文を $sql = 'select * from テーブル名 where kana between "$key[$i]" order by kana'; という具合に配列などに入れたいと考えておりますが。 そのようなことは可能なのでしょうか? それとも、もっと効率よく五十音順の検索ができるようにする方法が ありますでしょうか?

  • 抽出条件でデータ型が一致しません。(エラー 346

    フロント:Access2003 , バック:SQL Server7.0 テーブル名 dbo_TB1(ODBCテーブル) Access2003 日付 データ型(日付/時刻型) yyyy/mm/dd SQL7.0 日付 データ型(smalldatetime) yyyy/mm/dd 以下のモジュールを実行すると、 抽出条件でデータ型が一致しません。(エラー 3464) とエラーが出てしまいます。 よろしくお願いします。 Dim myDate As Date myDate = Date   strSQL = Empty   strSQL = strSQL & "SELECT * FROM dbo_TB1"   strSQL = strSQL & " WHERE 日付 = #" & myDate & "#"   strSQL = strSQL & " ORDER BY 日付" Forms![フォーム].Form.RecordSource = strSQL

  • SQL文「DISTINCT」の「ORDER BY」について

    SQL文「DISTINCT」の「ORDER BY」について教えて下さい。 A列をDISTINCTで重複行の排除をしています。 その後、B列でORDER BYをかけたいのですが、エラーが 出てしまいます。A列でのORDER BYは成功します。 何か良い方法があれば教えて下さい。 よろしくお願いします。 SQL="SELECT DISTINCT A列 from table " &_ "WHERE (table.C列='100') " &_ "ORDER BY (table.B列) ASC " ⇒エラー    "ORDER BY (table.A列) ASC " ⇒成功

  • 「SELECT ~  FROM テーブル名」の後に続く句は「WHERE句」と「ORDER BY句」以外にありますか?

    最近アクセスのSQL文を学びました。 選択クエリのSQL文で 「SELECT ~  FROM テーブル名」 の後に続く句は 「WHERE句」と 「ORDER BY句」以外にありますか? よろしくお願いします。

  • SQL得意な方

    仕事で困っています、 なにとぞお力添えを。 テーブル1から、TOP50 でaとbを表示させたいのです。 で、その際の条件として、 開始するレコードも指定したいのです。 下記SQLの[○]の部分に50が入っていたら、 51~100件を表示する、と、いうような。 SELECT TOP 50 a,b FROM テーブル1 WHERE c='1' AND a >= '' AND a NOT IN ( SELECT TOP 〇 a FROM テーブル1) ORDER BY a で、順調だったのですが、WHERE条件が なんだか怪しいらしく、 a >= ''の時だけはきちんと動くのですが、 ANDでc='1'をつけた所、普通に全件表示されてしまいます。 [ちゃんと51件目から100件目を表示するSQL] SELECT TOP 50 a,b FROM テーブル1 WHERE a >= '' AND a NOT IN ( SELECT TOP 〇 a FROM テーブル1) ORDER BY a [何故か全件表示になるSQL] SELECT TOP 50 a,b FROM テーブル1 WHERE c='1' AND a >= '' AND a NOT IN ( SELECT TOP 〇 a FROM テーブル1) ORDER BY a ※[何故かNOT IN (~)の部分がまったく働いていない] どうしてなのでしょう?。 解りにくい質問で大変申し訳ないのですが どなたかご教授いただけないでしょうか。

  • AccessVBA 並べ替えの条件

    こんにちは! sql_c = "SELECT * FROM [テーブル] ORDER BY [cnt] ASC" Me![subform].Form.RecordSource = sql_c Me![subform].Requery というVBAを書き込んだのですが、[cnt]フィールドはテキストフィールドであり、文字も数字も入ってるからだと思いますが、並べ替えがうまくいきません。 1,10,11,12,2,3,4・・・,V1,V10,V11,V2,V3・・・とった具合です。 文字が入るといっても、頭に「V」が付くか付かないかだけです。 きれいに並べるには、どのように書けばいいでしょうか?

  • 重複データからの取得方法を教えてください

    id s_no s_name ---------------- 1 001 aaaa 2 005 bbb1 3 005 bbb2 4 002 cccc 5 005 bbb3 6 005 bbb4 上のものがテーブルの内容です。取得したい結果が ---------------- 1 001 aaaa 4 002 cccc 5 005 bbb3 です。 試したSQLは select distinkd on (s_no) id,s_name from shain where id>=5 order by id desc select id,s_no,s_name from shain where id>=5 group by s_no order by id desc などです。 データベースがmdbなのでdistinkd onは使えませんでした。 もしかすると書式が違うのでしょうか?

  • ACCESSサブフォームにデータ反映されない

    よろしくお願いします。 Access2010を使っています。 メインフォームにあるテキストボックス2つに条件を入力し、 抽出したデータをサブフォームで表示させたいと思います。 ●メインフォーム名「フォーム1」 テキストボックス2つ「tex1」「tex2」 ●データ元クエリ「q1」 フィールド名「ID1」「ID2」「Name」 ●サブフォームSQL SELECT q1.Name FROM q1 WHERE (((q1.ID1) = Forms![フォーム1]!tex1) And ((q1.ID2) = Forms![フォーム1]!tex2))); フォームを開き、tex1とtex2に入力してもサブフォーム表示が変わりません。 サブフォームをデータシートで別に開くと、データ抽出できていることは確認できました。 サブフォームのコントロールソースへSQLを入力するだけでは、 メインフォーム内でのデータは反映されないんでしょうか??

  • sqlのwhereで指定した条件の前後を取得したい

    テーブル=T) KEY DATA 001 あ 002 い 003 う 004 え 005 お SQL) SELECT DATA FROM T WHERE KEY = 003 ; 上記のSQLでは、「う」のデータしか取得できませんが、 「003」の前後1件、合計3件の「い」「う」「え」を取得する方法を教えて下さい。 ちなみに、 SELECT DATA FROM T WHERE KEY >= 003 AND ROWNUM <= 2 と SELECT * FROM ( SELECT DATA FROM T WHERE KEY < 003 ORDER BY KEY DESC ) WHERE ROWNUM < 1 のUNIONでは上手く行きませんでした。 よろしくお願いします。

  • 特定のデータの前後を取得したい

    以下のようなテーブルがあり、 SELECT id , regist_date FROM table_name ORDER BY regist_date DESC; ↑このSQLで並べると↓以下になるとします。 id(int型)   regist_date(datetime型) 12      2017-03-30 08:05:03 95      2017-03-29 19:05:03 72      2017-03-28 12:05:03 15      2017-03-28 12:05:03 62      2017-03-27 15:05:03 94      2017-03-26 12:05:03 やりたい事はidが72というのが分かっており、 そのデータと前後のデータを取得したいです。 ※日付の部分が完全に重複するデータが存在する場合もあります。 ※idは重複しません。 ↓このデータがとりたいです。 95      2017-03-29 19:05:03 72      2017-03-28 12:05:03 15      2017-03-28 12:05:03 SELECT * FROM table_name WHERE id = 72 ORDER BY regist_date DESC; ここから先が分からなくなってしまいどなたかわかる方いらっしゃいますか?

    • ベストアンサー
    • MySQL