過去の桐井戸端BBS (桐ver.8)
12557 サブフォームで項目名を変更したい 藤野 2001/08/08-20:37
サブフォームで表示するとき項目名をかえて表示するにはどうしたら良いでしょうか

現在の表の項目名
[氏名] [1]・・・・・・・・・・・・・・・・・・[19]

データーは[1]にはたとえば8月には8月 [2]は9月という具合に月を表示したいのですが。
[1]〜[19]までは固定です
 [1]から[19]までは8月.7.6.5.4.3.2.1.12.11.10.9.8.7.6.5.4.3.2月
9月になったら[1]は9月.8.7.6.5.4.3.2.1.12.11.10.9.8.7.6.5.4.3月
と成るようにしたいのです。
いまは、12ケのフォームを用意して。8月用、9月用という風にしています
どのように工夫したら上記のように出来るのでしょうか?
教えていただければ幸いです。
ファームでは
メイン    サブ
氏名     8月  9月  10月 11月
*****    ***  ***  **** 1***
-----    12月 1月   2月  3月
       *** ****  ***  ***

氏名が切り替わるとサブのデーターも切り替わるようにしています。

宜しくお願いします
12559 項目名相当オブジェクトの表示を任意に変えたい 悲しげ 2001/08/08-21:26
記事番号12557へのコメント
どもっ、藤野さん
項目の持ち方を検討すれば他にもっとエレガントな方法があるのかもしれませんが、
取り敢えず、項目名に相当するオブジェクトの名を任意に変更する、の線で考えてみます。
項目名相当オブジェクトは恐らくはラベルだと思います(恐らくはタイトル的に使われる「n月分」も)。
ここをテキストオブジェクトに変更します。
仮称 &month なる変数(長整数)が有ったとして、「処理月指定」のような仕掛けを用意して、必要な値を代入しておきます。
その上で、

タイトルオブジェクトのソース
  → #文字列(&month)+"月"
項目[1]に対応する項目名的テキストのソース
  → #文字列(&month)+"月"
項目[2]に対応する項目名的テキストのソース
  → #文字列(#条件選択(&month=1,12,1,&month-1))+"月"
項目[3]に対応する項目名的テキストのソース
  → #文字列(#条件選択(&month=2,12,1,&month-2))+"月"
項目[4]に対応する項目名的テキストのソース
  → #文字列(#条件選択(&month=3,12,1,&month-3))+"月"
 ・・・・・・・・・・・
項目[12]に対応する項目名的テキストのソース
  → #文字列(&month)+"月"
項目[13]に対応する項目名的テキストのソース
  → #文字列(#条件選択(&month=1,12,1,&month-1))+"月"
 ・・・・・・・・・・・

ひとつずれたような気がしないでもないが、まっ、趣旨をお汲み取り下さい。(^^;)
12560 Re:項目名相当オブジェクトの表示を任意に変えたい 【多遊】 2001/08/08-21:59
記事番号12559へのコメント
>ひとつずれたような気がしないでもないが、まっ、趣旨をお汲み
>取り下さい。(^^;)

項目[13]に対応する項目名的テキストのソース
  → #文字列(&month)+"月"
13ヶ月目に同じ月ですから、きっとこうでしょうね。

それは置きまして、

上記の式では
>までは8月.7.6.5.4.3.2.1.12.11.10.9.8.7.6.5.4.3.2月
このように小さくなってしまいますが、いかがでしょうか?

>データーは[1]にはたとえば8月には8月 [2]は9月という
>具合に月を表示したいのですが。
また、
>メイン    サブ
>氏名     8月  9月  10月 11月
>*****    ***  ***  **** 1***
>-----    12月 1月   2月  3月
>       *** ****  ***  ***
このように後ろへ行くに従って月が大きくなってますね
私もあまり質問の意味がくみ取れてませんが

もしかしてサブフォームのデータは[19][18][17]・・・[2][1]と並べてあれば可能かもしれません。

12561 DBの基本設計に関わる話の様な気もします 佐田 守弘 2001/08/08-22:19
記事番号12557へのコメント
藤野さん
質問通りの解答であれば、悲しげさんと【多遊】さんが書かれている方法で多分できるだろうと思います。
ですが、この種の質問は、実際に詳しくはなしを聞いてみると、実は本質は別の所にあって、
データベースの基本設計の所から考え直した方が良い場合が少なくありません。
ただし、それは書かれている質問の文面からだけでは把握できません。

