過去の桐井戸端BBS (桐ver.9)
30219 項目のソースを変数で指定するには「コマンド」それとも「オブジェクト操作設定」コマンドを使うのですか Sai 2005/06/14-16:43
フォーム(一覧表)を開くときに メイン処理で

 &電気料金 = &選択folda + "電気料金.tbl"
 オブジェクト操作 @フォーム.編集対象表 = &電気料金

とします。

ついでに、

 &前月メーター値 = "[" + #文字列(&当 - 1) + "月メータ値]"
 &当月メーター値 = "[" + #文字列(&当) + "月メータ値]"
 &当月使用量 = "[" + #文字列(&当) + "月使用量]"
 &当月金額 = "[" + #文字列(&当) + "月金額]"

 オブジェクト操作 @txtField_1.ソース = &前月メーター値
 オブジェクト操作 @txtField_2.ソース = &当月メーター値
 オブジェクト操作 @txtField_3.ソース = &当月使用量
 オブジェクト操作 @txtField_4.ソース = &当月金額

と記述して、項目値のソースを 変数で指定します。

とりあえず、問題なく動いています。

・TBLの項目は [3月メータ値][4月メータ値][4月使用量][4月金額][5
月メータ値]・・・
 という具合に、並んでいます。

 5月にフォーム(一覧表)を開いた際の項目のソースは
  [4月メーター値][5月メーター値][5月使用量][5月金額] となり、
 6月にフォームを開くときには、
  [5月メーター値][6月メーター値][6月使用量][6月金額] となるわけです。

 (項目名は、【多遊】さんのサイトでダウンロードできる、INF Toolsを組み込んでおくと
  自動的にソース値が項目名として表示されるので、設定する必要はありません)


さて、別件で K3に質問したところ、

ソースとして項目名を変数で指定する場合は、通常は「コマンド」コマンドを使いますが、
この方法を試したところ、フォームの作り方や動作環境によって異なる動きをすることがあり、不安定ですので、
おすすめできません。

*項目名は、話の流れから たぶん項目値だと思います。

という説明がありました。

代案の解説もありましたが(まだ良く理解していません。あまりスマートな方法ではなさそうです)、
それは置いておいて項目値のソースを変数で指定するには、どのような方法が適当だと思いますか?

皆様方のご意見をお聞かせください。

30220 Re:項目のソースを変数で指定するには 「コマンド」、「オブジェクト操作 設定」、それとも? アックン 2005/06/14-19:59
記事番号30219へのコメント
Saiさん、こんにちは。理解しやすいように、ゆっくり順に書いてみます。

メーカーのユーザーサポートの人の話はこういうことですね。
(1)こういうときは「コマンド」コマンドを使うのがふつうのやり方ですと。
(2)Saiさんが使っている方法だと、フォームの設計や環境によっては、動作が不安定になることがありますと。

(1)の方を説明します。
「コマンド」コマンドを使うやり方は、次のように書きます。
(ソースの項目名が[A]の場合を例にします。)※1

 コマンド "object @t1.ソース="+"""["+#str(A)+"]"""

これで、下記のオブジェクト操作コマンドが生成されて発行されます。

 object @t1.ソース="[A]"

このように、コマンドの式中で項目名を作ります。
そしてオブジェクトのソースに項目名を直接指定します。

「コマンド」コマンドの中で「オブジェクト操作」(object)を使っているでしょう。
「コマンド」か「オブジェクト操作 設定」かの違いということではないんですよ。

(2)の説明です。
おそらく、ソースに項目名を変数で指定していることを指しているのだと思います。
Saiさんは次のようにしていますね。

 &前月メーター値 = "[" + #文字列(&当 - 1) + "月メータ値]"
 オブジェクト操作 @txtField_1.ソース = &前月メーター値

オブジェクト操作でソースを変数( &前月メーター値)で指定すると、なにか支障があるのかもしれません。
オブジェクト操作の前に編集対象表を指定する流れと相まってまずいのか、そのあたりのことはぼくにはよくわかりません。

話を次にすすめると。
>項目値のソースを変数で指定するには、どのような方法が適当だと思いますか?

ユーザーサポートの人が「コマンド」コマンドなら支障がないと言っているのでしたら、「コマンド」を使えばいいだけの話です。
ただ、今のやり方で支障なく動作しているのなら、それでもいいんじゃないかと思いますけど。

※1: Saiさんは、項目名と項目値の用語の使い方がごっちゃになっています。
ソースにたとえば項目[A]を指定したとすると、この[A]は項目名です。項目値ではありません。
桐ヘルプには、ソースに、
「編集対象表の項目名、変数名、定数、計算式のいずれかを指定します。」
と書いてあります。
ですから、ユーザサポートの人が言った項目名は項目値のことではなく、項目名でいいんですよ。

アックン(=^・^=)
30222 ありが Sai 2005/06/14-21:27
記事番号30220へのコメント
アックンさん

早速のレスありがとうございます。

