過去の桐井戸端BBS (桐ver.8)
16494 イベントでリターンキーの押し下げみたいな設定はできますか しぼうかん 2002/06/29-23:11
こんにちは。いよいよワールドカップも決勝戦が行われてしまいます。
私は日本とイングランドを応援してましたが今まで楽しませてもらいました。

イベントハンドラを使って以下の事をしたいのですが

   編集初期値式
[A]
[B]…#COND([A]=10,#直前値([B],0),1,#直前値([B],0)+1)
[C]…#COND([A]=10,[D],1,[B])      
[D]…#表引き([A],=,"表引き用.TBL",[A2],[B2])
  …表引き用.TBLには[A2],[B2],[C2],[D2]の項目があります。

[A](文字列),[B](数値),[C](数値),[D](数値)の項目を持った納品.TBL
を編集対象表とする納品.WFMにグループ項目オブジェクトとして
[A],[B],[C]を配置して[A],[B],[C]の順で入力を行うと
それぞれ計算式通りの正しい値が入力されますが[B]の項目は[C]の値を
出すためのみに必要な項目なので[A],[C]の順で[B]をとばして入力して
[C]に正しいを入力したいのですが,
単純に[B]をとばして[C]を入力すると[B]の計算が実行されず
[B]の値を使って計算をしている[C]も正しい値が入力されません。

[C]の入力前イベントで何とか出来ないかとやって見ましたが出来ません。
コマンドでリターンキーの押し下げみたいな設定が出来れば何とかなる様な気がしますが、
どなたか解決方法を教えていただけませんか。よろしくおねがいします。
16495 Re:イベントでリターンキーの省略は? 佐田 守弘 2002/06/29-23:22
記事番号16494へのコメント
しぼうかんさん
多分、2つ前のスレッドの
#16487「システムの組み方のポイント-佐田 守弘」
に書いてある答えが参考になると思います。

佐田守弘(KS-00119)
16496 理解力が弱くてすいません しぼうかん 2002/06/30-00:01
記事番号16495へのコメント
佐田 守弘先生前回につづいてまたも早速のご返答ありがとうございます。

>多分、2つ前のスレッドの
>#16487「システムの組み方のポイント-佐田 守弘」
>に書いてある答えが参考になると思います。
>

前回質問時より40時間分ぐらい勉強して(中身はうすいのですが)
すこしはイベントハンドラの事を理解つもりなのですが、まだまたの様で佐田先生の返答"システムの
組み方のポイント"と"補足表データの持ち方"を読ませて頂いたのですが
どの部分にヒントがあるのかそれさえもわかりません。
ウインドウ作成とウインドウ会話コマンドを使えば良いという事なのでしょうか?
16499 メイン&サブが簡単なのでは 今村 誠 2002/06/30-21:48
記事番号16494へのコメント
しぼうかんさんこんにちは、まだ請求書番号で悩んでおられるように思えます。
桐の図書館 http://www.nsknet.or.jp/~habata/kiri6hon.htm
の「桐ならできる第4弾販売管理」 笠原由紀子(著)の200ページ前後が参考にならないでしょうか。

一つの案ですので、うまくいくかは判りません。
フォームをメイン&サブフォームで作ります。
メインもサブも伝票形式フォームが便利だと思います。
メインの売上ヘッダ.tblは左から[かな][得意先名][締め日][請求書番号][売上日]
としてテキストにします。 [かな][得意先名][締め日]は繰り返し表示するにして、
他は繰り返し表示はしなくても良いのではないかと思います。
右半分にサブフォームとして、売上明細.tblを編集対象表とする"売上明細.wfm"を
貼り付け、リンク項目を設定します。
サブフォームタブのグループ値リストに[売上日][請求書番号]とします。
(上の二つは右端の…から選ぶと貼り付けられます。)
グループ操作は禁止サブフォームのグループ変更は自動です。
売上明細.wfmはヘッダに[売上日][請求書番号]だけにして、
フォームヘッダ部のオブジェクトのリストのセクションタブの
「画面表示する」のチェックはなくても良いと思います。
サブフォームの項目はヘッダに使うグループ項目の[請求書番号]と[売上日]を
明細部には[分類]や[商品名][単価][数量]等必要な項目を足します。
追加売上は納品書番号の変更はないので簡単ですが、新規のお客様などの場合
「新規請求書」の名前でコマンドボタンを作り、請求書番号を項集計して
&最大値に1を足した数を求める一般手続きを書いてはいかがでしょうか。

