Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


662 / 9994 ←次へ | 前へ→

【12642】Re:クエリのフィールドの制限
回答  かるびの  - 14/11/18(火) 0:40 -

引用なし
パスワード
   >クリスタルレポートからAccess2003に帳票を作り変えているのですが
 クリスタルレポートというのは初めて聞きました。
なので、それがどういうものか全くわかりません。


>文字数が多すぎるのかエラーが出てしまいます。
 きっとそのとおりだと思います。
 アクセスのクエリの仕様として、
「クエリのデザイン グリッドのセル内の文字数」の上限は1,024 だそうです。
   ht tp://office.microsoft.com/ja-jp/access-help/HP005186808.aspx
 この制限に引っかかっている可能性が高そうですね。


 他方、「SQL ステートメント内の文字数」の上限は約64,000 だそうです。
 IIF関数の式の文字数が6万4000字までにまだ余裕がある
というならば、
クエリをデザインビューで作るのではなく、SQLビューで作る
というのも一法ではないかと思います。
 この場合、SQL文を書けるというのが最低条件となります。

 なお、SQLですが、クエリのデザインビューで作れる程度のクエリであれば、
ネットで解説ページを探して、熟読し、
試しに自分でSQLを使ってクエリを作ってみるなどすれば、
1時間程度である程度使えるようになると思います。


 他の方法としては、IIF関数と同じ機能を果たす、ユーザー定義関数を自作する
という方法も考えられます。
 この場合は、VBA必須となります。
 VBAのコードはIf文を重ねるだけだと思うので、
ネットで解説ページを探し、それを読みながら進めれば、
それほど難しくはないと思います。


 余談になりますが、
>IIF(right([フィールド],2)="01",
>  "A",
>   IIF([フィールド],2)="02",
>  "B",
>   ・
>   ・
>   ・
>   )
という関数は、「フィールド」フィールドの下2桁が「01」ならば「A」を、
「02」ならば「B」を返すというものです。
 このような場合、アクセスでは、通常、テーブルを1個作って対処します。

 そのやり方ですが、まず、テーブルを1つ新設します。テーブル名は「Tマスタ」とします。
フィールドとして、
   符号  テキスト型  主キー
   名称  テキスト型
を設け、
   符号 名称
    01  A
    02  B
というようにレコードを格納します。

 次に、「フィールド」フィールドを持つテーブル(Tテーブル)から
クエリ(Q_A)を作ります。
 「Q_A」クエリでは、「フィールド」フィールドの下2桁を取り出す式を
設定した演算フィールド(フィールド名「下2桁」)を設けます。

 さらに、「Q_A」クエリとTマスタとを結合させたクエリ(Q_B)を作ります。
結合フィールドは、「Q_A」クエリの「下2桁」フィールドと、
Tマスタの「符号」フィールドとします。

 「Q_B」クエリを開けば、演算フィールドとしてIIF関数を設定したのと
同じ結果が得られるはずです。

491 hits

【12640】クエリのフィールドの制限 bbk 14/11/17(月) 9:52 質問[未読]
【12642】Re:クエリのフィールドの制限 かるびの 14/11/18(火) 0:40 回答[未読]
【12643】Re:クエリのフィールドの制限 Pirorin 14/11/18(火) 11:29 回答[未読]
【12644】Re:クエリのフィールドの制限 bbk 14/11/18(火) 17:45 お礼[未読]

662 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free