• ベストアンサー

Access2003とAccess2007の違い

Access独習者です。 入門書で「物品貸出状況フォーム」を作成しました。 フォーム画面「物品貸出状況一覧表」の下に作ったコンボボックス289「大分類」とコンボボックス291「小分類」で 貸出状況を調べる物品を絞り込み一覧表に取り込みます。 コンボボックス「大分類」「小分類」の値集合ソースはそれぞれ「T_大分類」と「T_小分類」です。 Access2003では下記のコードとコンボボックス291「小分類」の値集合ソースのクエリビルダに組み込んだ 抽出条件「大分類番号[コンボ289]」で絞り込んだ物品が一覧表に表示されたのですが、Access2007では コンボボックス289「大分類」を変更後コンボボックス291「小分類」が更新されません。 Access2003とAccess2007でなにか違いがあるのでしょうか。 お聞きするのに提示すべきコードなどそろっていないかもしれないのですが、ご助言いただければ助かります。 よろしくお願いいたします。 Private Sub コンボ289_AfterUpdate() Me!コンボ291.Requery End Sub Private Sub コンボ291_AfterUpdate() Me.Filter = "小分類番号=" & コンボ291 Me.FilterOn = True End Sub

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

No.1、DexMachinaです。 > このSQL文をご覧になってお気づきの点がありましたら SQL自体に問題はないと思います。 ただ、こちらで動作確認をしている中で、ちょっと気になる点がありましたので、 以下の点、確認してみてください。 (いずれも、動作確認中の自分の失敗から(汗)) I)同一PCに2003/2007を共存させている場合、2007起動時に表示される  「Microsoft Office ○○を構成しています...」などのダイアログは、  必ずそのまま処理を実行させてください。  (2003で作成したフォームを2007側でインポートしようとしたところ、「カレント   レコードがありません」という、この時点ではちょっと考えにくいエラーが発生   したので・・・) II)マクロが有効になっているかを確認してください。  リボンのすぐ下に添付画像のようなボタンが出ている場合、VBAは停止して  いますので、再クエリが実行されません。  この『オプション』ボタンをクリックして『Microsoft Office セキュリティ オプション』  ダイアログで、「このコンテンツを有効にする」をオンにしてOKボタンをクリック  すれば、マクロ・VBAが有効になります。  なお、毎回この操作を行うのが面倒なようでしたら、自動でマクロを有効にする  フォルダを作成しておき、データベースファイルをそちらに移動します。  上記フォルダの設定は、以下の操作でできます:   1)アプリケーション左上の『Officeボタン』を押す   2)表示されたメニューの最下方にある『Accessのオプション(I)』をクリック   3)『Accessのオプション』ダイアログが表示されるので、左端のタブ(?)から    「セキュリティ センター」を選択   4)右下にある『セキュリティ センターの設定(T)』ボタンをクリック   5)『セキュリティ センター』ダイアログが開くので、左端のタブから「信頼できる    場所」を選択   6)『新しい場所の追加(A)』ボタンをクリックして、適当なフォルダを指定  ・・・以上(というか以下略(汗))です。 これでだめだとすると、後はAccess2007で新規ファイルを作成して、元のファイル から全てのオブジェクト(テーブルやフォームなど)をインポートしてみる、ぐらいしか 対処を思いつきません(汗) (インポートは『外部データ』リボンの『インポート』から行えます)

sakura54
質問者

お礼

DexMachina様 再度の丁寧なご回答感謝いたします。 画像まで添付いただいて初心者の私にもすぐわかりました。 結果としてご指摘のとおり、「セキュリティの警告」がでておりましたので、オプションで「このコンテンツを有効にする」にしたらあれほど悩んでいたことが解決しました。 とてもうれしいです。 本当にありがとうございました。

その他の回答 (2)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

これじゃないでしょうか? Access 2007 のフォームでフィルタを実行する場合、抽出結果にフィルタが反映されない http://support.microsoft.com/kb/941800/ja

sakura54
質問者

お礼