ご質問される場合、当たり障りのない範囲で連想しやすい名前の項目名が良いと思います。

伝票フォームのグループ項目で直前値は使えないと思います。
>[C]…#COND([A]=10,[D],1,[B])
文字列の[A]と数値の10は比較できません。
16502 Re:メイン&サブが簡単なのでは しぼうかん 2002/07/01-19:52
記事番号16499へのコメント
前回に続きまたお返事頂きありがとうございます。
またご迷惑をおかけします。

>文字列の[A]と数値の10は比較できません。
単純化して説明しようとして記入ミスしました。数値は#文字列で変換してます。(^^;)

説明不足だったので補足させて頂ます。
桐のサンプルデータ"印刷伝票"の中の販売伝票の中の"HANBAI.wfm"とseikyu.wfmを改良して
納品書と請求書の入力フォームを作ろうと思っています。
フォームには[納品書番号]、[納入月]、[納入日]、[納入日]、[締年]、[締月]、[締日]、[請求書番号]、
[請求書番号計算用項目1]他[納品書番号]に連番を付ける為のいくつかのグループ項目が有ります。
サンプルデータとの違いはいろいろあるのですが大きな違いはHANBAI.wfmで納品書番号と共に
請求書番号を入力することとseikyu.wfmで請求書発行日を入力する事です。

このうち頭を悩ませているのは納品書入力フォーム(編集対象表のTBLの名前は"納品書&請求書"とする)
への[請求書番号]入力です

たとえば6月5日にA社の納品書を1件入力し請求書番号を1071とすると
6月6日にB社の納品書を1件入力しようと請求書番号の項目オブジェクトにカーソルが移動すると
初期値として1072が入力され6月7日にA社の納品書を入力しようと請求書番号の
項目オブジェクトにカーソルを移動すると請求書番号の項目オブジェクトの初期値として
1071が入力され6月7日にC社の納品書を入力しようとすると1073が初期値として入力される。
そういう事をしたいのです
もちろん自分自身の表より表引きは出来ないのでフォーム終了イベントで計算項目を置き換えた後
同じ項目をもつ別の表(表引き用.tbl*但し項目計算式などは無し*)を開きその表に
現在の表のデータを読み込むというイベントハンドラを作りその表より表引きする事で
6月3日に入力するA社の請求書番号を1071にしています。
この計算をするために請求書番号の計算用項目を6つ作っています。

請求書番号計算用項目1(以下計1とする)の項目計算式  [得意先]+[締年]+[締月]
請求書番号計算用項目2(以下計2とする)の項目計算式  #cond(#直前値([計1],"")=[計1] .or #
表引き([計1],=,"表引き用.tbl",[計1],[納品書番号])><"" .and #表引き([計1],=,"表引き
用.tbl",[計1],[納品書番号]><[納品書番号],#直前値([計2],1000),1,#直前値([計2],1000)+1)

文章が長くなりましたので分割します。
16503 長くなったので分割しました しぼうかん 2002/07/01-19:54
記事番号16499へのコメント
請求書番号計算用項目3(以下計3とする)の項目計算式  #cond(#表引き([計1],=,"表引き用.tbl",
[計1],[納品書番号])><[納品書番号],#表引き([計1],=,"表引き用.tbl",[計1],[納品書番号]),1,[計2])

請求書番号計算用項目4と5は[計1],[計2]の項目計算式の"計1"という文字列を"計4"に"計2"を"計5"に
それぞれ置き換えてと同じ物をを編集初期値式にそれぞれ記述して納品書入力フォームのグループ項目として配置しました。


* [計2]は単純に表引きをするとフォーム終了イベントの計算項目の置き換えでで"納品書&請求書.tbl"の[計2]が
すべて"1000"になってしまうので[納品書番号]の違うレコードのみを表引きするように工夫して
入力済みデータに現在のデータと同じ会社の同じ締めの納品書データがある場合は直前値を
,無い場合は直前値に+1した数値を表示します。この項目は入力済みデータに無い新規データの場合に
請求書番号に連番をつける為だけの項目です