既に悲しげさんも何となく感づいているようですが、藤野さんがやろうとされている方法には、
何となく無理があって、見方、考え方を変えると、エレガントな解決方法が「実はある」様な気がしております。

佐田守弘(KS-00119)
解答になってなくてすみません。
12562 Re:項目名相当オブジェクトの表示を任意に変えたい 【多遊】 2001/08/08-23:10
記事番号12560へのコメント
転置集計や並べ替えを実行してあり、かつ項目名#項目属性で取得できる状態(月は、計算式で追加も可)を条件ですが、

項目名テキストオブジェクトは
 ソースに「#項目属性(3,1)」
データテキストオブジェクトは
 ソースに「#項目属性(2,0)」を、一度お試し下さい。
それでも全部(19個)の作成は必要です。

ただ、月の大→小、小→大 は、まだ解決しておりませんがとりあえづ気づいたことだけです

12563 Re:項目名相当オブジェクトの表示を任意に変えたい 【多遊】 2001/08/08-23:17
記事番号12562へのコメント
補足(たびたびすみません)

>項目名テキストオブジェクトは
> ソースに「#項目属性(3,1)」
>データテキストオブジェクトは
> ソースに「#項目属性(2,0)」を、一度お試し下さい。
これはあくまで例です。詳しくは関数のヘルプを参照下さい

※#項目属性(2,0) 
  最初の2は、項目番号、2番目の0は調べたい属性です

12565 Re:項目名相当オブジェクトの表示を任意に変えたい 悲しげ 2001/08/09-10:49
記事番号12559へのコメント
悲しげさんwroteの中で、項目[12]以降はさておき(^^;)、項目[2]とかも
間違っていますね。正しくは次のとおり。

 ・・・・・・・・
項目[3]に対応する項目名的テキストのソース
  → #文字列(#条件選択(&month=<2,&month+10,1,&month-2))+"月"
項目[4]に対応する項目名的テキストのソース
  → #文字列(#条件選択(&month=<3,&month+9,1,&month-3))+"月"
項目[5]に対応する項目名的テキストのソース
  → #文字列(#条件選択(&month=<4,&month+8,1,&month-4))+"月"
 ・・・・・・・・・・・

(いや、まだ間違っているかもしれんが、細部未検証也)(^^;)
12566 Re:項目名相当オブジェクトの表示を任意に変えたい 【多遊】 2001/08/09-13:15
記事番号12565へのコメント

こんな計算式はいかがですか?

項目[1]→#文字列(#mod(&month-1,12)+1)+"月"
項目[2]→#文字列(#mod(&month ,12)+1)+"月"
項目[3]→#文字列(#mod(&month+1,12)+1)+"月"
項目[4]→#文字列(#mod(&month+2,12)+1)+"月"
項目[5]→#文字列(#mod(&month+3,12)+1)+"月"
項目[6]→#文字列(#mod(&month+4,12)+1)+"月"

・・・

項目[11]→#文字列(#mod(&month+9,12)+1)+"月"
項目[12]→#文字列(#mod(&month+10,12)+1)+"月"

12575 みなさん感激です!! 藤野 2001/08/09-22:23
記事番号12559へのコメント
悲しげさん、多遊さんできました。
 皆さんの式を早速実行してみました。項目6、7、8あたりで13とか14とかの数字がでたので、考えるためタテ横の表を作って見ました。
  
項目  月 1 2・・・・・19
    1 12 11 10
    2 1  12 11

  上記から 
    項目6では1月から6月までは&月+6 7から12月までは&月-6
     項目7では1月から7月までは&月+5 8月から12月までは&月-7
     ・・・・
     項目10では1月から10月までは&月+2 11から12月までは&月-10
     となっていることが分かりました。
  そこで 
   #文字列(#条件選択(&月≦5,&月+7,1,&月−5))+”月"
      
     #文字列(#条件選択(&月≦6,&月+6,1,&月−6))+”月"
とすると上手くいきました。=が無いと12になったときに0と表示されました。

