過去の桐井戸端BBS (桐ver.8)
5370 変数を使用する計算が出来ない TOSHI 2000/03/31-15:21
いつもおじゃまします。
私の廻りには先生がいなくて、大変助かっています。
さて、今ぶつかっている問題がありまして助言をよろしく・・・
テキストボックス、オブジェクト属性のソースへ
項目値と変数へ代入された数値を使い計算をしたい

たとえば

[項目値a]-[&変数値]・・・・結果が表示されない
[&変数値]のみ・・・・数値は表示される
[項目値a]のみ・・・・数値は表示される

ちなみにフォームは伝票形式のフォームでレコードが移動すると
変数値がかわります。


5372 Re:変数を使用する計算が出来ない 宮城 2000/03/31-16:10
記事番号5370へのコメント
TOSHIさん、こんにちは。

>[項目値a]-[&変数値]・・・・結果が表示されない

これは「作法」というものでして、「aの値を変えたことにより、
テキストボックスのソースに書かれた計算式実行結果を反映して
表示し直しなさい」と命令してやらないとだめなんです。

具体的には、フォーム定義で[項目値a]のテキストボックスの
オブジェクト属性→イベントタブ→イベントで「ソース値更新」に
チェック後ダブルクリックでKEVを作りたいといってくるので適当な名前をつけます。

手続き定義開始 テキスト_なんとか::ソース値更新()


手続き定義終了

となると思います(ここでは全角にしてます)。

この間に、メソッド呼び出し @テキスト_問題のテキストボックス.再描画()
(@テキスト_問題のテキストボックスは@フォームでも可。)

実はこれだけのことです。いかが?
5375 Re:変数を使用する計算が出来ない TOSHI 2000/03/31-23:57
記事番号5372へのコメント
宮城さん、早速の助言ありがとうございます

もうすこしお伺いしたのですが

厳密には今のフォームの現状は
メインとサブを使ったもので、サブの合計金額を
メインの1レコードの項目金額と計算させメイン側のフッターへ
表示するとゆうものです。

メイン・・一覧表形式
サブ・・・伝票形式

ご指導の通りイベントの設定をしましたが、レコードを変更したときの
計算が安定せずフォームとにらめっこしています。
かなり疲れました。

何か良き知恵をお貸しください。

よろしく・・


5377 Re:変数を使用する計算が出来ない 宮城 2000/04/01-17:41
記事番号5375へのコメント
TOSHIさん、サブフォームに品名、単価、数量、金額があり、
サブのフッターに#合計(金額)、メインのフッターにテキスト
ボックスが2つある、というような感じですか?

メインフッターのうち片方のソースは項目のようですが、
サブでの品名(コードでしょうけど省略)・数量の入力から項目への反映はそもそもどういうからくりなのでしょう?

まずそのあたりからうかがったほうがよろしいような気がします。

5384 Re:変数を使用する計算が出来ない TOSHI 2000/04/02-11:01
記事番号5377へのコメント
宮城さんわかりずらくてすみません。
内容は次の通りです。

全体フォーム・・
メイン(一覧表形式)のヘッター部を広く取り、そこへサブフォームをセットし
メインと、サブのリンク項目は工事番号です。

サブ・・(伝票形式)TBLは結合表で書き込み可能
     グループ項目=工事番号
    テキスト項目=会社名、金額(外注費)
    集計項目=金額(外注費)
    

メイン・・(一覧表形式)TBLは結合で表書き込み不可 
    テキスト項目=工事番号
    ヘッター部
     テキスト項目=材料費、労務費、経費、外注費

ここでやろうとしていること・・
サブの集計項目=金額(外注費)をメインの外注費へ足したい・・これがねらい
現状・・・
サブ側で外注費を変数へ代入すし、
メイン側の外注費オブジェクトの計算式にて足す。
これがうまくいかない。(変数値の表示はできるが計算ができない)
このくらいで状況がわかりますか
わかればよろしく・・


5386 Re:変数を使用する計算が出来ない 佐田 守弘 2000/04/02-11:35
記事番号5384へのコメント
TOSHIさん
少し状況が分かって来ましたが、まだ原因を推定できる状態ではありません。
フォームを実際に見ないと何とも言えないのかも知れません。
取り違えているために多分に外しているかも知れませんが、チェックしてみてほしいポイントを
思いつくままにいくつか述べます。

