過去の桐井戸端BBS (桐ver.8)
5583 他の表を操作して、部分一致の絞り込みをしたい emure 2000/04/17-13:54
はじめまして。桐初心者です。
桐8の絞り込みについて、お伺いさせて頂きます。

得意先管理に"得意先.tbl"と"得意先.wfm"を使っています。
売上入力の際には"売上入力.tbl"と"売上入力.wfm"を使っています。
両方のテーブルで[得意先名]を使っています。

"売上入力.wfm"で新規作成した場合に
手書きの売上伝票の[得意先名]の書き方がまちまちです。
そこで、"売上入力.wfm"の[得意先名]に入力された文字列を使って
Enterkeyを押すだけで、"得意先.tbl"から部分一致検索で絞り込みを行い
絞り込んだ状態で一覧表示させ、選択してもう一度Enterkeyを押すと
その得意先名が"売上入力.wfm"の[得意先名]に入力され
次の項目にフォーカスが移る・・というようにしたいのですが。

項目属性やオブジェクトの属性で色々試してみたのですが
イベントでなければできないのでしょうか?
よろしくお願いいたします。

5584 他の表を操作して、部分一致の絞り込みをしたい 佐田 守弘 2000/04/17-14:26
記事番号5583へのコメント
emureさん
●先頭一致の部分検索でよければ
もし先頭一致の部分検索でよければ、表引き入力が使えますので、設定はとても簡単になります。
表引きでは自分自身の項目を検索項目とし、部分一致検索ができるので、ご質問の目的を達成することができます。
この場合、比較項目、検索項目、値項目に[得意先名]を指定します。
この設定を行った場合、例えば、「管理」と入力して、「管理工学研究所」と入力させるといった事が可能です。

●前鰍ェあって、先頭一致で検索できない時
このバリエーションの1つとして、得意先.tblには、検索用の項目と、入力用に使う正式項目を設けておく方法があります。
前者を[得意先検索名]、後者を[得意先正式名]としましょう。
得意先正式名には例えば「滑ヌ理工学研究所」の様な兜tきの正式名を登録します。
一方、得意先検索名には、例えば「管理工学」「管理工研」「かんりこうがく」「K3」といった入力が予測される名称を
入力します。1社について複数の得意先検索名で登録して構いません。
そして、表引きの設定では、比較項目と検索項目に[得意先検索名]を、値項目に[得意先正式名]を設定します。
この様にすれば、入力されるであろう名称で正式名称を表引きできます。

●得意先.tblから検索して入力する方法
ご質問の件そのものの方法は、イベント処理を使って行えます。
考え方としては、入力された社名の慣用表記を変数に代入します。
次いで、得意先.tblの表をその値で絞んでフォーム表示するのですが、フォームの対象表に結合表を指定し、
結合表の結合条件で絞り込みをさせる必要があると思います。

方法として似通った内容を私のサイトの中の「桐ガイドブック」などに実例がありますので、これらを参考にして下さい。

佐田守弘(KS-00119)
5585 Re:他の表を操作して、部分一致の絞り込みをしたい emure 2000/04/17-15:04
記事番号5584へのコメント
早速のお返事、ありがとうございます。
説明不足ですみません。
部分一致検索は先頭ではなく"含む"であってほしいのです。
イベント処理をうまく組むことができないので(桐のオンラインインデックスは隅々まで勉強したんですが・・)
最後の、●得意先.tblから検索して入力する方法について、もう少し具体的に教えていただきたいです。

よろしくお願いいたします。

5586 Re:ありがとうございます emure 2000/04/17-16:08
記事番号5584へのコメント
度々すみません。
お返事を書かせて頂いてから気がついたのですが(お恥ずかしいです)
佐田さんのHPと管理工学研究所さんのHPを混同していました。

>方法として似通った内容を私のサイトの中の「桐ガイドブック」などに実例がありますので、これら
>を参考にして下さい。

きちんと確認して佐田さんのHPに行くことができました。
色々と他では知ることのできなかった事が沢山書いてあったので
HPを参考にして、もう一度勉強します。
それでもわからなければ、また教えてください。

お手数をおかけしました。ありがとうございます。


