|
>ちなみに別フィールドでスペースを入れるとするとどういう感じで考えるとよあでしょうか
こんな感じです。
SELECT ……
,Space(累計*2) AS スペース
,Mid(String(60,"■")
,累計+1
,予定日数
) AS 四角
,スペース & 四角 AS 表
FROM ……
なお、「加工順」フィールドが1である場合や、
「加工順」フィールドや「累計」フィールド、「予定日数」フィールドが
Nullである場合は考慮していません。
それから、累計フィールドが
>IIf(IsNull([加工順]),"",DSum("予定日数","Q_工程MC","加工順<" & [加工順])) AS 累計
となっていますが、これはまずいです。
累計フィールドは、表フィールドにおいて数値として使うことになるので、
累計フィールドは数値でなければなりません。
問題なのは、IIF関数の第2引数(Trueパート)が「""」となっていることです。
累計フィールドは数値でなければならない以上、
累計フィールドが長さ0の文字列、つまり「""」となってはいけません。
ここは「0」とすべきです。
以下、余談です。
「表」フィールドの式ですが、
>, IIf(IsNull([予定日数]),"",IIf([加工順]=1,Mid(String(60,"■"),1,[予定日数]),IIf(IsNull([加工順]),"",IIf(IsNull([累計]),"",Space([累計]*2) & Mid(String(60,"■"),[累計]+1,[予定日数]))))) AS 表
うんざりする式ですね。
私ならユーザー定義関数を作ります。
インデント(字下げ)が使えるので、見通しが良くなります。
まず、標準モジュールに次のコードを書きます。なお、予定日数フィールド、
加工順フィールドが整数型(Integer型)であることが前提です。
Function Fn表(int予定日数 As Integer _
, int加工順 As Integer _
, int累計 As Integer) As String
If IsNull(int予定日数) = True Then
Fn表 = ""
Else
If int加工順 = 1 Then
Fn表 = Mid(String(60, "■") _
, 1 _
, int予定日数 _
)
Else
If IsNull(int加工順) = True Then
Fn表 = ""
Else
If IsNull(int累計) = True Then
Fn表 = ""
Else
Fn表 = Space(int累計 * 2) & Mid(String(60, "■") _
, int累計 + 1 _
, int予定日数 _
)
End If
End If
End If
End If
End Function
コードの意味は、上記の式と同じです。
クエリでは、
SELECT 受注リスト.加工順
………
, Fn表(予定日数,加工順,累計) AS 表
FROM 受注リスト
WHERE ………
とします。
|
|