こうしておいて[請求書番号]には[計3]の項目計算式を編集初期値式に記述して
グループ項目として納品書入力フォームに配置して入力をしようと思ったのですが[納品書番号],[得意先],[締年]+[締月]…と順に入力するときに[計4]と[計5]の項目をグループ項目として配置して
この項目を入力後でなければ正しい[請求書番号]が編集初期値式として表示されないがこの[計4]と[計5]は
[請求書番号]の計算用の為だけの項目なので入力しないで[請求書番号]を正しく入力したいという事なのです。

説明べたな部分もありますがここまで省略しないで書くと[業者にたのんだら?]といわれるのが恐ろしいので
(会社の方針としてシステムを作って居るわけでは無く,自らの業務効率化と職場での桐の有効性の
評価の為に作っているので予算は通らないのです)出来るだけ問題を単純化して説明を簡単にした方が
返事を頂きやすいのではないかと思ったのですが,逆に問題の要点をつかみにくくして居たのかもしれません。

なお今村先生ご指摘のメイン&サブフォームのやり方につきましてはそういう物があることは知っていたのですが
どう使うのか知らず,まだ全く使った事が無かったので至急勉強して教えて頂いたとおりやってみたいと思います。
明日にはどうだったかをお知らせ致します。
16504 Re:御願い 今村 誠 2002/07/01-23:05
記事番号16503へのコメント
>なお今村先生ご指摘のメイン&サブフォームのやり方につきましてはそういう物があることは知ってい
先生ではないので、さんだけにしてください。
もっと詳しい方がたくさんいます。

請求番号についてですが、最初から1年分を得意先ごとに作ったら都合悪いのでしょうか、
請求書の番号を4桁とすると、お得意先が700件くらいですと12ヶ月で9400番まで
で収まりそうです。得意先にカウンター型のIDを作り、1〜12月までの請求書番号を
[ID]+1000=1月の請求書番号
[ID]+700×1+1000=2月の請求書番号
[ID]+700×2+1000=3月の請求書番号
これを得意先テーブルに項目として持っておけば表引きも簡単にできるのではないしょうか



16512 Re:御願い しぼうかん 2002/07/02-22:20
記事番号16504へのコメント
今村さんお世話になります。

請求書番号は入力済みのデータに会社名と締月が同じ物があった場合そのデータの請求書番号と同じ番号を初期値として
入力したいので、教えて頂いたやり方をやろうとしている方法にあわせて少し変更してメイン&サブフォームでやってみましたが
まだ出来ていません。

[納品書番号]をリンク項目として"納品書サブ.tbl"を対象表とする"納品書サブ.wfm"を
サブフォームとして持つ"納品書メインとサブ.tbl"を対象表とする"納品書メインとサブ.wfm"とを作り
その"納品書メインとサブ.wfm"で[請求書番号]を入力し…

ここまでは出来ました。[請求書番号]も編集初期値が使えるので投稿で説明した[計1],[計2],[計3]の項目を使って
期待通りに入力出来ました。

…終わった後コマンドボタンで"請求書入力フォームに移動しそこでは請求書発行日のみ入力すれば全ての入力が完了する…
とシステムを組みたいのですが、

今までのやり方(1つのtblを[納品書番号]でグループ化した納品書入力用のwfmと[請求書番号]でグループ化した請求
書入力用のwfmを使って納品書と請求書を発行しようとしていた。)

に比べて[請求書番号]の入力は無事に出来るようになったのですが納品書入力フォームから
請求書入力フォームへ移動した時に"納品書サブ.tbl"と"納品書メイン.tbl"に入力された
データを[請求書番号]でグループ化された状態でフォームの表示が出来る方法がまだわかりません。
ただ今日はじめてメイン&サブフォームのやり方を始めたのでまだ知らない機能があると思いますので、
2日ぐらい勉強するうち何か方法が見つかるような気がします。また2日ぐらいしたら報告致します。

*なお請求書番号を得意先ごとに作る方法は得意先が固定でなく1回限りの得意先や
毎月ありしかも納品書を納品日ごとに発行し月末に請求書を発行する得意先など不定なので
ちょっと無理そうな感じがします。
16513 Re:コマンドボタンの機能は? 今村 誠 2002/07/02-23:37
記事番号16512へのコメント
しぼうかんさんこんばんは
>…終わった後コマンドボタンで"請求書入力フォームに移動しそこでは
>請求書発行日のみ入力すれば全ての入力が完了する…とシステムを
>組みたいのですが、
このコマンドボタンはフォームの選択ということでしょうか?

 納品書はメイン&サブで入力後その画面からコマンドボタンでレポート印刷して、
