次の方法で共有

ACCESS2003 フォームでテキストボックスに記入した内容をクエリで参照する。

Anonymous
2014-12-25T08:33:27+00:00

いつも参考にさせていただいています。

ACCESS2003以来、ごく普通にしていたことが、最近になって上手くいかなくなってしまいました。

フォーム(名前:Board)に、

  テキストボックス(名前:Start、書式:日付(S))と、

  オプショングループ(名前:Disclose)に

    オプションボタン1(オプション値:1)とオプションボタン2(オプション値:2)

があって、この値を次のクエリで読み込もうとしています。

クエリ

SELECT CInt(Forms!Board!Disclose) AS 式1, CDate(Forms!Board!Start) AS 式2, 市区町村.市区町村CD FROM 市区町村;

市区町村テーブルは、市区町村CDと市区町村名などのテーブルです。(なにかデータのあるテーブルなら何でもいいのですが。)

以上のものが、ACCESS2003のmsd形式でファイル保存されています。

これを、ACCESS2013で開くときちんとクエリのデータシートビューで値を表示することができます。

しかし、ACCESS2003で開くと、ダイアログボックスで、

  「パラメーターの入力」 Forms!Board!Disclose テキストボックス 「OK/キャンセル」 や

  「パラメーターの入力」 Forms!Board!Start テキストボックス 「OK/キャンセル」 や

が表示され、テキストボックスに何も入れないで「OK」を選択すると、

  「! 式が正しく入力されていないか、複雑すぎるため評価できません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。」「OK/キャンセル」 が表示されて、クエリのデータをみることができません。

ここで、質問をさせてください。

1. 以前はクエリにCInt関数やCDate関数を使用しなくても、ACCESS2003でもACCESS2013でも問題なく動いていました。

  今は、これらの変換関数を使わないとACCESS2013では、文字化けしてしまいます。なぜでしょうか?

2. 2つのバージョンのアクセスで、動くようにするには何処を手直しすればいいでしょうか?

以上、よろしくお願いします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2014-12-25T09:36:15+00:00

> これを、ACCESS2013で開くときちんとクエリの

> データシートビューで値を表示することができます。

> しかし、ACCESS2003で開くと、ダイアログボックスで、

> 「パラメーターの入力」 Forms!Board!Disclose テキストボックス 「OK/キャンセル」 や

> 「パラメーターの入力」 Forms!Board!Start テキストボックス 「OK/キャンセル」 や

> が表示され

そのクエリをどのような操作により開いたかや、

その時点でフォーム[Board]が開かれていたかどうか次第。

> テキストボックスに何も入れないで「OK」を選択すると、

> 「! 式が正しく入力されていないか、複雑すぎるため評価できません。

> たとえば、数式に複雑な要素が多すぎます。

> 変数に式の一部を割り当て、式を簡単にしてください。」

> 「OK/キャンセル」 が表示されて、クエリのデータをみることができません。

CInt 関数や CDate 関数の引数に

Null や空文字列を渡すことは出来ません。

> 1. 以前はクエリにCInt関数やCDate関数を使用しなくても、

>    ACCESS2003でもACCESS2013でも問題なく動いていました。

>

>    今は、これらの変換関数を使わないとACCESS2013では、

>    文字化けしてしまいます。なぜでしょうか?

> SELECT CInt(Forms!Board!Disclose) AS 式1,

>        CDate(Forms!Board!Start) AS 式2,

>        市区町村.市区町村CD

> FROM 市区町村;

PARAMETERS [Forms]![Board]![Disclose] SMALLINT,

           [Forms]![Board]![Start] DATETIME;

SELECT [Forms]![Board]![Disclose] AS 式1,

       [Forms]![Board]![Start] AS 式2,

       市区町村.市区町村CD

FROM 市区町村;


以上のように、クエリパラメータ(のデータ型)を

明示的に定義してみて下さい。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2014-12-26T01:45:17+00:00

    ■ sk.exeさま

    【質問の1】について、回答ありがとうございました。

    CInt()やCDate()などの関数で修飾するのではなく、

    パラメータの型を設定する方法を教えていただきました。

    SQLビューで

    PARAMETERS [Forms]![Board]![Disclose] Short, [Forms]![Board]![Start] DateTime;

    を先頭に書き加えるか、

    もしくは、デザインビューで右クリックして「クエリーパラメータ」のダイアログを表示させて

    設定すればよいのですね。

    アクセスを使い始めて十数年になりますが、「クエリーパラメータ」の機能を初めて利用しました。

    つい最近まで(少なくとも今秋まで)は、この設定がなくても、

    日付は日付として、整数は整数として読み込んでくれていたと思います。

    いつから、厳密に指定しないといけなくなったのでしょうね。

    質問1については解決しました。ありがとうございました。

    ■ みなさま

    引き続き、質問2について、よろしくお願いいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません