過去の桐井戸端BBS (桐ver.8)
5524 一括処理中の検索wfmの方法 今村 誠 2000/04/13-20:19
prg.cmdから、伝票形式請求書wfmを使用してコマンドボタンに、日付検索の手続きをkevファイルに定義して、
売上.tblの[日付]項目を検索するwfmを作成して、その検索用のwfmを開くまではいいのですが、
それを閉じると、売上.tblも一括処理で、閉じてしまいます。
キー入力やメニューコマンドで開いたダイアログウィンドウは閉じても、
売上.tblは閉じないのですが、別のフォームを選んで閉じるボタンを押すと
一括処理の、フォーム形式編集コマンドで開いたフォームが、一緒に閉じてしまいます。
フォームからのkevで処理を選択してプログラムを組んだ方がよいのでしょうか、
一括処理(cmd)からでも、多重化や、非表示やウィンドを重ねたりして検索用の
wfmを使用して、検索用の比較式や条件登録ができますか?
検索用wfmの概要は年と月をテキストボックスで入力後その月のカレンダーを
右側に表示して、マウスか、キーで、日付入力用テキストボックスに絞り込みしたい
期間の開始日と終了日を入力する。
また、日付だけでなく、名前のテキストボックスも作成して、検索条件登録で、
該当レコードを絞り込む。
検索用のwfmのがあればメールを送って下さい
cobalt@mail.goo.ne.jp
5526 Re:一括処理中の検索wfmの方法 佐田 守弘 2000/04/13-22:29
記事番号5524へのコメント
今村 誠さん
一括処理からフォームを開く方法でシステムを組んでおられる様ですね。
さて、請求書のフォームから検索用のフォームを開く時にどの様な方法で開いておられますか。
@フォーム呼出しコマンドで検索様のフォームを呼び出した場合フォーム呼出しコマンドは、
会話処理でフォームを開くのと同じで、フォームを開くと表が自動的に開かれ、
フォームを閉じると表も一緒に閉じられるはずです。
Aウィンドウ作成コマンドでフォームを開く場合
一括処理の中からフォームを開く場合には、このコマンドで開いて下さい。
感覚的にはMS-DOS版の桐で、一括処理から表と帳票を開いて帳票編集を行うのと同じ様な形になります。

●検索用のフォームの例
私がシェアウエアとして掲載してあります名刺管理の中にも、汎用的な検索ルーチンが組み込んであります。

佐田守弘(KS-00119)
5527 Re:cmdで、じゃなくてすいませんが 悲しげ 2000/04/13-22:31
記事番号5524へのコメント
どもっ、今村さん、

>prg.cmdから、伝票形式請求書wfmを使用してコマンドボタンに、日付検索の
>手続きをkevファイルに定義して、売上.tblの[日付]項目を検索するwfmを
>作成して、その検索用のwfmを開くまではいいのですが、それを閉じると、
>売上.tblも一括処理で、閉じてしまいます。

おそらくcmdでは「ウィンドウ作成」コマンドでフォームウィンドウを作成しているのだと思われます。
で、この辺りの鍵は「編集表=する|しない」にありそうな気がしますが、実は私はよくわかりません。(^^;)
判らないならコメントするな、と云われそうですが、

>フォームからのkevで処理を選択してプログラムを組んだ方がよいのでしょうか

とありましたので、その線でコメントしてみます。
この場合は、まずメインメニュー的なwfm(a)をオープンするとします。
その中の例えばある牡丹から、伝票形式請求書.wfm(b)を「フォーム呼出し」します。
(b)と売上.TBLの関係がよく判りませんが、もし関係なければ売上.TBL表を別途開き、
関係あるのなら編集表を売上.TBLに移して、(b)のkevに記述した処理から
今度は売上日付項目検索.wfm(c)を「フォーム呼出し」します。
(c)において必要な処理を済ませた結果を----(c)を閉じることによって----(b)に戻って反映させます。
この場合、cmdも「ウィンドウ作成」コマンドも一切使わないで行うことができます。
私の場合、ちょっと変わり者でして、「ウィンドウ作成」コマンドは、
これを嫌って、今年になってから1回も使っていません。
気分としては「ウィンドウ作成」の呪縛から解放されている、ってとこです(^^;)。
イベントが「アクティブウィンドウ」非サポートであることの、これは功か罪か?

>一括処理(cmd)からでも、多重化や、非表示やウィンドを重ねたりして検索用の
>wfmを使用して、検索用の比較式や条件登録ができますか?

非cmdからでは、多重化は可能です(私は繁用しています)が、「フォーム呼出し」
されたwfmはモーダルフォームなので、非表示はできません。苦肉の策で最小化で逃げるしかなさそうです。
その後の方は意味がよく判りません。

>検索用wfmの概要は年と月をテキストボックスで入力後その月のカレンダーを
>右側に表示して、マウスか、キーで、日付入力用テキストボックスに絞り込み
>したい期間の開始日と終了日を入力する。
>また、日付だけでなく、名前のテキストボックスも作成して、検索条件登録で、
>該当レコードを絞り込む。

私なら、面倒なのでカレンダーを表示させたりせず、キー入力を使って、
開始年月日と終了年月日をダイレクトにテキスト入力すると思いますが(^^;)、
カレンダーを使う場合は、マウスクリックで年・月・日の値を変数に取得できさえすれば可能だと思います。
表に検索条件を新設する方法もありますが、
  編集表 "某.TBL"
  絞り込み [日付]{&開始年月日=<[]=<&終了年月日}
とする方法もあります。名前も同様です。この辺りのことはcmd・イベントを問わずに可能です。

5529 Re:一括処理中の検索wfmの方法 悲しげ 2000/04/13-22:53
記事番号5526へのコメント
どもっ、佐田さん、
1点だけ。

>@フォーム呼出しコマンドで検索様のフォームを呼び出した場合
>フォーム呼出しコマンドは、会話処理でフォームを開くのと同じで、フォームを開
>くと表が自動的に開かれ、フォームを閉じると表も一緒に閉じられるはずです。

フォーム呼出しコマンドのパラメータとして「編集表=する|しない」があります。
ここを無指定または「しない」とした場合は上記の挙動となりますが
「する」とした場合は閉じないようにすることが可能です。
この場合、多くは、呼び出すフォームの属性で編集対象表の許可作業において「多重化」に
チェックを入れておく必要がありそうではありますが。

 *----a.wfmのa.kevでの記述
 編集表 "a.tbl"
 絞り込み ……
 フォーム呼出し "b.wfm",ボタン=&牡丹,編集表=する,終了状態=&終了
 編集表 "a.tbl"
 条件(&牡丹="bOk") 置換 ……

のような記述が可能です。この場合はwfmを閉じても表"a.tbl"は閉じていないからです。

さらに云えば、a.wfmの編集対表も、b.wfmのそれも、同じくa.tblであった場合には、
「編集表=する」としなくても、呼出しフォームの方で「多重化」可能としてあれば、編集対象表は閉じません。
と云うか、フォーム自身の編集対象表だから閉じられるはずがないですけど。(^^;)

ps:
このところ私は、「フォーム呼出し」コマンドと「キーダウン」イベントの
鬼と化しています。Win移植って、もの凄く時間がかかります。(;_;)

5530 一括処理とイベントの違い 佐田 守弘 2000/04/13-22:58
記事番号5524へのコメント
今村 誠さん
先程の私の書き込みの補足です。
1つのフォームから別のフォームを開く方法については、一括処理で行う場合と、
イベントで行う方法では、方法と操作性が変わります。
まずはこの点をしっかりと押さえておく必要があります。

●一括処理で組む場合
フォームを開く場合、ウィンドウ作成コマンドとウィンドウ会話コマンドを使ってフォームを開きます。
このあたりの感覚はMS-DOS版桐と同じです。
つまり、先に表コマンドで表を開いておき、使用フォームを指定します。
これだけではフォームは表示されないので、ウィンドウ作成コマンドで開きたいフォームのウィンドウを作成するわけです。
そして、実際にそのフォームが表示されているウィンドウをアクティブにして操作するには、
ウィンドウ会話コマンドで指定します。
この方法で複数のフォームウィンドウを開いた場合、それらのフォームは全て並列になります。
フォーム編集を行っている間は会話処理モードですが、フォームを終了すると一括処理に戻ります。
次にどのフォームを開くか、あるいは開かれているどのフォームウィンドウを操作するかは、
一括処理で行います。