@サブフォームの場所
サブフォームがメインフォームのヘッダとフッタに掛っていると、期待通りに動かない場合があります。
サブフォームはメインフォームの明細部の中に入れてみて下さい。

Aメインフォームの編集対象表
更新不可能な結合表が設定されているためかも知れません。更新可能な結合表ないし通常の表で試してみて下さい。

Bサブフォームでの変数への値の代入の方法
 >これがうまくいかない。(変数値の表示はできるが計算ができない)
の意味は、変数には何らかの値が入っているが、値が違っているという意味ですね。
サブフォームの外注加工費の代入がうまくできていないという意味でしょうか。
であるとしたら、どの様な方法でフォームの中で変数に値を代入しておりますでしょうか。
また、変数に代入されている値から、どの部分での代入なり計算ができていないかの推定はできないでしょうか。

何となくBで外注費の合計値を変数に代入する部分に誤りがありそうな気がしています。

佐田守弘(KS-00119)
5389 Re:変数を使用する計算が出来ない su 2000/04/03-02:15
記事番号5384へのコメント
TOSHIさんはじめまして。
結合表で試したことはないのですが、テキストの項目名がサブフォームのオブジェクト名と一緒だとして、
また、結合表のファイル名が"メイン"だとして、サブフォームの[金額(外注費)]オブジェクトの
ソース値更新イベントに下記のように設定してみてはいかがでしょうか。

手続き定義開始 金額(外注費)::ソース値更新()
メソッド呼び出し @金額(外注費).グループソース値取得( &金額(外注費) ,0 )
メソッド呼び出し @工事番号.グループソース値取得( &工事番号 ,0 )

結合 "メイン"
 検索 [工事番号] {&工事番号 }
  行訂正 [金額(外注費)]=&金額(外注費)

手続き定義終了

5394 Re:変数を使用する計算が出来ない 宮城 2000/04/03-16:42
記事番号5384へのコメント
伝票IDをキーにしたメイン・サブフォーム。メインは伝票マスタ、サブは売上明細です。
(佐田さんのサイトからいただいたサンプルをちょっとだけいじったものです。)

サブのフッターにソースを#合計([金額])としたテキストを配置、もう一つ、
ソースを#set("合計値",#合計([金額])としたテキストを配置。
これは&合計値に取り込むだけのダミーにつき、不可視でもするのでしょう。

さて、メインのフッターにテキストボックス3つ。ある表の項目[なんとか]、
&合計値、[なんとか]−&合計値をソースとします。

サブの[金額]にファミリーを設定。フォーカス喪失時に

編集表 "伝票マスタ"
メソッド呼び出し @フォーム.描画更新()
メソッド呼び出し @フォーム.再描画()

続いてメインフォームでレコード移動時に

メソッド呼び出し @フォーム.描画更新()
メソッド呼び出し @フォーム.再描画()

これでまともに動いているように見えますが、いかがでしょう。


5397 Re:変数を使用する計算が出来ない 宮城 2000/04/03-18:00
記事番号5394へのコメント
すみません。常に正常とは限らないようです。何回かやってるうちに、
&合計値のテキストは正常に表示しながら、計算させるテキストの表示
がおかしくなってきました。なんと、前回の&合計値と計算しております。(;_;)

5412 Re:変数を使用する計算が出来ない TOSHI 2000/04/05-09:17
記事番号5370へのコメント
皆さん、いろいろアドバイスありがとうございます。

皆さんのアドバイス通りやっては見ましたが、現在作成中の
一括処理にイベントをプラスしていくと、一括処理時にエラーが
出たりしましたので、フォームの作り方を考えなおし、サブの値を
変数へ代入し、メインのフッタに持っていくのをやめ、逆に、メインの
値を変数へ代入し、サブのフッタに持っていくようにしたところ、
イベントなしでうまく表示できています。
少しこれで様子をみようと思います。
それでは、また・・・・

5413 Re:cmdとkevの混在 悲しげ 2000/04/05-11:55
記事番号5412へのコメント
どもっ、TOSHIさん、

>一括処理にイベントをプラスしていくと、一括処理時にエラーが
>出たりしましたので、