請求書は結合表を使って印刷することになると思うのですが、
私は結合に関してはほとんど使用したことがないので、わかりません。
 納品書は売上日毎に発生すると思うので、都度印刷の必要がありますが
請求書は、締め日毎に印刷すればよいので、一括処理で締め日に該当する
売上明細テーブルのデータを、売上ヘッダテーブルと請求番号と売上日で
結合してヘッダテーブルの締め日を絞り込んでグループ毎に印刷することになると思うのですが、
この辺のことは、システム作りと密接に関係してくるのでもっと詳しい方にお聞きになられたがいいと思います。

 同一顧客に売上が毎日発生すれば、ヘッダテーブルは31件の行追加が
必要となり売上明細テーブルには、商品が納品書1枚に3件の明細があれば、
93行のデータが並びます。
 その二つのテーブルを結合すると、しぼうかんさんが伝票フォームで作られた内容と同じデータとなります。
 毎日の作業で必要なのは納品書の入力と印刷で、締め日毎に結合表で請求書を印刷することになります。

 昨日の書き込みを見ると、リンク項目は、請求書番号と納品書番号だけで、納品日や締め日はヘッダテーブルでいいように思います。
16518 お釈迦様の手のひらの上です しぼうかん 2002/07/03-19:37
記事番号16513へのコメント
今村さんお世話になっております。

請求書入力フォームへ移動する為のコマンドボタンは1行目は機能名:多重化フォーム編集、
パラメータリスト:請求書入力.wfm2行目機能名:閉じると言う物です。

結合表は桐v5の時に一度試しにやってみてファイルを開くだけで非常に時間がかかった経験が有り、
それ以来使えない機能と全然勉強しなかったのですがこういう風な使い方が有る事を初めてしりました。

と言うことは請求書入力フォームをメイン&サブフォームで何とか作れないかと思っていたのですが、
結合表を作らないとダメなのでしょうか?

もしそうなら結合表の勉強を始めなければ・・・

ゴールが見えたと思ったら中継地点だったという感じです。

明日また報告します。

16520 Re:お釈迦様の手のひらの上です 今村 誠 2002/07/03-22:10
記事番号16518へのコメント
しぼうかんさんこんにちは結合表でなくても併合でもできるとは思いますが、
納品番号で複写するのか、照合して結合するかの違いと思います。
結合の方が1万件くらいの明細でも2秒程度で終わるので、後の処理も速いと思います。

>と言うことは請求書入力フォームをメイン&サブフォームで何とか作れないかと思って
>いたのですが、結合表を作らないとダメなのでしょうか?

メインアンドサブで納品書はできますが、請求書は直接印刷できないと思います。
納品書の合計が請求書だと思いますので、レポートの明細に納品書番号や納品日を印刷しなくて良いのであれば
フォームの選択で印刷できるかもしれません。
でも普通は、締め月締め日を判断して、グループ毎に請求書を印刷すると思います。

いずれにしても、システム設計に関わることで、データ件数や、ネットワーク環境
などがありますので、これ以上お答えしてしぼうかんさんにご迷惑がかかるといけませんので、
これで終わりにしたいと思います。
 この井戸端を見ていらっしゃる方で、こういうフォームが良いとアドバイスを是非御願いします。

16526 今村さんありがとうございました しぼうかん 2002/07/05-22:52
記事番号16520へのコメント
今村さんこんばんは

未だシステムは完成していませんが、よく考えたら最初の質問よりずいぶん脇道にそれてしまった様です。
にも関わらず何度も丁寧で詳しいお返事ありがとうございました。
が、しかしメイン&サブフォームの使い方を知り、途中までは出来ていますのであきらめずにもう少しがんばってみます。
16551 今村さんへ結果報告です しぼうかん 2002/07/10-19:19
記事番号16520へのコメント
まだ全ての検証をしたわけでは無いのですが、
納品書入力フォームを納品書サブ.tblを対象表とする納品書サブ.wfmをサブフォームとし,
納品書メイン.tblを対象表とする納品書メイン.wfmをサブフォームとするメイン&サブフォームで
作り、[納品書番号]でリンクして,請求書入力フォームを納品書サブ.tblを対象表とする請求書サ
ブ.wfmをサブフォームとし,納品書メイン.tblを対象表とし[請求書番号]でグループ化する
請求書メイン.wfmをメインとするメイン&サブフォームを作り[請求書番号]でリンクさせ、
納品書メイン.wfmと請求書メイン.wfmをフォームの多重化機能をつかって行き来させる事によって
ほぼ思い通りのシステムを作る事ができました。
心配して頂いた請求書の印刷も出来そうです。

