過去の桐井戸端BBS (桐ver.8)
7473 値のセットの仕方が分かりません NANA 2000/09/05-14:43
いつもお世話になっております。<(_ _)>

一括処理で、キーボードから入力した値を使用して、絞り込みした結果を印刷にかけるために、
キー入力を使用しますが、その変わりに、自分で作成したフォームを表示させて、
そのフォームに値を入力したいのですが、その入力した値を一括処理の中で、
絞り込みする値にセットする方法がどうしても分かりません。
キーボードから入力する項目が一つならキーの入力でよいのですが、
3つも4つもだと、どこで何を入力するのかなど混乱すると思うので、
一つのフォームに複数の値が入力できるようなフォームを作成しました。

どなたかご存じの方がいらっしゃいましたら、
よろしくお願いいたします。
7485 フォームで値を入力して絞り込む方法 佐田 守弘 2000/09/06-00:01
記事番号7473へのコメント
NANAさん
質問の題意を確認したいのですが、例えば住所録の様なものであれば、
名前や読み、住所などといったいくつかの項目で絞り込みたい時に、フォーム上でどの様にその値を入力させるかという意味でしょうか。

一般的な答えとして言えば、フォームに変数をソース値としたテキストオブジェクトを作り、ここで値を入力させます。
オブジェクトのソースが変数になっているので、入力した値がそのまま変数に入力されます。
ですから、その値を使って絞り込みを行えばよい訳です。
なお、一括処理で作るよりも、イベントを使い、それらのテキストのソース値更新(値が入力された時に発生)イベントで
絞り込みを行うのが良いでしょう。

また私のシェアウエア「桐で作る名刺管理」では、社名を入力すれば社名で、読みを入力すれば読みで、
という様に、入力した値で絞り込みを行う方法を使っているものがあります。
この様なものを作りたいのでしょうか。

私のサイトの
http://www.ne.jp/asahi/m.sada/kiri/NAMECARD/NAMETOP.html
を参考にしてみて下さい。

佐田守弘(KS-00119)
7505 Re:フォームで値を入力して絞り込む方法 NANA 2000/09/06-15:40
記事番号7485へのコメント
佐田さん、ありがとうございます。
まだ完成はしていませんが、フォームのマニュアルを読み返したら、
ちゃんと、「変数の値の表示/入力」というのがあって、驚きました。

マニュアルは結構読んでいて、開いたことがないページがないくらい付箋だらけなのに、
以外と大切なところを見落としているんですね^^;ゞ

まだまだ読み足りませんね。
もっと邁進できるよう頑張りますのでこれからもよろしくお願いいたします。


7474 No.7473の質問の訂正です。 NANA 2000/09/05-15:16

フォームを作成したのですが、入力自体が出来ないのです。

テーブルを指定しなくてもフォームが成り立つ方法、そのフォームの作成の仕方をご存じの方、
どうか教えてください<(_ _)>
7475 補足です NANA 2000/09/05-15:30
記事番号7474へのコメント
度々すみません。<(_ _)>

フォーム1
「 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|担当者コード ○○○○
|開始日    ○○○○
|終了日    ○○○○
______________」

上のようなフォームを作成しました。
○の部分にデータを入力したいのですが、出来ません。

よろしくお願い致します<(_ _)>
7476 Re:補足です bonito 2000/09/05-17:03
記事番号7475へのコメント
NANAさん、
#7473で
>一括処理で、キーボードから入力した値を使用して、
>絞り込みした結果を印刷にかけるために、

という事ですので、一括処理は組める==>変数については理解しているという前提で書きますが…、

WFMに3つのテキストオブジェクト、コード・開始日・終了日を作成し、
オブジェクトの属性〜テキストタブ〜ソース欄にそれぞれ&コード・&開始日・&終了日 の
変数名を設定(記入)するだけだと思いますが…。(変数についてはデータ型をTBLのデータ型に合わせ、
実際にWFMを開く前に宣言する事とします)

私も補足… (^^;
変数の種別によっては…、WFM定義時に整合性エラーが出ます
(タイミングとしては変数がまだ宣言されていないので)、が
全然気にせずに保存終了して下さい。


7477 Re:補足です 宮城 2000/09/05-17:17
記事番号7475へのコメント
NANAさん、こんにちは。

対照表のないフォームは作成可能です。
ラベルとテキストでお作りになってるはず。
テキストのソースを変数にします。

&担当者コード
&開始日
&終了日

せっかくですから一番簡単な KEVを。

フォームのオブジェクト属性のイベントのタブで「フォーム開始」にチェックしてダブルクリックすると、
KEV名をきいてきますので適当な名前をどうぞ。

手続き定義開始 フォーム::フォーム開始〜

手続き定義終了

となっているはず。この間に

メソッド呼び出し @フォーム.更新モード設定(2)

といれてください。(実際には「フォーム」は半角カナです。)
これで開くときに更新モードにしてくれます。

変数宣言は、この KEVの先頭に「名札 メイン」という部分があり、ここですればいいことが多いのですが、
この例では一括処理で扱えないといみありませんから、一括冒頭でしておいてください。

7479 Re:補足です 宮城 2000/09/05-17:25
記事番号7477へのコメント
このとき、テキストボックス入力を終えた時点でもう変数値は更新されています。
最後は右上の×ボタンで終わらせればいいでしょう。

ところで、このためにこの3項目だけの表を作っても一向に構いません。
慣れてるならそっちのほうがいいかも。(蛇足でした。)

7506 Re:補足です NANA 2000/09/06-15:41
記事番号7476へのコメント
bonitoさん、ありがとうございます。
フォームのマニュアルを読み返したら、
「変数の値の表示/入力」と書いてあり、驚きました。
付箋だらけのマニュアル頼りに模索しながら作成している、
私の見落としです<(_ _)>

これからも頑張りますのでよろしくお願いいたします。

7507 Re:補足です NANA 2000/09/06-15:42
記事番号7479へのコメント
宮城さん、ありがとうございます。
対象表のないフォームというのはメニュー画面ですでに作成しているのに、気付きませんでした^^;ゞ

ソースに変数をセットできることも、マニュアルに載っていて、そう言う発想にならないと、
以外と気がつかないものなんですね。

イベントの方ですが、いくつか作成はしているんですが、
まだ「メソッド呼び出し」を使ったことがないので、
今は、マニュアルとにらめっこです^^;ゞ
出来上がったら必ずご報告いたします。
ヒントをありがとうございました<(_ _)>
7508 Re:補足です NANA 2000/09/06-16:16
記事番号7479へのコメント
宮城さん度々すみません。
宮城さんが書いてくれたメソッド呼び出しを参考にさせてもらいながら、一括処理&リファレンスを読んで、
書いてみたのですが、私の勉強不足で、メソッド呼び出しそのものがいまいち理解できません。

申し訳ありませんが、メソッド呼び出しのことをもう少し詳しく教えていただけませんでしょうか<(_ _)>

「指定したフォームの更新モードを変更します」
とありますが、それは入力待ち状態になると言うことなのでしょうか?

入力できる状態にならないので困っています。
よろしくお願いいたします。
7510 Re:補足です 宮城 2000/09/06-17:03
記事番号7508へのコメント
>「指定したフォームの更新モードを変更します」
>とありますが、それは入力待ち状態になる
>と言うことなのでしょうか?

フォームには表示モードと更新モードがあります。通常、フォームを開くと表示モードで、F4表示を押すと更新モードになります。
それで処理すればいいのですが、どうせなら即更新モードにしてしまおうというのが次の KEVです。

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 メソッド呼び出し @フォーム.更新モード設定(2)
手続き定義終了

3ヶ所ある「フォーム」は実際の KEVでは半角カナにしてください。

モードはもう少しありますが、モードにより使えるコマンドが違ったりしますので、注意が必要です。


7520 再度お願い致します<(_ _)> NANA 2000/09/07-16:26
記事番号7510へのコメント
苦戦中のNANAです。
またまた教えてください<(_ _)>

入力用のフォームのテキストボックスに
以下のイベントを書きました。
*======================================
手続き定義開始 担当者コード::ソース値更新()
      メソッド呼び出し @フォーム.更新モード設定(2)
      手続き実行 フォーム消去()

手続き定義終了
*======================================

そして、実際にコマンドボタンをおいている
フォームのイベントは以下になります。
*======================================
手続き定義開始 担当者別顧客リスト印刷::マウス左クリック(長整数 &マウス位置
[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
&ファイル名="S_取引日記帳.TBL"
&ボタン名="担当者別顧客リスト"
手続き実行 処理確認()
ケース開始
ケース (&確認=1)
      手続き実行 ファイルオープン()
      &フォーム名="Z_コード入力.wfm"
ウィンドウ作成 &フォーム名,ハンドル=&番号2,編集表=しない
      手続き実行 フォーム消去()
      絞り込み [担当者コード]{=&担当者コード}
      置換 [受注日]=#日時日付([受注日])
      絞り込み [受注日]{ &開始日<= [] <=&終了日 }
  ケース開始
ケース (#空ファイル=0)
&フォーム名="処理中.wfm"
手続き実行 フォーム表示()
レポート印刷 "R_取引記録.RPT",
手続き実行 フォーム消去()
ケース (#空ファイル=1)
&フォーム名="データ確認.wfm"
手続き実行 フォーム表示()
手続き実行 フォーム消去()
ケース終了
ケース終了
手続き実行 ファイルクローズ()
手続き定義終了
*======================================

ところが、コマンドボタンをクリックして、実際に入力用のフォームは表示されるのですが、
コマンドボタンをおいているフォームのイベントがそのまま走り、終わってしまうので、
「対象表がありません」というエラーが返されます。

元のフォームのイベントを途中で止めて、入力用のフォームのイベント終了後に
また戻ってくると言うことは可能なのでしょうか?
それがもし可能でしたら方法を教えていただけませんでしようか?


ついでと言ってはなんですが、
一括処理やイベントの書き方のマニュアル本で
おすすめのがありましたら是非教えてください<(_ _)>

長々とすみませんでした<(_ _)>
7522 Re:再度お願い致します<(_ _)> 宮城 2000/09/07-16:52
記事番号7520へのコメント
「やっ」と、斜めに読んで目についた点。

> ウィンドウ作成 &フォーム名,ハンドル=&番号2,編集表=しない
  
「編集表=する」じゃないでしょうか? フォームの編集対照表・参照表、CMD・KEVでわざわざ直前で編集対照表にしても、
「する」でないとだめなようです。なんか不自然なんですけどね。

>一括処理やイベントの書き方のマニュアル本で
>おすすめのがありましたら是非教えてください<(_ _)>

これはちょっと・・・、ないですねぇ。(;_;)

強いて言えば佐田さんのサイト。
http://www.ne.jp/asahi/m.sada/kiri/index.html

ここで、うまくいかなかった記述をそのまま書いて、どこがおかしいんでしょうかと質問するのが一番かも。
7524 Re:再度お願い致します<(_ _)> 尾形 2000/09/07-19:38
記事番号7520へのコメント
詳しく読んでいませんが、
ウインドウ作成コマンドをフォーム呼び出しコマンドに替えてみては
7540 Re:再度お願い致します<(_ _)> NANA 2000/09/08-15:59
記事番号7522へのコメント
やはり、メインの方が走ってしまうんですが・・・(;o;)
二つのフォームを順番通りに動かすのは不可能なのでしょうか?

尾形さんが書いてくださった「フォームの呼び出し」に
モーダルダイアログボックスと言う言葉が出てきました。
今これが気になっています。


ところで多遊さんのホームページのダウンロード一覧で参考になりそうなものをダウンロードして研究中ですが、
今のところヒットしそうなものがありません。
でもその中にモーダルフォームと言うものを使っているものがありました。
これが何となく引っかかっています。
もし良かったらヒントを下さい<(_ _)>

宮城さんもあのホームページに登場なさっているんですね(^-^)

このBBSで良くレスを付けて下さる方々は、私から見れば、雲の上のような存在です^^;ゞ
7541 Re:再度お願い致します<(_ _)> NANA 2000/09/08-16:00
記事番号7524へのコメント
ありがとうございます<(_ _)>
フォームの呼び出し研究中です。
一括処理&リファレンスを読んでいたら、モーダルダイアログボックスと言う言葉が出てきました。
これが解決の糸口になりそうな予感です。
7550 Re:再度お願い致します<(_ _)> アックン 2000/09/08-20:30
記事番号7520へのコメント
NANAさん、こんにちは。イベントを拝見しました。
以下にフォーム定義を書きますから、テスト用の各フォームとイベントを新たに作成してから試してみてください。
がんばってやってみましょう。

・元のフォームのイベント全文
**--------------------------↓start
名札 メイン
var 整数{&end}\
,文字列{&button,&担当者コード},\
, 日時{&開始日,&終了日}

proc b_担当者別顧客リスト印刷::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番
号,長整数 &フラグ,参照 長整数 &処理中止)

 フォーム呼出し "Z_コード入力",ボタン=&button,終了状態=&end

 if ( &button="b_OK" .and&担当者コード .and&開始日 .and&終了日 )
   &STR = "d"" "+#tistr(&開始日,0,1,0)+"""<=[]<=d"" "+#tistr(&終了日,0,1,0)+""""
   表 "S_取引日記帳.tbl" ,表番号 = 1 , 索引名 = "索引01" , 終了状態 = &秒
   cond ( #処理条件名検索( 3,"abc" ) ) 検索条件削除 "abc"
   検索条件登録 条件名 = "abc" , { [担当者コード]_&担当者コード , [受注日]_&STR }
   絞り込み 条件名 = "abc"

   call (&選択件数) レポート印刷()
   中止 表
 end
end

proc レポート印刷()
 レポート印刷 "R_取引記録.rpt",終了状態=&end
end
**--------------------------↑end


・元のフォームのフォーム定義
コマンドボタン b_担当者別顧客リスト印刷 のイベントはマウス左クリックのみON(チェックマークを入れる)にします。


・入力用フォーム"Z_コード入力.wfm"のイベント全文
**--------------------------↓start
名札 メイン

proc フォーム::フォーム開始(長整数 &表番号)
 method @txt_01.フォーカス設定()
end
**--------------------------↑end
実際には上記「フォーム」を半角カナで記述してください。
(ここの掲示板は半角カナを自動的に全角カナに変換して掲示しています。)


・入力用フォーム"Z_コード入力.wfm"のフォーム定義
フォームのイベントは フォーム開始 をONにします。

コマンドボタン b_OK のイベントはマウス左クリックのみON、
標題を OK 、機能名を 閉じる にします。

コマンドボタン b_Cancel のイベントはマウス左クリックのみON、
標題を Caancel 、機能名を 閉じる にします。

テキストボックス txt_01 のソースを &担当者コード とします。
テキストボックス txt_02 のソースを &開始日 とします。
テキストボックス txt_03 のソースを &終了日 とします。
これらのテキストボックスのイベントは、「マウスイベントを使用する」をONにします。


それでは、また書き込みしてください。でも、ゆっくりでいいです。
アックン(=^・^=)

7552 Re:再度お願い致します<(_ _)> 尾形 2000/09/08-22:10
記事番号7524へのコメント
別の視点から....
元のフォームのイベント内で、表〜選択〜印刷をせずに、
Z_コード入力.wfmの[ok]ボタンのクリックイベントや手続き等で
実行させてもいいかも
そうすれば、ウインドウ作成コマンドのままでもいかも。

でも、多分、お勧めの方法ではないでしょう (^^;
7580 Re:再度お願い致します<(_ _)> NANA 2000/09/11-15:22
記事番号7552へのコメント
尾形さんありがとうございます<(_ _)>
アックンさんのいうようにやってみました。
いろいろ手直しは必要ですが、出来ました。
尾形さんの言うように、やはり入力用のフォームにコマンドボタンは必要ですね^^;ゞ

これからもよろしくお願いいたします<(_ _)>

7581 みなさまありがとうございます<(_ _)> NANA 2000/09/11-15:24
記事番号7550へのコメント

早々にレスをつけていただいたのに、
書き込みが遅くなってすみません<(_ _)>

アックンさんのおかげでやっと出来ました。
あとは、アックンさんが書いてくださったイベントを自分なりの手続きなどに書き換え、
変数の初期化など、エラー処理をもう少し加えたら終了(?!)だと思います^^;ゞ

ここが一番苦労するところだと思っていただけに、肩の荷が下りた気がします(^-^)

感謝しています<(_ _)>
なんとお礼を言ってよろしいのか・・・。

アックンさん以下、レスを付けて下さったみなさま、
本当にありがとうございました<(_ _)>
心よりお礼申し上げます<(_ _)>


これからも頑張りますので、
NANAの名前を見たらよろしくお願いいたします<(_ _)>


P.S.アックンさんのネコちゃんかわいい(*^-^*)

戻る