直接関係ないことですが、私の場合、

  「cmdとkevの混在は難しい」

と云う先達のお言葉を信じ切って、cmdはcmdのみ、kevはkevのみで
作るようにしています。が、一般的ではないかもしれない(実は一般的にそう云えるのかもしれないし、
実はよく判らない)です。(^^;)

でも、現在までの経験では、cmdを使わず、かつ「ウィンドウ作成」も使わず、
「フォーム呼出し」オンリーで走っていても、かなりのことができています。

5415 Re:cmdとkevの混在 TOSHI 2000/04/05-13:22
記事番号5413へのコメント
悲しげさん、今日は

実は私も、「フォーム呼出し」オンリーで、今作成している一括処理を変更しようと勉強中です。
イベント内で一括処理の操作をそのまま持って行けたら、時間がかからないと思っていますが、
無理なような気がします。

そして、私の一括処理は、「ウィンドウ作成」を使わない、「フォーム呼出し」
オンリーの一括処理です(cmdをイベント風に使っています)。
これだと作成が早く解りやすい。
一つの難点は、桐本体を最小表示にしての実行で、処理中の時にフォームが
出ないことです。

だれか、桐を見せずに処理中の時にフォームを出せませんか。

ではまた・・・






5423 Re:cmdとkevの混在 悲しげ 2000/04/05-17:44
記事番号5415へのコメント
どもっ、TOSHIさん、

>そして、私の一括処理は、「ウィンドウ作成」を使わない、「フォーム呼出し」
>オンリーの一括処理です(cmdをイベント風に使っています)。
>一つの難点は、桐本体を最小表示にしての実行で、処理中の時にフォームが
>出ないことです。
>だれか、桐を見せずに処理中の時にフォームを出せませんか。

私の場合は、メインメニュー的なフォームから子的なフォームを
「フォーム呼出し」して使っています。(cmdからではなく)
この際に、一番最初に開くメインメニュー的なフォームの形式を
「オーバーラップ」に指定しておくと、そこから呼び出す子フォーム含めて、
(起動時を除いて)桐を一切見せない、つまり背景がデスクトップとなったままで
動かすことが、一応はできます。

5424 Re:cmdとkevの混在 悲しげ 2000/04/05-17:46
記事番号5413へのコメント
ちょっと嘘でした。
cmdは少しは使っていました。
ただし「ライブラリ」コマンドで。(^^;)

5438 Re:桐を見せないでフォームを使う 悲しげ 2000/04/06-20:16
記事番号5423へのコメント
どもっ、タイトルの件につき、先に私は「オーバーラップ」フォームが
いいんじゃないかと書きましたが、「ポップアップ」の方に宗旨替えします。(^^;)
詳細は、【多遊】さんの掲示板の#834をご覧いただくとして、要点だけ云いますと、
最初に壁紙的なフォーム(ポップアップ形式)を最大化表示させておいて、
そこから本体処理的なフォームを子フォームとして「フォーム呼出し」する、と云う使い方です。
残念ながら、cmdを使わない方での推奨ではありますが。(^^;)


5445 サブフォーム合計値のメインフォームへの取り込み 宮城 2000/04/07-15:02
5397があまりに納得いきませんでしたので、管理工学に問い合わせました。

********私の質問メール*******************

挙動がよくわかりませんので、ご教授ください。

伝票IDをキーにしたメイン・サブフォーム。メインは伝票マスタ、サブは売上明細です。
(佐田先生のサイトからいただいたサンプルをちょっとだけいじったものです。)メインフォームは売上伝2.wfmです。

サブのフッターにソースを#合計([金額])としたテキストを配置、もう一つ、
ソースを#set("合計値",#合計([金額])としたテキストを配置。
これは&合計値に取り込むだけのダミー。

さて、メインのフッターにテキストボックス3つ。表の項目[目標]、&合計値、[目標]−&合計値
(これがテキスト_23)をソースとします。

サブの[数量]にファミリーを設定。フォーカス喪失時に

手続き定義開始 ファミリ_1::フォーカス喪失(文字列 &取得オブジェクト名)
 メソッド呼び出し ハンドル=&hwindow,@フォーム.変数変更()
 メソッド呼び出し ハンドル=&hwindow,@テキスト_23.再描画()
 メソッド呼び出し ハンドル=&hwindow,@フォーム.描画更新()