●イベントで組む場合
イベントでフォームを開く場合には、フォーム呼出しコマンドで新しいフォームを呼び出します。
この時に呼び出されるフォームは、モーダルフォームと言って、
そのフォームを閉じない限り元のフォームの操作に戻れません。
(最小化してもだめだと思うのですが)
つまり、ちょうどサブルーチンを呼ぶのと同じ様に、段階的に子フォームを呼び出して行くといった感じになります。

●一括処理が良いか、イベントが良いか
議論のある所です。用途によって使い分けるといった所が本当でしょう。
一括処理の場合には、部分的にフォーム呼出しコマンドを使ってモーダルフォームを開く事も可能なので、
自由度が高い方法とも言えます。

なお、私は桐ver.7では一括処理で組んでおりましたが、最近は特別な場合を除いて一括処理はあまり使わず、
主としてイベントで組んでおります。
でも、ある程度の規模のシステムを組もうとしたら、一括処理が必要になるのではとも思っております。

佐田守弘(KS-00119)

5531 Re:一括処理中の検索wfmの方法 佐田 守弘 2000/04/13-23:18
記事番号5529へのコメント
悲しげさん
こんばんは。フォローありがとうございます。
私の場合、フォームからイベントでフォーム呼出しを行う場合には、フォームと一緒に表を開き、
フォームと一緒に表を閉じると言った事に徹していたので、この件は気がつきませんでした。
「編集表=する」の指定を行うと、悲しげさんが
 > *----a.wfmのa.kevでの記述
 > 編集表 "a.tbl"
 > 絞り込み ……
 > フォーム呼出し "b.wfm",ボタン=&牡丹,編集表=する,終了状態=&終了
 > 編集表 "a.tbl"
 > 条件(&牡丹="bOk") 置換 ……
と書かれている操作が可能なんですね。私はこの様な事を必要とする場合には、
ほとんど一括処理でウィンドウ作成コマンドで処理しておりました。
イベントの場合、会話処理なので、開いた表を閉じ忘れる場合があったりして、結構危なかったりしております。
例の名刺管理でも、掲載した後で開きっぱなしになっていたミスがありました。

 >このところ私は、「フォーム呼出し」コマンドと「キーダウン」イベントの
 >鬼と化しています。Win移植って、もの凄く時間がかかります。(;_;)
キーダウンですか。今の所まだ私はキーダウンイベントは使っておりません。
キーで操作する部分については、専らコマンドボタンにアクセスキーを設定する方法(桐ver.6以来の方法)です。
また始めの頃は、コマンドボタンにマウスイベントを設定する方法を使っていたのですが、
「この方法は宜しくない」との管理工研のアドバイスがあったので、現在は専ら一般手続きの多用に移行しております。

●フォーム呼出し風に見せる
名刺管理の中で、類義語検索を行うと類義語辞書のフォームが開きますが、あれはフォーム呼出しではなかったりします。
実はあれはメインフォームに貼り付けてあるサブフォームで、通常は非表示になっています。
フォーム上に複数のオブジェクトやフォームを作り、必要な時に表示に切り換えて、
あたかもポップアップさせている様に見せるといった事にも凝ったりしています。
フォームを呼び出すと時間が掛りますけど、表示と非表示の切り換えだと瞬時にフォームのすり替えが出来て便利です。

佐田守弘(KS-00119)
5533 Re:イベントでモーダルフォームでできました 今村 誠 2000/04/14-00:39
記事番号5530へのコメント
イベントファイルにフォーム呼び出しで記述したらうまくいきました。
一括の中からファイルで呼び出したときは閉じたので、イベントでも同じ動作を
するかと思っていましたが、イベントの手続きの中で開いたフォームは、
閉じるボタンでその開いたフォームだけが閉じました。
また、コマンドボタンのモーダルフォーム呼び出しも使用しましたがどちらも同じ結果となりうまくいきました。
サブルーチンみたいにフォームが使えるとは、思いもしませんでした。
新しい発見が次から次に出てきて………感激です。
いつもいつもアドバイスありがとうございます。
カレンダーは作りましたが、日にち固定の曜日移動です。
4月は土曜日が先頭です。
テキストボックスで変数を直接指定するようにしました。

戻る