過去の桐井戸端BBS (桐ver.9)
25936 フォームを使ってツリー構造でのデーター入力をしたい todays 2004/04/19-14:47
備品管理簿を作っているのですが、桐に慣れていないため、よくわからないので、質問させていただきます。
以下に表の項目の概要を書きます。
[品名]     文字列
[管理番号]   文字列 [種別]+"-"+[品目種別]+"-"+#文字列([番号], 3)
[管理記号]   文字列 [種別]+[品目種別]+[詳細種別]
[種別]     文字列
[種別表示]   文字列
[品目種別]   文字列
[品目種別表示] 文字列
[詳細種別]   文字列
[詳細種別表示] 文字列
[番号]     整数
[担当者]    文字列
etc.

フォームを用いて表の各項目に入力しようと思っています。
そこで以下のようなユーザーインターフェースで入力しようと考えました。

1. 備品管理入力フォームを開くと同時に行を追加し品名にフォーカスをおく
2. 品名入力後、種別を「家具」、「事務用品」、「工具類」etc から選ぶ
  例えば家具を選ぶと[種別]に"A"が入り、[種別表示]に"家具"が入力される
  これと同時に品目種別を選択するメニューが表示される
3. 品目種別選択メニューの「机」、「テーブル」、「椅子」、「棚」etc から選ぶ
  例えばテーブルを選ぶと[品目種別]に"B"が入り、[品目種別表示]に"テーブル"が入力される
  これと同時に詳細種別を選択するメニューが表示される
4. 詳細種別選択メニューの「長テーブル」、「長座卓」、「丸テーブル」etc から選ぶ
  例えば丸テーブルを選ぶと[詳細種別]に"C"が入力され、[詳細種別表示]が"丸テーブル"となる
  選択後メニューは閉じられ、最初の入力フォームとなる

以上のような作業の場合、一つのアクションで2つの項目に別々の値を入れ次段のメニューを開くという作業が必要になるのですが、
実現方法がわかりません。ご教授いただきたく、よろしくお願いいたします。
なお、[管理記号]はソートのために必要で、全備品の入力後ソートし、番号欄に数値を入れて表を完成させ、
レポートには「管理番号」「品名」「担当者」etc を印刷して出来上がりとなる訳です。
長くなりましたが、よろしくお願いいたします。

25944 Re:ツリー構造のデーター入力 アックン(=^・^=) 2004/04/19-19:20
記事番号25936へのコメント
todaysさん、こんにちは。
サンプルをアップロードしました。 (※1)
V9-2004対応です。
V9は表引き画面を1項目だけ表示できる利点があり、これを利用してすっきりと表示しています。
また、イベント(kevファイル)で表引き項目を絞り込んでいます。
1項目毎に表引き前と表引き後で絞り込みを解除して、エラーが出ないようにしています。

>  例えば家具を選ぶと[種別]に"A"が入り、[種別表示]に"家具"が入力される
ここは項目の並びをわざと逆にしました。
[種別表示]で家具を選ぶと"家具"が入力され、[種別]に"A"が入るようにしています。
他も同様です。その方が直感的に素直ですし、設計も楽ですから。

(※1)
・解凍方法はご存じですか? わからないときは、ここで聞いてください。
・ダウンロードページは、当掲示板の[ツリー表示] [番号順表示] [タイトル&コメント] 各ページの下の方、
[補完BBS(文章のみではうまく伝わらないときのために)]をクリックしてください。

25954 Re:ツリー構造のデーター入力 アックン 2004/04/19-22:21
記事番号25936へのコメント
todaysさん> こんにちは。記憶している範囲で、若干の説明を書いておきます。

>1. 備品管理入力フォームを開くと同時に行を追加し品名にフォーカスをおく
 これを実現しているのは、フォーム開始イベントです。
この部分のプログラムには簡単な注釈を書いてありますから、kevファイルを定義で開いて見て下さい。
「method」というのは、「メソッド呼び出し」のことです(だと思う...)。

>以上のような作業の場合、一つのアクションで2つの項目に別々の値を入れ次段のメニューを開く
 これを実現しているのは、(1)表引き(2)項目計算式の表引き関数 のふたつです。
