|
テーブル構成、クエリ内容の提示については、了解です。
テーブルについては、1つのテーブルに情報を盛り込み過ぎている、
言い換えると、もっとテーブルを分割した方がいいのではないか
という印象ですが、
当方には業務の実態が全くわからないので、
テーブル構成の適否を的確に判断できませんし、
今回のスレッドのテーマからは外れてしまうので、
これ以上は触れません。
SQL文が見づらいので、整形してみました。
Q_工程別
SELECT 加工順
, オーダーNo
, 発注日
, 発注担当者名
, 品番図番
, 品名
, 部品発注数
, 納期
, 発注残数
, 工程名
, 形式寸法
, 工程備考
, 在庫数
, 納期対応
, 在庫対応
, 進捗
, 予定日数
, IIf([加工順]=1
,Mid("ABCDEFGHIJKLMNOPQRSTUVWXYZ",1,[予定日数])
,Mid("ABCDEFGHIJKLMNOPQRSTUVWXYZ",[累計]+1,[予定日数])
) AS 表
, DSum("予定日数","受注リスト","加工順<" & [加工順]) AS 累計
FROM 受注リスト
ORDER BY IIf(IsNull([加工順]),1,0)
, 加工順
, 納期
, 納期対応 DESC;
>加工順、予定日数が無い時にエラーが出ますがなんとなくアルファベットの表示が[表]に出てくるように
>なりました。あっているかはともかくですが
>いかがでしょうか
期待どおりの、あるいは予想どおりの文字列が「表」フィールドに
表示されれば、それが正解です。
強いて言えば、「表」フィールドと「累計」フィールドの順番を入れ替えた方がいいと思います。
「累計」フィールドを算出した後で、「表」フィールドの値を生成することになるからです。
あとは、「表」フィールドの結果に、スペースを追加するという処理だけですね。
なお、この処理を「表」フィールドに盛り込んでもいいのですが、
処理経過を確認するために、
「表」フィールドとスペース追加の処理は、別フィールドにした方がいいと思います。
>加工順、予定日数が無い時にエラーが出ますが
エラーの原因はわかっていますか。
エラーの原因ですが、
予定日数がないときは、「予定日数」フィールドの値はNullとなっています。
したがって、「表」フィールド内のIIF関数のFalseパートにおける
Mid("ABCDEFGHIJKLMNOPQRSTUVWXYZ",[累計]+1,[予定日数])
には、第3引数の値としてNullが渡されるわけですが、
Mid関数の第3引数はNull値をとれないため、このMid関数がエラーを返し、
その結果、その外側にあるIIF関数もエラーを返します。
だから、Mid関数がエラーにならないような値を渡すようにする必要があります。
VBEのイミディエイト・ウィンドウに、例えば、
? Mid("ABCD",2,2)
? Mid("ABCD",2,Null)
などと入力し、どういう値が返されるか実験してみてください。
|
|