桐を使い始めて約10年で今年から初めてイベント機能をつかい会話処理以外をやってみて
改めて桐の奥深さと楽しさを知りました。
ただ桐のリファレンスはけっして初心者にとって簡単では無く、
もしこの掲示板が無ければイベントの入り口であきらめて会話処理にもどっていたと思います。
幅田さんこのすばらしい掲示板の管理をこれからもよろしくおねがいします。

16569 結果報告の一部訂正です しぼうかん 2002/07/12-19:46
記事番号16551へのコメント
納品書メイン.wfmと納品書サブ.wfmのメイン&サブフォームのリンク項目は[納品書番号]と[請求書番号]でした。
16581 Re:サブフォー選択も良いと思います。 今村 誠 2002/07/13-18:15
記事番号16569へのコメント
しぼうかんさんこんにちは、
>納品書入力フォームをメイン&サブフォームで作り、
      メインフォーム   リンク項目    サブフォーム
      納品書メイン.wfm  [納品書番号]   納品書サブ.wfm 
対象表   納品書メイン.tbl  [請求書番号]   納品書サブ.tbl

      請求書メイン.wfm  [請求書番号]   請求書サブ.wfm
対象表   納品書メイン.tbl           納品書サブ.tbl

>納品書メイン.wfmとをフォームの多重化機能をつかって行き来させる事によって
>ほぼ思い通りのシステムを作る事ができました。

多重化機能も良いと思いますが、メインテーブルの項目は変わらないと思いますので、
画面表示のON offでサブフォームを切り替えて、
請求書サブフォームは確認と印刷だけにされてはいかがでしょうか。
印刷レポートは請求書サブフォームの明細部に納品書番号を入れて表引きで
メインテーブルの日付を持ってくると、結合表はなくても、複合レポートで
できそうな気がします。
 表引きの式のオプション,1が日付を印刷するポイントになると思います。
1枚ずつチェックしながらだとこちらが簡単だと思います。
あと請求書発行日を納品書メイン.tblに設けて、発行をした行だけ色を変えるのも良いかもしれません。
16600 Re:サブフォー選択も良いと思います。 しぼうかん 2002/07/15-20:49
記事番号16581へのコメント
今村さんこんばんは

>>多重化機能も良いと思いますが、メインテーブルの項目は変わらないと
>>思いますので、画面表示のON offでサブフォームを切り替えて、

フォームの切り替えという機能は又しても知らなかったので過去の井戸端で調べてみました。
コマンドボタンのフォームの選択の事でいいんでしょうか。
なるほどこの方が良さそうです。(多重化の場合いったん現在のデータを保存終了しなければ
ならない為少し遅いようです。)

>>請求書サブフォームは確認と印刷だけにされてはいかがでしょうか。

はい、実は請求書は明細を印刷せず納品書控えと一緒に郵送または届ける方法なので請求書サ
ブフォームは確認と印刷の為だけに使っています。

>>請求書サブフォームの明細部に納品書番号を入れて表引きで
>>メインテーブルの日付を持ってくると、結合表はなくても、複合レポート>>でできそうな
>>気がします。

はい、ここはメイン&サブフォームを作る過程で気がついたのでそうしています。

>>表引きの式のオプション,1が日付を印刷するポイントになると思います。
>>1枚ずつチェックしながらだとこちらが簡単だと思います。

表引きの式のオプション,1とは?すいませんこの言葉の意味がわからないので調べます。

>>あと請求書発行日を納品書メイン.tblに設けて、発行をした行だけ色を変えるのも良いか
もしれません。

納品書メイン.tblに[印刷状態]という項目を作り印刷時にイベントハンドラで印刷済と入れる様にしていましたが,
確かに色も変えた方がいいですね。過去の井戸端にその方法があったので参考にして色も変えました。

