|
>クリスタルレポートから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関数を設定したのと
同じ結果が得られるはずです。
|
|