手続き定義終了

これでサブ側で数量を更新してやりますと、&合計値をソースとしたテキストは
予想通り更新されますが、[目標]−&合計値のテキストボックスは直前の&合計値
により計算しているようです。あえて当該テキストをさらに再描画させてみようと上記表記としても同様になります。

どこに問題があるのでしょうか?

よろしくお願いします。

********管理工学の回答メール(抜粋)*************

1.明細のフッタ部にある合計用の項目を単に &合計値 を表示する領域に変
  える(#代入 を使用しない)
2.合計値が変わったときに表示を更新する手続きを作成
     項目集計 [金額]
     メソッド呼び出し ハンドル=&hwindow,@フォーム.変数変更()
     メソッド呼び出し ハンドル=&hwindow,@フォーム.描画更新()
3.2.のイベントを呼び出すタイミングを,明細部フォームの
    a.グループ移動
    b.行訂正終了
    c.行追加終了
  で行う

以上お試しください。

********結果および愚考********************

まともな動きとなりました。これが「お作法」というもののようです。
さて、なぜでしょう(はっきりとは書いてありません。(;_;) )?

「#代入」がガンらしいですね。これにより、二通りの&合計値が発生してしまった
(ホンマか?)ということでしょうか。諸先輩がたのご見解をたまわりたく。
5446 Re:サブフォーム合計値のメインフォームへの取り込み 宮城 2000/04/07-15:52
記事番号5445へのコメント
「行追加終了」じゃなくて「行挿入終了」のようですね。
5447 Re:サブフォーム合計値のメインフォームへの取り込み 宮城 2000/04/07-16:37
記事番号5446へのコメント
「行削除」と「行復活」に対応できていないようです。
5449 Re:サブフォーム合計値のメインフォームへの取り込み bonito 2000/04/07-16:54
記事番号5447へのコメント
宮城さん、こんにちは。
#5445の件は私には難しすぎてコメントできませんが…、

>「行削除」と「行復活」に対応できていないようです。

でしょう、でしょう、でしょう・・・・。
何故、イベントハンドラに「行削除後」がないの。>K3
そんだけです、すみません。   <(_ _)>

5450 Re:サブフォーム合計値のメインフォームへの取り込み 宮城 2000/04/07-16:55
記事番号5447へのコメント
たまらないけど、「レコード移動」しかないのでしょうか?

5454 Re:サブフォーム合計値のメインフォームへの取り込み bonito 2000/04/07-21:17
記事番号5450へのコメント
宮城さん、ありがとうございました。確認致しました。

[注]みなさまへ
   内緒でサンプルを送って頂きました。(内緒になってないって)

何故、前回の&合計値なんだろう (?_?)

ただ、K3の回答の2番、項目集計[金額] はちょっと安易だろう、
(いつも値が代入される組込変数とも限らないし)と思って
メソッド呼び出し ハンドル=&hwindow,@サブフォーム_11.@テキスト_19.
ソース値取得(&合計値,0) と致しました。
っでついでに、テキスト_19.の値が変わった時だけこの変数をなんとか
するKEVを呼び出せばいいんじゃないかと、いろいろ探しましたが、
これも宮城さんがおっしゃるとおり、どうもなさそうです。
(ソース値変更とか・・・とかみんな会話入力時に限るのネ)

何の情報もないコメントで済みません。
もう少し調べて、出直します。

5455 Re:サブフォーム合計値のメインフォームへの取り込み 宮城 2000/04/07-22:11
記事番号5454へのコメント
出自は冒頭で述べたとおりのものです。ちょっと「二次配布」みたいで気がひけますが、
動作確認用ということで、佐田先生のご了解いただけるであろうと「勝手」に判断して・・・。

5490 Re:サブフォーム合計値のメインフォームへの取り込み 宮城 2000/04/10-13:46
記事番号5447へのコメント
K3から回答いただきました。

>行削除・行復活を行ったことをイベントとして認識することはできません。各作
>業をコマンドボタンに登録し、その作業後にイベントを実行させることで対応く
>ださい。

う〜ん、「無条件降伏」みたいですね。イベントだらけになるけど、「レコード」
移動しかないみたいです。

戻る