まず、項目名という表現について、正解だというご指摘ありがとうございます。
桐の用語は細かいので、文章で表現するときには誤解が生じやすく大変です。
(よくわかっていない私が悪いのですが)。

さて本題です。
>「コマンド」コマンドを使うやり方は、次のように書きます。
ありがとうございます。使い方を具体的に教えて頂き大変助かりました。

早速、記述を変更しました。動作も、問題ありません。

>ユーザーサポートの人が「コマンド」コマンドなら支障がないと言ってい
>るのでしたら、「コマンド」を使えばいいだけの話です。
全くそのとおりですね。


実は、アックンさんに
>(1)こういうときは「コマンド」コマンドを使うのがふつうのやり方ですと。
>(2)Saiさんが使っている方法だと、フォームの設計や環境によっては、
とご指摘いただき、ハッとしました。

事がわかった方が読むと、意味を取り違えることがないですね。


実は、サポートの方から書いて頂いた表現を取り違えていました。
*恥ずかしいから詳しくは書きませんが (;^_^A アセアセ…

ただ、今回の場合「コマンド」コマンドを使うということがわかりましたが、
その他では、どんな場合に使うのか、さっぱりわかりません。

目の前の お勉強課題が、一つ増えました。
 
30224 Re:項目のソースを変数で指定するには 「コマンド」、「オブジェクト操作 設定」、それとも? hidetake 2005/06/14-23:24
記事番号30220へのコメント
>オブジェクト操作でソースを変数( &前月メーター値)で指定すると、なにか支障があるのかもしれ
>ません。
>オブジェクト操作の前に編集対象表を指定する流れと相まってまずいのか、そのあたりのことはぼく
>にはよくわかりません。

私は桐ver8初期の時代から、変数でオブジェクト名およびソースの値を与えて処理していますが、
何も問題になったことはありません。

>ユーザーサポートの人が「コマンド」コマンドなら支障がないと言っているのでしたら、「コマン
>ド」を使えばいいだけの話です。
>ただ、今のやり方で支障なく動作しているのなら、それでもいいんじゃないかと思いますけど。

まぁ〜、今のやり方で問題があるならば「コマンド」コマンドを使ってみたり
使わざるを得ないのかも知れませんが、私は特に問題は感じていないので、
わざわざコマンドコマンドを使うまでのことも無いような気がします。


# K3 公認のやり方は「コマンド」コマンドを使う方法なのだろうか? でも
# マニュアルを見てもフツーに変数で与えることもできるはず、できないこと
# は無いはずなので、もし問題があるとすれば、コマンドコマンドを使わせる
# よりそのような不具合を先に直すべきことだと思うけど!・・・
30225 Re:項目のソースを変数で指定するには 「コマンド」、「オブジェクト操作 設定」、それとも? ONnoji 2005/06/15-00:01
記事番号30224へのコメント
hidetakeさんは No.30224で書きました。
>私は桐ver8初期の時代から、変数でオブジェクト名およびソースの値を与えて
>処理していますが、何も問題になったことはありません。

私も全く同じ意見です。
何の問題もなかった思います。
というより、バンバン使っていますよ。

>私は特に問題は感じていないので、
>わざわざコマンドコマンドを使うまでのことも無いような気がします。

この件も全く同感です。


30228 Re:ありが アックン 2005/06/15-11:32
記事番号30222へのコメント
Saiさんはちっとも悪くないですよ。
桐の用語を気にしていたら質問も回答も書きにくい雰囲気になりますし、そういったことは気にしないで、どんどん書いてくださいね。
やりとりしながらお互い理解を深めていけるといいですね。

>その他では、どんな場合に使うのか、さっぱりわかりません。
「コマンド」コマンドを使わないとできないこともありますから、
そういうときに限って使うといいでしょうね。
例をひとつあげておきます。

配列変数 &売上 を宣言するときは、ふつうこう書きますよね。

 var 固有,数値{ &売上[3]={10,20,30} }

それでは、
もし項目[A]に入力された文字列(項目値=セルの値)を変数名にして変数宣言したいとします。
未知の文字列が入力されることがあります。
となると、上のように &売上 というふうに変数名を直接書けませんね。
かといって「変数宣言」コマンド内では計算式を使って変数名を記述することができません。
ここで行き詰まってしまいます。

そこで「コマンド」コマンドを使って、
「変数宣言」コマンドの命令文を計算式で作ってやれば、
その「変数宣言」コマンドを実行してくれます。

 コマンド "var 固有,数値{ &"+[A]+"[3]={10,20,30} }"

アックン(=^・^=)
30229 Re:項目のソースを変数で指定するには 「コマンド」、「オブジェクト操作 設定」、それとも? アックン 2005/06/15-13:14
記事番号30225へのコメント
ONnojiさん、hidetakeさん、こんにちは。
ぼくは、objectだけでも、evalでも、どっちでもいいと思ってます。
どのような支障があるかは、Saiさんにサポートに問い合わせてもらってみては。

アックン(=^・^=)
30230 objectだけでも、evalでも、どっちでもいい ONnoji 2005/06/15-20:40
記事番号30229へのコメント
アックンさん、こんにちは。

ONnoji です。

>ぼくは、objectだけでも、evalでも、どっちでもいいと思ってます。

私も同意見です。(^^v
ですから、決して誤解しないでくださいね。

>どのような支障があるかは、Saiさんにサポートに問い合わせてもらってみては。

仰る通りに、まさしくその通りですね。(@_@)

しかし、当事者間のやり取りで、不幸にもボタンの掛け違えがあったとすれば、
eval が良くて、object はイマイチみたいな回答が出るかもしれませんね。(>_<)
しかし、詳しくは分かりませんので、私としてはこれ以上の詮索はしません。

<追伸>

なお、皆様に誤解のないように書き添えますが、
ONnoji の拙作:INF_Tools は今回の話題と全く無関係であることを明言させていただきます。
このことは、Sai氏 に確認済みです。


30233 またまたありがとうございます Sai 2005/06/15-22:49
記事番号30228へのコメント
アックンさん
「コマンド」コマンドの使用例、ありがとうございました。
少し、イメージがつかめたような気がします。

> やりとりしながらお互い理解を深めていけるといいですね。

はい、今後ともよろしくお願いします。

30234 ご意見、助言をいただいた皆様に感謝とお礼を申し上げます。 Sai 2005/06/15-22:57
記事番号30219へのコメント
hidetakeさん

> 私は桐ver8初期の時代から、変数でオブジェクト名およびソースの値を与えて
> 処理していますが、何も問題になったことはありません。

> わざわざコマンドコマンドを使うまでのことも無いような気がします。

ONnojiさん

> 私も全く同じ意見です。
> 何の問題もなかった思います。
> というより、バンバン使っていますよ。

お二人の経験に裏打ちされたご意見、とてもありがとうございます。


アックンさん

> ぼくは、objectだけでも、evalでも、どっちでもいいと思ってます。
> どのような支障があるかは、Saiさんにサポートに問い合わせてもらってみては。

すいません、今回はご容赦ください(私のレベルを越えています)。


ONnojiさん

> INF_Tools は今回の話題と全く無関係であることを明言させていただきます。

はい、全く関係ありません。
いつも便利に使わせていただいているのですが、今回 改めて便利さを実感しつい記述してしまいました。

自分の知らないことをしているときには、『本当にこれでよいのだろうか?
もっと良い方法があるのではないか?』など、いつも不安になります。

今回は、皆様からたくさんのご意見、助言を頂き、とても感謝しています。
「コマンド」コマンド、多少なりともイメージがわかったような気がします。
また、なにがしらの安心も覚えております。

今後ともよろしくお願いします。

30276 変数は直接入れないほうが コルネ 2005/06/17-16:57
記事番号30219へのコメント
もう過去の話題になってしまっていますが、、^_^;
原則、オブジャクト操作の属性値に変数を直接入れないほうが良いですよ。
代入前後に変数の内容が変化するかもしれませんから。
ヘルプにあるように計算式で値を指定。
変数単独でしたらコマンドコマンドを使って計算して(内容を取り出して)代入するのが良いです。

桐の値渡しと参照渡しが、どれほど厳密か解りませんが、ヘルプ通りにした方が問題ないと思いますよ。

30284 Re:変数は直接入れないほうが 桐使い 2005/06/19-13:32
記事番号30276へのコメント
コルネさん

>もう過去の話題になってしまっていますが、、^_^;
>原則、オブジャクト操作の属性値に変数を直接入れないほうが良いですよ。

正解です。
30221 ありがとうございます Sai 2005/06/14-21:24
アックンさん

早速のレスありがとうございます。

まず、項目名という表現について、正解だというご指摘ありがとうございます。
桐の用語は細かいので、文章で表現するときには誤解が生じやすく大変です。
(よくわかっていない私が悪いのですが)。

さて本題です。
>「コマンド」コマンドを使うやり方は、次のように書きます。
ありがとうございます。使い方を具体的に教えて頂き大変助かりました。

早速、記述を変更しました。動作も、問題ありません。

>ユーザーサポートの人が「コマンド」コマンドなら支障がないと言ってい
>るのでしたら、「コマンド」を使えばいいだけの話です。
全くそのとおりですね。


実は、アックンさんに
>(1)こういうときは「コマンド」コマンドを使うのがふつうのやり方ですと。
>(2)Saiさんが使っている方法だと、フォームの設計や環境によっては、
とご指摘いただき、ハッとしました。

事がわかった方が読むと、意味を取り違えることがないですね。


実は、サポートの方から書いて頂いた表現を取り違えていました。
*恥ずかしいから詳しくは書きませんが (;^_^A アセアセ…

ただ、今回の場合「コマンド」コマンドを使うということがわかりました
が、
その他では、どんな場合に使うのか、さっぱりわかりません。

目の前の お勉強課題が、一つ増えました。
 

戻る

戻る