5589 Re:他の表を操作して、部分一致の絞り込みをしたい 森藤 2000/04/17-20:55
記事番号5583へのコメント
こんにちわemureさん
>そこで、"売上入力.wfm"の[得意先名]に入力された文字列を使って
>Enterkeyを押すだけで、"得意先.tbl"から部分一致検索で絞り込みを行い
>絞り込んだ状態で一覧表示させ、選択してもう一度Enterkeyを押すと
>その得意先名が"売上入力.wfm"の[得意先名]に入力され
>次の項目にフォーカスが移る・・というようにしたいのですが。
過去のBBSのイベントにある2262"編集文字列変更イベントで絞込み"は参考に
ならないでしょうか?
以前私が質問したものですが、表引き表を入力した文字列で絞り込むものです。

5613 Re:ありがとうございます emure 2000/04/19-10:19
記事番号5589へのコメント
>過去のBBSのイベントにある2262"編集文字列変更イベントで絞込み"は参考に
>ならないでしょうか?
>以前私が質問したものですが、表引き表を入力した文字列で絞り込むものです。

森藤さん、こんにちは。お返事ありがとうございます。
もちろんNo.2262のBBSは読ませて頂きました。
読んだときに、まさにこれだ!・・と思ったんです。
そこで下のようなイベントを書いたのですが何も起きません・・

=================
名札 メイン
 表 "現金得意先.tbl",表番号=2,モード="共有更新",索引名="得意先名"
 変数宣言 文字列{&選択文字列}


手続き定義開始 a得意先名::編集文字列変更()
 編集表 2
 絞り込み解除 *
メソッド呼び出し ハンドル=&hwindow,@a得意先名.編集文字列取得(&選択文字列)
絞り込み [得意先名]_&選択文字列,文字比較方法=自動,部分一致検索=含む
手続き定義終了

=================

何が間違っているのかも発見できず、書きこみをしたんですが。
教えて頂けると、嬉しいです。
よろしくお願いします。
5614 Re:ありがとうございます 宮城 2000/04/19-11:04
記事番号5613へのコメント
emureさん、こんにちは。

まず「編集表」の前に「確認」を入れてみて下さい。イベントが発生しているかどうかがわかります。
ご期待のイベントが発生していないのじゃないかな。

5623 Re:発生していないみたいです・・ emure 2000/04/19-16:26
記事番号5614へのコメント
>まず「編集表」の前に「確認」を入れてみて下さい。イベントが発生しているかどうかが
>わかります。ご期待のイベントが発生していないのじゃないかな。

宮城さん、こんにちは。ありがとうございます。
頂いたお返事のようにやってみました。
しかし、何も起こりませんでした・・
編集表を見ると売上入力.wfmから入力しているときは
得意先.tblはイベントで開いている・・となっているんですが。
よろしくお願いします。


5627 Re:発生していないみたいです・・ 宮城 2000/04/19-18:44
記事番号5623へのコメント
まずは、「a得意先名」ですね。ラベルになってます。テキスト「t得意先名」
じゃないと・・・、じゃないでしょうか。

5630 Re:発生していないみたいです・・ 森藤 2000/04/19-21:52
記事番号5627へのコメント
こんにちわemureさん

イベント発生してないとしたら、テキストオブジェクトの名前が違うのかもしれませんね。
桐は新規作成のとき、項目名にtを付けたテキストオブジェクトと
aを付けたラベルオブジェクトを作りますし、ラベルオブジェクトに「編集文字列変更イベント」は設定できませんので。

フォームの「得意先名」のテキストオブジェクトを選んでオブジェクトの属性のイベントタブにある
編集文字列変更をダブルクリックするという手順を踏んでおられるでしょうか?

それから表引きでしたら表の定義画面で「編集表を使用する」にチェックを入れて下さいね。
私のイベントファイルの一部をのせておきます。参考にしてください。
--------------------------------------------------------------
名札 メイン
変数宣言 文字列{&選択文字列}
表 "元帳.TBL",表番号=10,索引名="型名順"


手続き定義開始 t型名::編集文字列変更()
編集表 10
絞り込み解除 *
メソッド呼び出し @t型名.編集文字列取得 (&選択文字列)
絞り込み [型名]_&選択文字列,文字比較方法=自動,部分一致検索=含む
手続き定義終了