多遊さんの#項目属性も試してみました。これはもう少し勉強してみます。
ずーと悩んでいたのですっきりしました。
これで思っていたことができそうです。
現在、履歴から一括処理をしようと少しずつ取り組んでいます。
今後ともご指導お願いもうしあげます。
本当にありがとう御座いました。桐の新しい世界がまたふえました。


12576 ありがとうございます 藤野 2001/08/09-22:34
記事番号12561へのコメント
佐田先生 いつもご指導感謝しております。
今回の質問は、私もデーターベースとしてはこんな使い方しないよな??と思っているのですが、
会社のPCが動き出しては要るものの、以前からの手書きの表などが多く其れに対応するようなので
仕方なく、何とかしようと思って考えたものでした。
某表計算では意外と大変なので、桐で処理させていますが、サブフォームを使用して、見やすく表示させるところで、つまずいたものですから、書き込みをしたものです。
言葉足らずの質問にいつも回答を頂き感謝いたしております。
先生のホームページからダウンロードした資料も勉強させていただいております。
わたしにエレガントなものが作れるかどうか不安ですが。ご指導宜しくお願いいたします。

12577 教えてください 藤野 2001/08/09-22:45
記事番号12566へのコメント
多遊さん先日おしえていただいた下記の式の解説
お願いできませんか、関数はあまり詳しくないものですから。

 (#mod(&month-1,12)+1)この部分が分からないのです
宜しくお願いします

>こんな計算式はいかがですか?
>
>項目[1]→#文字列(#mod(&month-1,12)+1)+"月"
>項目[2]→#文字列(#mod(&month ,12)+1)+"月"
>項目[3]→#文字列(#mod(&month+1,12)+1)+"月"
>項目[4]→#文字列(#mod(&month+2,12)+1)+"月"
>項目[5]→#文字列(#mod(&month+3,12)+1)+"月"
>項目[6]→#文字列(#mod(&month+4,12)+1)+"月"
>
>・・・
>
>項目[11]→#文字列(#mod(&month+9,12)+1)+"月"
>項目[12]→#文字列(#mod(&month+10,12)+1)+"月"


12578 Re:教えてください 【多遊】 2001/08/09-23:37
記事番号12577へのコメント
藤野さんは No.12577「教えてください」で書きました。
> (#mod(&month-1,12)+1)この部分が分からないのです

藤野さんこんばんは。
#mod(num1,num2)の説明(わり算であまりを求める時に使用します)
サンプル7÷3=2あまり1
この「あまり1」を求める時に使用します。これを利用して、

1÷12 あまり→1
2÷12 あまり→2
10÷12 あまり→10
11÷12 あまり→11 ここまではいいのですが

この関数を使用して計算すると
12÷12 あまり→0 あまりが0となります

今回の月を求める場合に0は不都合があります。そこで、
最初に(x−1)÷12+1と計算式を置き換えてるわけです
上記を修正すると

(1−1)÷12+1 あまり→1
(2−1)÷12+1 あまり→2
(10−1)÷12+1 あまり→10
(11−1)÷12+1 あまり→11
(12−1)÷12+1 あまり→12  となります。

#modの意味・使用方法は上記の通りです

次に、
>項目[1]→#文字列(#mod(&month-1,12)+1)+"月"
>項目[2]→#文字列(#mod(&month ,12)+1)+"月"
>項目[3]→#文字列(#mod(&month+1,12)+1)+"月"
>項目[4]→#文字列(#mod(&month+2,12)+1)+"月"

&month+1 この&monthの次の「+1」の意味は省略してかいてありますが、
正しくは
当月は、&month+0-1
来月は、&month+1-1
その次 &month+2-1
その次 &month+3-1
このような意味をお持ちです。おわかりでしょうか?
従って11ヶ月後ろ(つまり12ヶ月目)は
&month+11-1 これを、&month+10 としてあります。

いかがでしょうか。
桐には便利な関数がたくさん有りますので一つずつ自分の物にしてくださいね。

12584 解説ありがとうございました 藤野 2001/08/11-10:30
記事番号12578へのコメント
多遊さん
大変丁寧な解説ありがとうございました。

桐の関数いろいろあっておもしろそうですね。
早速しらべていろいろ実験してみます。
今回のことでまた桐の世界が広がりました
本当にありがとうございました。

戻る