項目属性一括設定[表定義]

メインメニュー属性設定トップ|表定義|フォームイベント

項目の大まかな内容。

  今回の表(項目)定義の内容。(項目名・データ型・項目計算式は下記参照ください)
  • 通常の項目・・・各項目に1個あればいい項目。(項目番号 1 〜 7 )
  • 今回のように、条件定義を3個設定したため3倍必要な項目。(項目番号 8 〜 49 )
  • それぞれを集計する項目。(項目番号 50 〜 53 )
  • その他環境等で、必要な項目 (項目番号 54 〜 )
※途中同じような項目を作成するところがありますが、私の場合、定義内容をエデイタに複写して作業しています。たんなる無精ですが、複写・置換など簡単にでき漏れもありません。

項目計算式について。

  今回使用の計算式は、簡単な物ばかりですので説明不要かと思いますが一応ご紹介いたします
  • 項目計算式 : #条件選択(#文字位置([条件1],"CB")>0,#文字位置([条件1],"CB"),1,999)
    すでに登録してある条件を、#項目表示条件(&i,10)で、取得します。複数登録してある場合は、先頭から3個だけそれぞれの条件式1〜条件式3の項目へ代入します。(この部分はイベントを参照下さい)

    仮に、項目[条件1]の値が、「(#mod(#行番号,2)=0) CB47」の場合(意味:偶数行の背景をラベンダーに設定)

    上記条件式での判定は、最初に「#文字位置([条件1],"CB")>0」が計算され次に、「1,999」が計算されます。今回の場合は、"CB"の文字が 18番目に有りますので、計算式は、「#文字位置([条件1],"CB")」が実行され、結果は 18 となります。もし含まれていなければ、次の条件式が実行されます。今回は、条件式の最後に「1,999」と書かれてますので、ここが実行されます。計算結果は 999 となります。(通常の「#文字位置( str1 , str2 )では、0を返しますが、下記の最小値を利用するとき不自由でしたので、今回は強制的に 999 が戻るような計算式を設定しています。

    また、表示属性には、「FJ・FE・FS・FY・CC・CB・VP・HP」の設定がありますが、必ず全部が使用されてるとは限りません。そこで、どの属性が設定されてるかを調べるために、1つの条件式を、8個の項目計算式で調べています。(項目番号 14〜21 )。

    ※memo 「1,999」の説明は省略しますが、条件選択で先頭から調べていき最後まで当てはまらなかった場合、最後の「1,***」が実行されます。
     
  • 項目計算式 : #最小([背1],[FY1])
    連続した項目の最初と最後を指定したとき、その中で最小値を返します。他に#合計・#最大・#平均等もあります。詳しくは桐のヘルプ等参照下さい。
    今回の使用目的は、たとえ上記の「FJ・FE・FS・FY・CC・CB・VP・HP」の中で、どれが設定してあってもその中で最小の数字を取得することができます。ではなぜ、最小値が必要か・・・・項目条件式を取り出すためです。上記の「(#mod(#行番号,2)=0) CB47」の場合、「CB」の文字位置を調べることによって(#mod(#行番号,2)=0)」を取り出すことができます。条件式はだいたい「○○○○条件式 FJ****** FE****** FS** FY** CC** CB** VP** HP**」になってますので、最小値さえわかれば「#部分列("条件式の内容",1,最小値-1)」で取得できます。ちなみに属性の区切りは半角スペースです
     
  • その他属性変換式
    62 項表示範囲列 文字列 #条件選択([項表示範囲]=1,",日",[項表示範囲]=2,",時",[項表示範囲]=3,",分",[項表示範囲]=4,",秒",1,#u)
    63 項数値範囲列 文字列 #条件選択([項数値表示]=1,",空白",[項数値表示]=2,",ゼロ",[項数値表示]=3,",なし",1,#u)

    今回の条件設定と直接関係はないのですが、登録時に設定しないと初期状態に戻る部分がいくつかあります。数字項目や日付項目も同様です。そこで、条件設定時に、従来の条件を控えておき登録時に再度設定します。そして上記計算式は、「#項目表示条件」で取得する値と、"表示条件 列属性"で書くのと違いますので、そのままコマンドに使用できるよう事前に変換しておきます。また表を見たとき「1・2」と書いてあるより「日・時・分・秒」と書いてあった方がわかりやすいです。
      

表(tbl)は。

実は、直接利用(表示)する必要はありません。集計するわけでもなく、並べ変えするわけでもないので、極端にいえば全部変数でもかまいませんが、やはり目で確認した方がわかりやすいので、属性内容を表形式保存しています。


表の項目定義内容

項目名 データ型 使用目的・項目計算式等
各項目の情報を、#項目属性で取得後代入(番号1〜7)

1 No 整数 項目の番号がわかるように#連番で置換してます
2 項目名 文字列 条件設定表の項目名が入ってます
3 チェック 文字列 条件設定用
4 データ型 文字列 条件設定表のデータ型が入ってます
5 種別 文字列 条件設定表の種別が入ってます
6 ファイル名 文字列 条件設定表のファイル名が入ってます。全項目同一値です。
7 表示条件 文字列 条件設定表の表示条件(項目設定してある場合のみ)


項目名 データ型 使用目的・項目計算式等
条件設定の内容、(条件式・背景色・文字色・横位置・縦位置) 8〜12の、5 項目
既に設定してある条件式の内容。(条件式・背景色・文字色・横位置・縦位置)の他にフォント情報等 13〜21の、9 項目
同様の項目が合計3組み設定 ( 5 + 9 ) * 3 の 42 項目(通算 8 〜 49 項目)

8 条件定義1 文字列
9 定背1 文字列
10 定文1 文字列
11 定横1 文字列
12 定縦1 文字列
13 条件1 文字列
14 背1 整数 #条件選択(#文字位置([条件1],"CB")>0,#文字位置([条件1],"CB"),1,999)
15 文1 整数 #条件選択(#文字位置([条件1],"CC")>0,#文字位置([条件1],"CC"),1,999)
16 横1 整数 #条件選択(#文字位置([条件1],"VP")>0,#文字位置([条件1],"VP"),1,999)
17 縦1 整数 #条件選択(#文字位置([条件1],"HP")>0,#文字位置([条件1],"HP"),1,999)
18 FJ1 整数 #条件選択(#文字位置([条件1],"FJ")>0,#文字位置([条件1],"FJ"),1,999)
19 FE1 整数 #条件選択(#文字位置([条件1],"FE")>0,#文字位置([条件1],"FE"),1,999)
20 FS1 整数 #条件選択(#文字位置([条件1],"FS")>0,#文字位置([条件1],"FS"),1,999)
21 FY1 整数 #条件選択(#文字位置([条件1],"FY")>0,#文字位置([条件1],"FY"),1,999)
22 条件定義2 文字列
〜中略〜
35 FY2 整数 #条件選択(#文字位置([条件2],"FY")>0,#文字位置([条件2],"FY"),1,999)
36 条件定義3 文字列
〜中略〜
49 FY3 整数 #条件選択(#文字位置([条件3],"FY")>0,#文字位置([条件3],"FY"),1,999)


項目名 データ型 使用目的・項目計算式等
条件設定されてるか否かを調べます。上記14〜21 までの値のうち、最小値を計算しています。計算結果は、条件式が設定されていない場合は、 999 となりその他の値が入ってればその中の最小値が返ります。50〜52 までは、条件1〜条件3までの内容を調べています。この値が 999 以外の場合は、なにか条件式が設定されているということになります。

50 最小1 整数 条件1の属性開始最小値取得用。 #最小([背1],[FY1])
51 最小2 整数 条件2の属性開始最小値取得用。 #最小([背2],[FY2])
52 最小3 整数 条件3の属性開始最小値取得用。 #最小([背3],[FY3])


項目名 データ型 使用目的・項目計算式等
・上記同様 50〜52 の最小値を調べます。これは、必ずしも必要ではないのですが、ここが 999 の場合、どこにも条件式が設定されてないことが早くわかります。イベントの計算を少し早くする為に利用します。
・50 〜 52 を足して 999*3 として判断してもいいですね。しかし、桐は 2,000 個の項目が設定できますが、そんなに多く設定してる場合も少ないと思いますのでイベントの計算式が簡単な方がいいですね

53 最小 整数 最小値取得用。 #最小([最小1],[最小3])


項目名 データ型 使用目的・項目計算式等
・この部分の項目は最初は予定しておりませんでした。のちほど条件設定で登録すると、指定していない項目が全部初期値へ戻ってしまうのを防ぐために最低必要と思われる項目の条件を保存しておきます。 54〜61 の 8項目
・62・63 は、条件登録時に、例えば取得属性値が、"1"でも登録時は”日”として登録するときがありますので、事前に項目計算を使用して変換を行っております

54 項項目フォント 文字列
55 項データフォント 文字列
56 項少数桁 整数
57 項表示幅 数値
58 項通貨記号 文字列
59 項表示形式 数値
60 項表示範囲 数値
61 項数値表示 数値
62 項表示範囲列 文字列 #条件選択([項表示範囲]=1,",日",[項表示範囲]=2,",時",[項表示範囲]=3,",分",[項表示範囲]=4,",秒",1,#u)
63 項数値範囲列 文字列 #条件選択([項数値表示]=1,",空白",[項数値表示]=2,",ゼロ",[項数値表示]=3,",なし",1,#u)


項目名 データ型 使用目的・項目計算式等
・始めて作成した条件選択式がエラーでないかテスト用に、文字列項目を予備に作成しています。例えばサンプルに無い計算式で、本当に大丈夫?試したいときなど、ここを利用してテストを行ってください。本体のイベントの、条件式のチェックでは、必要箇所に条件が指定してあるかのチェックは行ってますが、例えば左右の括弧の数が違うとか、ダブルコーテーションの数が適切か、また関数自体のチェックや、関数の引数が適切かなどのチェックは行っておりません。
・実際の使用では列固定を使用して左端に固定しています。テキスト読み込み時に、この作業項目へ読み込みをしないように最後に置いてあります。
・なお、通常の表にも作業用として、数値項目・文字列項目・日時項目などを追加しておくと、便利な場合もあります。是非ご利用下さい

64 テスト 文字列
top