手続き定義開始 フォーム::レコード移動(長整数 &行番号,長整数 &総件数,長整数 
&明細番号)
編集表 10
絞り込み解除 *
手続き定義終了

5669 Re:ありがとうございます emure 2000/04/21-10:12
記事番号5630へのコメント
宮城さん、森藤さんこんにちは。
こんなに初心者なのに、丁寧に教えてくださって
ありがとうございます。

>イベント発生してないとしたら、テキストオブジェクトの名前が違うのかも
>しれませんね。桐は新規作成のとき、項目名にtを付けたテキストオブジェクトと
>aを付けたラベルオブジェクトを作りますし、ラベルオブジェクトに「編集文字列変
>更イベント」は設定できませんので。

宮城さんのご指摘も
>まずは、「a得意先名」ですね。ラベルになってます。テキスト「t得意先名」
>じゃないと・・・、じゃないでしょうか。
でした。

a得意先名で間違い有りません。テキストオブジェクトなんですが
"a"を付けているんです。ややこしくて済みません。

>フォームの「得意先名」のテキストオブジェクトを選んでオブジェクトの属性の
>イベントタブにある編集文字列変更をダブルクリックするという手順を
>踏んでおられるでしょうか?
手続き名を良く知らないので、おっしゃるようなやり方でなければ
イベントが書けないんです。ですから、必ずオブジェクトのリストから挿入しています。

森藤さんが書いてくださったイベントを参考にして、もう一度はじめから書いてみます。

5672 Re:できました!・・が emure 2000/04/21-11:00
記事番号5669へのコメント
前の書き込みをしてすぐに、新しいイベントファイルを作って
宮城さんと森藤さんがおっしゃっていた事を
ひとつずつ確認しながら得意先名の絞り込みに関するイベントだけを
書いたらちゃんと動きました。
きっと、ちゃんとやっているつもりで、ちゃんとなってなかった・・ってことでしょうか。
お手数をおかけしました。ありがとうございます。

ところで、この得意先.wfmと売上入力.wfmはボタンひとつで
行き来できるようにしてるのですが
得意先.wfmから売上入力.wfmへ移動して絞込みをしようとすると
”KU1068:対象表が更新中またはグループ操作中のためこのコマンドは使用できません ”
”絞り込み解除 *”と出て絞り込みがされません。

試しに

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
編集表 2
解除 *
手続き定義終了

なんてやってみたんですがだめでした。
ちなみにメニュー.wfmから売上入力.wfmに移動して絞り込みをするとちゃんとされます。
どのイベントに定義をすれば良いのでしょうか?
よろしくお願いします。

5681 Re:できました!・・が 悲しげ 2000/04/21-17:38
記事番号5672へのコメント
肝腎の前提情報が無い形での質問ですので、表の構成とか関係がよく判らないままのでコメントとなりますが、
まず、売上入力wfmは、グループ項目のあるフォームのように想像できます。

>得意先.wfmから売上入力.wfmへ移動して絞込みをしようとすると
>”KU1068:対象表が更新中またはグループ操作中のためこのコマンドは使用できません ”
>”絞り込み解除 *”と出て絞り込みがされません。

とあることから、想像をたくましくしてみると、やっていることは得意先.TBLから得意先名の類を取得したのち、
売上入力wfmでグループ追加をしようとしているのではないか?
でグループの追加の真っ最中に絞り込み解除をしようとしているのではないか?
こう考えると、上記エラーメッセージは至極当然のことのように思えます。
グループ追加が完了した後の時点で、解除等の操作をしてみるとどうなるかを試してみてはどうでしょう?
不思議なのは、グループ追加した直後は、明細部は空のはずなので、
絞り込み解除をする必要があるとは思えないことです。(^^;)

あるいは、得意先.TBLから得意先名の類を取得したのち、グループ検索でもって、
売上入力wfmの既存データに移動しようとしているのか?
いずれにせよ、得意先.TBLならさておき、売上入力の方で絞り込みor同解除をする意図が判らないので、
コメントは難しいです。(^^;)

戻る