質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1738閲覧

コンボボックスで「クエリ式 ○○○の関数は式では使用できません」とエラーになる

gigatail

総合スコア9

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/01/25 10:35

編集2021/01/26 01:50

こんばんは。
Access2019にてアプリを作成して、ランタイム環境にACCDEファイルをコピーして動作させようと思っています。

ログイン画面にて所属部署を選択するコンボボックスがあり、テーブルにある各部署の表示日(開始日・終了日)とシステム日付を判断して部署名を表示するようにしています。
コンボボックスの値集合ソースには

SELECT M_部署マスタ.部署CD, M_部署マスタ.部署名 FROM M_部署マスタ WHERE (((M_部署マスタ.部署CD) <= "05") AND ((M_部署マスタ.開始日) <= Date()) AND ((M_部署マスタ.終了日) >= Date())) ORDER BY M_部署マスタ.部署CD;

SELECT
M_部署マスタ.部署CD,
M_部署マスタ.部署名
FROM
M_部署マスタ
WHERE
(((M_部署マスタ.部署CD) <= "05") AND ((M_部署マスタ.開始日) <= Date()) AND ((M_部署マスタ.終了日) >= Date()))
ORDER BY
M_部署マスタ.部署CD;
を設定しています。

Acces本体の開発環境では、問題無く動作して、テーブルの開始日を先日付にすると表示されなくなるし、終了日を過去日付にすると表示されなくなります。
しかし、ランタイム環境でコンボボックスの▼をクリックすると「クエリ式 ○○○の関数は式では使用できません」と表示されます。
(○○○の部分にはwhere句が表示されます)

色々と試した結果、フォームを開いた時にテキストボックスに日付をセットして、「(M_部署マスタ.開始日) <= テキストボックス」とすれば正常動作したので「Date()」が原因と思われます。

しかし、日付によってコンボボックスの表示内容を切り替える事を多用しているため、システム日付をセットしたテキストボックスを使わずに抽出できる方法をご存じの方、いらっしゃればご教授お願いします。

部署CD部署名開始日終了日
01総務部2000/01/012100/12/31
02人事部2000/01/012100/12/31
03経理部2000/01/012100/12/31
04財務部2000/01/012020/03/31
05営業部2000/01/012100/12/31
06A支店2000/01/012100/12/31
07B支店2000/01/012100/12/31

※日付フィールドはテキスト10文字で設定しています。

開発環境
OS:Windows10 pro
アプリ:Access2019

動作環境
OS:Windows10 pro
アプリ:Accessランタイム

----- 2021.01.26追記 -----
Access2010で作られた既存システム(ランタイム&acced)では、同様のことが問題無く動作しています。
アドバイスをいただいた参照設定の違いを確認したところ、「Microsoft Windows Common Control」の参照設定が無いことに気付きました。
しかし、一覧を探した限りでは見当たりません。 これは別途ダウンロードしてインストールする必要があるのでしょうか?

イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ランタイム環境に一時的にAccessをインストールすることは可能でしょうか。
もし、可能なら、インストールしてAccessからデータベースファイルを開いて参照設定を確認してみてください。
もし、参照不可のライブラリーがあったらそれが原因です。

その参照不可のライブラリーが不必要なものなら、チェックを外します。
必要なものなら、そのライブラリーをインストールする必要があります。(方法はライブラリーによって異なります。)

投稿2021/01/25 11:03

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gigatail

2021/01/25 23:26

おはようございます。 遅い時間にもかかわらず回答いただきありがとうございます。 Access2019環境とランタイム環境とで、参照できているDLLの有無が原因ということでしょうか?
hatena19

2021/01/26 00:03

開発環境では実行できて、ランタイム環境ではエラーになる。 VBAの関数(Date)を含むとエラーになる。 という状況から、その可能性が高いと思われます。 あと、ライタイムは Office 365 Access Runtime をインストールしてますか。
gigatail

2021/01/26 00:39

インストールしています。 ちなみに参照設定の優先順位の違いによって、動作結果が変わったりするんでしょうか?
gigatail

2021/01/27 05:50

Access2010環境で問題のaccdbファイルを開いて確認したところ「Microsoft Exel 16.0 Object Libraly」が参照不可になっていました。 参照不可になってた「Microsoft Exel 16.0 Object Libraly」のチェックを外して、accdeファイルを作成、ランタイム環境でコンボボックスが正常動作することを確認しました。 ご教授いただきましてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問