banaron様 ご回答感謝いたします。 ご回答で紹介してくださったサイトを見た瞬間「これで解決する」と強い期待を持ったのですが結果はだめでした。 2007のフォームデザインのプロパティで読み込み時のフィルタ使用を「いいえ」にしても、いったん閉じてやり直してもおなじです。 しかし、コードに書かれているフィルタ作業に2007のフィルタ機能が影響していることは間違いないように感じました。 ちなみに2003ではフォームデザインのプロパティで「フィルタの使用」は「はい」の状態で正常に動作しています。 いづれにせよアドバイスくださってありがとうございました。

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> 値集合ソースはそれぞれ「T_大分類」と「T_小分類」です。 名前の先頭の文字からすると、それぞれテーブルということで よろしいでしょうか。 そうだとすると、大分類(コンボ289)の更新に合わせて再クエリ (Requery)を行っても、テーブルの内容自体は変わらないため、 小分類(コンボ291)のリストの内容は変化しないと思います。 (Access2003かAccess2007に関係なく) 念のため、Access2003での小分類(コンボ291)の値集合ソースが、 クエリまたはSQL文(=クエリビルダで作成される、「Select ~」で 始まる文)になっていないか、確認してみて下さい。 とりあえず、大分類(コンボ289)の更新後イベントに、ご提示の コードが組まれているのでしたら、小分類(コンボ291)の値集合 ソースを、以下のSQL文に変えれば、動作するかと思います: Select * From T_小分類 Where [大分類ID]=[コンボ289]; 【注意点・前提事項】 ・「T_小分類」のフィールド構成が不明のため、全フィールド(*)  指定にしています。 ・「T_小分類」に「大分類ID」フィールドがあり、これによって  「T_大分類」のレコードとの関連性を記録、と想定しました。 ・・・以上です。

sakura54
質問者

お礼

DexMachina様 さっそくのご回答感謝いたします。 教えていただくために必要な項目が欠如していて大変失礼いたしました。 ア T_はテーブルをさします イ T_大分類のフィールドは 番号 大分類名   T_小分類のフィールドは 番号 小分類名 大分類番号   です。 ウ 小分類の値集合ソースのクエリビルダのSQL文は次の通りです。 SELECT 小分類テーブル.小分類番号, 小分類テーブル.小分類, 小分類テーブル.大分類番号 FROM 小分類テーブル WHERE (((小分類テーブル.大分類番号)=[コンボ289])); これはAccess2003も2007も同じですがなぜ2007では小分類が更新されないのでしょうか。 何回も恐縮ですがこのSQL文をご覧になってお気づきの点がありましたらご助言いただけたら幸いです。 よろしくおねがいいたします。

関連するQ&A

  • 年を条件にデータを抽出するには?

    フィールド1 2012/01/01 2012/01/02 2011/01/01 2011/01/02 2010/01/01 2010/01/02 と言うデータがあり、それをもとに表形式でフォームを作りました。 フォームヘッダーにコンボボックス(名前:コンボ3)を作り、 値集合タイプ:値リスト 値集合ソース:"2012";"2011";"2010" にしました。 コンボボックスのAfterUpdateイベントでコンボ3に表示されている値を年を抽出したいのですが vbaでどうやればいいのでしょうか? クエリは作りません。 Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "# And #" & Me.コンボ3.Value & "#" & "'" Me.Form.FilterOn = True End Sub や Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "/01/01" & "# And #" & Me.コンボ3.Value & "/12/31" & "#" & "'" Me.Form.FilterOn = True End Sub にすると 実行時エラー クエリ式 <式> の <メッセージ> (エラー 3075) 入力した式が、メッセージに示されている原因によって無効です。フィールド名と区切り記号を正しく入力していることを確認してから、もう一度実行してください。 となってしまいます。 2010/01/01と2010/01/02を抽出させたいです。 ご回答よろしくお願いします。

  • Accessのフォーム その2

    すいません、以前にも同じ質問をしたのですが、私の質問の仕方が悪くてうまくいきませんでした。 回答してくださった方、ありがとうございました! もう一度、詳しく質問しなおします。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 しかし、選んだデータの[A]しかテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、[B]のコンボボックスから選択しようとしても空っぽです。 テーブルを見ると、[A]で選んだ[1010]だけが表示されています。 非連結のときはうまく出てたんですが・・。 もしかして連結列が間違ってるのでしょうか?? 元になるテーブルは Aコード A  Bコード B Aコード Cコード C Bコード Dコード D Cコード この2列目を表示したいのです。(2列目が[1010]など表示したいデータ) 列数はそれぞれ「2」で連結列は「2」です。 更新後処理は以下の通りです。 Private Sub コンボ0_AfterUpdate() Me!コンボ2.Requery End Sub Private Sub コンボ2_AfterUpdate() Me!コンボ4.Requery End Sub Private Sub コンボ4_AfterUpdate() Me!コンボ6.Requery End Sub ぜひよろしくお願いします。

  • アクセスのYES NO型の処理について

    アクセス2010を使用している独学の初心者です。 フォームで大分類、中分類、小分類のカテゴリーにそれぞれチェックボックスを作っており、その商品のいる、いらないを選択したらその商品一覧テーブルにあるYES NO型のチェックボックスをオンオフしたいのですがうまくいきません。 今、同じフォーム内にある大分類とそれぞれ紐づいている中分類と小分類のチェックボックスをオンオフできるように private sub chk_大分類.value=false then me.chk_中分類.value=false me.chk_小分類.value=false ここまで書いているのですが、商品一覧の[大分類]にカテゴリーされている商品の不要商品フラグのチェックボックスをオンオフする書き方がわかりません。 すごくざっくりとした説明になってしまいましたが、どなたかご教示いただけませんでしょうか。 よろしくお願いいたします。

  • アクセス コンボボックスについて

    コンボボックス 印刷ボタンについて アクセス勉強中です。 フォームで作成した画面 だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにてフォーム印刷ボタンを作成したのですが、 1000人くらいの、すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャという部分は下記です。 またプロジャー以外に何かしなければならないのでしょうか?? どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub

  • access2000の事で教えてください。

    access2000で顧客のデータベースを作られてるのですが 作った本人が居ない為?といいますか初心者の為、本を片手に 見てるのですがよくわかりません。 教えてください。 顧客の登録情報を変更するにあたり非連結のコンボボックスに 苗字を入れると検索でコンボボックスに苗字がソートされて出てきます。 コードは下記になります。 Private Sub 顧客名_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[顧客CD] = " & Str(Me![顧客名]) Me.Bookmark = rs.Bookmark End Sub 値集合タイプはテーブル/クエリ 値集合ソースでクリエを作ってる?昇順にしてるようです。 ただ「姓」と「名」が分かれてる為、このままですと「姓」の表示がコンボボックスに出てくるのですが 「名」の方が出てこない為、見づらいです。 コンボボックスに「姓」に続き半角スペース開けて「名」が出るように出来ないでしょうか? すいませんが、ご指導ご鞭撻の程、宜しくお願い致します。

  • Accessで家計簿

    いま下記URLをもとに家計簿を作成しております。 http://cropcrusher.web.infoseek.co.jp/shufuden/windowsfolder/accessx/acs.html#acs00 しかし「変数を抽出条件に用いるクエリ」の部分がうまくいかずこまっています。 以下作成ソース 【Form】 Option Compare Database Private Sub Calendar_GotFocus() Me.Calendar.Visible = True Me.Calendar.Value = Date End Sub Private Sub Calendar_Click() Me.年 = Year(Me.Calendar.Value) Me.月 = Month(Me.Calendar.Value) Me.日 = Day(Me.Calendar.Value) End Sub Private Sub 小分類名_Click() Forms!支出入力フォーム!小分類名.RowSource = "大分類毎小分類" End Sub Private Sub 大分類名_Change() Dim Cls1 As String Cls1 = "" Cls1 = Forms!支出入力フォーム!大分類名.Value Call 大分類で小分類(Cls1) End Sub 【モジュール】 Option Compare Database Function 大分類で小分類(Cls1) Dim dbs As Database, qdf As QueryDef, strSQL As String Set qdf = Nothing DoCmd.Close acQuery, "大分類毎小分類" DoCmd.DeleteObject acQuery, "大分類毎小分類" Set dbs = CurrentDb strSQL = "SELECT 小分類名 FROM 分類関連マスタ WHERE 大分類名" & "=" & Chr$(34) & Cls1 & Chr$(34) & ";" Set qdf = dbs.CreateQueryDef("大分類毎小分類", strSQL) End Function クエリは毎回作成されているのですが、 Private Sub 小分類名_Click() Forms!支出入力フォーム!小分類名.RowSource = "大分類毎小分類" End Sub の部分がうまくいっていないのか、クリックしてもコンボボックスになにも表示されません。長々と申し訳ありません。 もしよろしければどなたか教えてください、宜しくお願いします。

  • ACCESSでコンボボックスにSQLで抽出した値を表示したい

    いつもお世話になっております。 ACCESS初心者です。 テキストボックスに入力したフリガナから、あいまい検索させ抽出した ものをコンボボックスに表示させたいのですが、うまくいきません。。 (コンボボックスに何も表示されないです) 過去の質問やネット検索でも調べたのですがイマイチ分かりませんでした。 どなたか詳しい方、ご教示いただけると嬉しいです。 OS:windowXP ACCESS:Ver2003 Private Sub テキストボックス名_Afterupdate() Me.コンボボックス名.RowSource = "SELECT フィールド名 FROM テーブル名 WHERE フリガナ LIKE '" & Me!テキストボックス名 & "*';" End Sub どうぞよろしくお願いいたします。

  • 【Access】サブフォームのコンボボックス連携

    ACCESSで社員の資格情報を入力するシステムを作成したのですが 以下の問題を解決できず困っています。 どうすればいいか お力を貸して頂けないでしょうか? ■問題:メインフォームで別レコードに移動した際 サブフォーム内の連携コンボボックスを更新されない □コンボボックス2の表示項目 1.分類別No 2.資格名ID 3.資格名 3のみを表示していますが、 1つ目のコンボボックス1の数値で 全コンボボックス2の資格名が出てしまいます。 ■フォーム構成 メインフォーム内に以下を設置 1.移動ボタン 2.帳簿サブフォーム □サブフォーム構成 レコード1 コンボボックス1 コンボボックス2 レコード2 コンボボックス1 コンボボックス2 ~~ 最終レコード コンボボックス1 コンボボックス2 ■コントロールソース コンボボックス1:大分類ID コンボボックス2:資格名ID ■テーブル構成 資格名  資格名ID(主キー)  大分類ID  分類別ナンバー(大分類ごとの登録順ナンバー)  資格名   資格大分類  大分類ID(主キー  大分類名 (IT系・運転系など) ■コンボボックス2の値集合ソース(表示項目:資格名) SELECT 資格名.資格名, 資格名.分類別No, 資格名.資格名ID FROM 資格大分類 INNER JOIN 資格名 ON 資格大分類.資格大分類ID = 資格名.資格大分類ID WHERE (((資格名.資格大分類ID)=[Forms]![メインフォーム]![サブフォーム]![コンボボックス1])) ORDER BY 資格名.分類別No; ------------------------------------ サブフォームに記載し効果のなかったVBAコード ’再クエリ Private Sub Form_Current() Dim cntrl As Control If Not IsNull(Me![コンボボックス1]) Then For Each cntrl In Form.Controls If cntrl.ControlType = acComboBox Then cntrl.Requery End If Next cntrl End If End Sub ’ソース更新 Private Sub Form_Current() With Forms!メインフォーム名!サブフォーム名!コンボボックス2 .RowSource = .RowSource End With End Sub ■参考サイト 'サブフォーム内での2つのコンボボックスの連動について 'http://goo.gl/nfvxW '~ '>   コンボボックスAの更新後処理イベントに '> Me!コンボボックスB.Requery '> 'Me.コンボボックスB.RowSource = Me.コンボボックスB.RowSource '数値でコンボボックス選択 'http://goo.gl/ovZ3C 'リストボックスの行を選択するときは、「Selected(n)」を使います 'http://goo.gl/RbsWX 'サブフォームの指定 ' =Forms!フォーム名!サブフォームコントロール名.Form.テキストボックス名 'http://goo.gl/vKxtj

  • アクセス2000

    教えてください。 アクセス2000で下記の構文の’原価’という項目を追加したいのですが、 テキストに参照してきてくれません。’人工’は追加できたのですが・・・・ テーブル・クエリ・等はフィールド追加しているのですが・・・ 何が悪いのでしょうか・・・ Private Sub 商品コード_AfterUpdate() 'テキストボックスに商品コードコンボボックスの値を代入します Me!品名 = Me!商品コード.Column(1) Me!単位 = Me!商品コード.Column(2) Me!単価 = Me!商品コード.Column(3) Me!人工 = Me!商品コード.Column(4) Me!原価 = Me!商品コード.Column(5)

  • Access 検索フォーム

    いつもお世話になってます。 Accessの検索フォームについて教えて下さい。 業務マスターと仕事DBという2つのデーターベースがあります。 業務マスターは共有のサーバーの中にあり、得意先テーブルをリンクして、それをもとに得意先フォームを作りました。 非連結のテキストボックス(txt検索)と非連結のリストボックス(一覧)がり、リストボックス(一覧)のクエリ得意先の抽出に使うフィールドの条件に、Like"*"&[Forms]![得意先フォーム]![txt検索]&"*" を入れました。 txt検索に文字を入れ、一覧リストボックスで絞込をし、選ぶとフォームに表示されるという流れにしたのですが・・・。 Private Sub txt検索_AfterUpdate() Me![一覧].Requery End Sub Private Sub 一覧_AfterUpdate() Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[得意先ID] = " & Str(Nz(Me![一覧], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub [Forms]![得意先フォーム]![txt検索]というパラメータがでて(今まで出たことがない) 文字を入力しても実行できませんでした。参照元が分からないのかなと思いますが、どうしたらうまくいくのか分かりません。どなたかお知恵をかしていただけないでしょうか。Accessは2003を使っています。よろしくお願いします。

専門家に質問してみよう