「再計算する」を設定してあります。どれも表の定義画面で設定します。

なお、フォーム上で表引きが自動的に開くのは、フォームの入力支援ボタンの定義画面で設定してあるからです。
(表の方の表引き設定画面で自動的に開くようにしていても、フォームでは開かなかったと思うので、フォームの方でも設定しておきました。)

表引き表の行を絞り込んだり解除したりしているのは、入力前イベントです。
ここはちょっとわかりづらいと思うので、もし一括処理かイベントの経験がおありでしたら、記述内容について質問して下さい。

今回は階層構造になっているデータのそれぞれの候補のレコード数がわからなかったので、レコード数に事実上制限がない表引きを用いました。
もし候補データ数が少ないときは、値集合やドロップダウンリストをその都度作成するイベントもありますが、さらに複雑になります。

25969 Re:ツリー構造のデーター入力 todays 2004/04/20-11:21
記事番号25954へのコメント
アックンさん
ありがとうございます。先輩から「表引き」を盛んに勧められていたのですが、何のことやらわからずにおりました。
どうやら概念がつかめました。使い方は、いただきましたサンプルで勉強させていただきます。
また、一括・イベント処理もよくわかってないので、同様に勉強させていただきます。ありがとうございました。
所でといっては何ですが、入力フォームで、「種別」で選択すると、次の「品目種別」がポップアップし、
「品目種別」で選択すると次の「詳細種別」がポップアップするようなことは可能でしょうか。
いや、あくまで個人の美的感覚の問題では有るのですが。
桐というかデータベースの初心者なので、これからも頓珍漢な質問をさせていただくと思いますが、よろしくお願いいたします。
ありがとうございました。

25975 Re:ツリー構造のデーター入力 アックン(=^・^=) 2004/04/20-12:45
記事番号25969へのコメント
todaysさん>
昨日アップロードしたサンプルを実際に試してみましたか?
V9以外だと困るのですが・・・・・・。桐のバージョンは何ですか?

>所でといっては何ですが、入力フォームで、「種別」で選択すると、次の「品目種別」がポップアップし、「品目種別」で選択すると次の「詳細種別」がポップアップ
>するようなことは可能でしょうか。いや、あくまで個人の美的感覚の問題では有るのですが。

 todaysさんは、「種別」→「品目種別」→「詳細種別」にしたいわけですね。
サンプルは、「種別表示」→「品目種別表示」→「詳細種別表示」の順にポップアップして候補を選ぶようにしました。
ちょっと考えてみます。

ところで、「ソース値更新」イベントは不要かもしれません。
「ソース値更新」イベントをOFFにするには、フォーム(.wfm)の「オブジェクトの属性」画面→イベント(タブ)→イベント欄の「ソース値更新」のチェックをはずしてください。
「入力前」イベントは必要です。

25979 Re:ツリー構造のデーター入力 アックン(=^・^=) 2004/04/20-17:29
記事番号25975へのコメント
> todaysさんは、「種別」→「品目種別」→「詳細種別」にしたいわけですね。
 これを実現するサンプルを新たにアップロードしました。
試してご報告いただけると幸いです。

表引きコマンドをイベントに記述できないので、コマンドボタン(非表示)の中で使っています。
このボタンをイベントから実行しています。
いわゆる裏技的というか、チップスで実現しています。
もっと簡潔な方法がないでしょうか・・・・・・。(^^; >ALL

25981 Re:ツリー構造のデーター入力 アックン(=^・^=) 2004/04/20-18:10
記事番号25979へのコメント
todaysさん>
投稿日:2004/04/20(Tue) 18:01 ←この時刻のファイルをダウンロードしてください。
これより少し前の時刻にもアップしていたのですが、そちらは削除しました。
(イベントに描画禁止メソッドを書き忘れていましたので。)
26003 Re:ツリー構造のデーター入力 todays 2004/04/21-12:02
記事番号25981へのコメント
アックンさん
ありがとうございました。動作確認しました。
今まで教えていただいたことをもとに、作ってみます。表引きの何たるかも分かったことですし、
書けると思います。
本当にありがとうございました。

戻る