心配りの行き届いた助言を何度も頂き本当に助かっています。m(_ _)m
言葉のお礼ぐらいしか出来ずすいません。
16605 Re:サブフォー選択も良いと思います。 今村 誠 2002/07/16-07:29
記事番号16600へのコメント
しぼうかんさんこんにちは
>>>多重化機能も良いと思いますが、メインテーブルの項目は変わらないと
>>>思いますので、画面表示のON offでサブフォームを切り替えて、
>
>フォームの切り替えという機能は又しても知らなかったので過去の井戸端で調べてみました。
>コマンドボタンのフォームの選択の事でいいんでしょうか。
>なるほどこの方が良さそうです。(多重化の場合いったん現在のデータを保存終了しなければ
>ならない為少し遅いようです。)

過去ログを参照してください
http://www.fuku3.com/~habata/kbbs/kakov8/06327.htm
16625 ゴール間近かな? しぼうかん 2002/07/17-00:13
記事番号16605へのコメント
今村さんこんばんわ

井戸端での探し方が不十分だったみたいです。
うーんちょっとわからないのですが
まだ試していないのですが"サブフォーム選択コマンドについて"で話されているのはメインフォームが
同じでサブフォームのみを切り替える方法についての様なのですが、
実際の納品書メイン.wfmと請求書メインwfmは表示項目が違います。
例えば納品書メイン.wfmには[納品書発行年]、[納品書発行月]、[納品書発行日]や
[納品書備考]などその他いくつかの請求書メイン.wfmには無いオブジェクトがあり請求書メイン.wfmには
[請求書発行年],[請求書発行月],…などがあり同一のフォームでは無いのでこの方法では違う様な?
納品書メイン.wfmと請求書メイン.wfmに共通するオブジェクトのみをメインフォームに持ち、違うオブジェクトは
それぞれのサブフォームに持つことは入力フォームを出来るだけ現物に似せる目的からちょっと問題があるみたいです。
また納品書メインと請求書メインのオブジェクトをすべて1つのメインフォームに統合して納品書と
請求書メイン.wfmとして作るとしても請求書メイン.wfmはグループ化されていて
納品書メイン.wfmはグループ化されていないので統合できない様な?…
(すいません気分を悪くしないで下さいね。)
ただ、また理解不足でピントはずれの事を言っているかもしれないので、1、2日試してがんばってみます。

しかしメイン&サブフォームにはいろんな使い方があるんですね。
しかしこれこそデータベースらしい機能で"かっこいい"いろんな使い方が有りそうです。

言葉だけのお礼よりも、もしよろしければ出来上がったシステム(今週中目標)をお送りしてもよろしいでしょうか。
(もちろんご意見を頂こうとかいうつもりはいっさい無く、ただこんなのが出来ましたとの紹介の為です)
16626 Re:ゴール間近かな? 今村 誠 2002/07/17-01:11
記事番号16625へのコメント
しぼうかんさんこんにちは、ゴール間近かなと思います。

>納品書メイン.wfmと請求書メイン.wfmに共通するオブジェクトのみをメインフォームに持ち、違うオブジェ
>クトはそれぞれのサブフォームに持つことは入力フォームを出来るだけ現物に似せる目的からちょっと問題
>があるみたいです。
ここ賛成です。

>また納品書メインと請求書メインのオブジェクトをすべて1つのメインフォームに統合して納品書と請求書
>メイン.wfmとして作るとしても請求書メイン.wfmはグループ化されていて納品書メイン.wfmはグループ化さ
>れていないので統合できない様な?…(すいません気分を悪くしないで下さいね。)
メインのグループ化はしたことがないので興味あります。

>ただ、また理解不足でピントはずれの事を言っているかもしれないので、1、2日試してがんばってみま
>す。
私の方が今回ははずれているようです。コマンドボタンの機能のフォームの選択がピッタリのような気がします。

>言葉だけのお礼よりも、もしよろしければ出来上がったシステム(今週中目標)をお送りしてもよろしいでし
>ょうか。(もちろんご意見を頂こうとかいうつもりはいっさい無く、ただこんなのが出来ましたとの紹介の
>為です)
もしお仕事に差し支えなかったら送って下さい。

戻る