過去の桐井戸端BBS (桐ver.8)
6632 メイン&サブフォームでの項目値取得について 今村 誠 2000/06/27-15:54
依頼主と届先と請求先があります。
普段は依頼主と請求書の宛名は一緒なのですが、
たまに「会社宛に請求書を書いて送って下さい」となったりします。
モーダルフォームで請求先入力WFMをあけてその都度訂正するのですが、
印刷を考えると常に請求先に対して請求書を出すのが良いと思います。
しかし、メイン&サブフォームには請求先が入る余地がなく
現在は、印刷用の項目を、作成して、請求先に名前がなければ
印刷請求先印刷住所1印刷住所2などを作って、
依頼主名を印刷するのか請求先を印刷するのかを計算式で設定しています。
 依頼主を入力し届先にフォーカスを移動する項目のソース値更新イベントで
請求先に何も書いてなければ依頼主の名前と住所を請求先に項目値代入し
請求先の名前があった場合、何もせずに届先の入力に移りたいのですが、
表示されていない項目でも、更新モードから表示モードに切り替えてしまうと
取得できそうな気もするのですが………。

依頼主tblには依頼主名 請求先名 印刷請求先名
住所1 請求住所1 印刷住所1
ここの印刷請求先名と印刷住所1と印刷住所2を項目削除して
請求先に一本化したい。
印刷ボタンを二つ作って依頼主用請求書 請求先用請求書もありかなとも思いますが
そうするとレポートも二ついるのでメイン&サブフォームの画面の中でスマートにできないかなと思っています。
 良きアドバイスご指導をお願いします。
メソッドはあまりわかりません。V8SP4です
6633 Re:メイン&サブフォームでの項目値取得について bonito 2000/06/27-17:18
記事番号6632へのコメント
今村さん、こんにちは。

もっとも安直な考え方として
>印刷ボタンを二つ作って依頼主用請求書 請求先用請求書も
>ありかなとも思いますが

とありますし、レポート印刷が前提なら印刷用の余分な項目は
一切持たずレポートのテキストオブジェクトに計算式を設定するというのはどうでしょうか?
例えば宛名の欄には #条件選択([請求先名]="",[依頼主名],1,[請求先名])
住所1欄は #条件選択([請求住所1]="",[住所1],1,[請求住所1])とか…、
(#未定義値変換でもいいかもしんない)

WFM上でも表示確認したいなら、同じ様な計算式のテキストオブジェクトを適当な位置に配置すれば良い…
と思うんですけど…。
安直過ぎるかも… (^^;

PS:今日は半日、結合表の排他制御と廃棄終了処理ではまってた。 (T_T)

6641 Re:メイン&サブフォームでの項目値取得について アックン 2000/06/28-09:52
記事番号6632へのコメント
今村 誠さん、こんにちは。

メインフォームで[依頼主]→[請求先]→[届先]の順に入力したいときは、
[請求先]のソース値更新イベントを次のようにしてください。

手続き定義開始 t請求先::ソース値更新()
 if (.not[請求先])
   項目値代入 [請求先]=[依頼主]
 end
手続き定義終了


6665 あっくんさんもbonitoさんもありがとうございました 今村 誠 2000/06/29-22:04
記事番号6641へのコメント
アックンさんこんばんはいろいろ試していてお礼が遅くなりました。
教えていただいた方法で計算式を設定した項目値代入ができました。
モーダルフォームの方にも同じような式を定義してコメントを作成し
請求先を訂正したらチェックするようにしました。
bonitoさんもコメントありがとうございました。
私も最初はそれ(#条件選択)で作ったのですが、メイン&サブフォームの場合
表引きでないと届先tblからの印刷はできません(断定はまずい?)。
rptの式が200文字を越えてしまうので印刷用の項目を作ってしまった。
でも請求先や請求住所だけですむのであればいいなと思って投稿した次第です。
請求先は葉書や封筒印刷の時に住所とのバランスで中央寄せがいいと思ったので
適当な文字間が空くように均等割付をしています。
メイン&サブフォームの最後の項目に以下の式を記述しました。
手続き定義開始 t郵便::ソース値更新()
if (.not[請求先])
   項目値代入 [請求郵便]=#全角(#COND([請求郵便]="" .AND [郵便]<1,"",
[請求郵便]="",#STR([郵便],7),1,[請求郵便]))
   項目値代入 [請求市]=#cond([請求市]="",[市],1,[請求市])
   項目値代入 [請求先]=#COND(#桁数(#S(#TRIM([得意先名],3)," "," "))
>22,#S(#TRIM(#COND([敬称]="",[得意先名]+" 様",1,[得意先名]+[敬
称]),3)," "," "),1,#CAT(#複写(" ",#切り捨て(((22-#桁数(#S(#TRIM([得意
先名],3)," "," ")))*2/5),0)),#S(#TRIM(#COND([敬称]="",[得意先名]+"
様",1,[得意先名]+[敬称]),3)," "," "),#複写(" ",#切り上げ(((22-#桁数(#S
(#TRIM([得意先名],3)," "," ")))*3/5),0))))
end
手続き定義終了

戻る