過去の桐井戸端BBS (桐ver.9)
24239 フォーム入力で表引き表が並べ替え状態にならないことがある 沼田 2004/01/10-14:14
いつもご迷惑をお掛けします。桐V9 sp1を使っています。

フォームでデータ追加を行う際、設定してある表引き表が整列状態にならない場合があります。

表引きの設定は表定義の項目属性の表引きタブの各項目に入力することで設定しており、
使用索引を設定しているにもかかわらず、この表を編集するためのフォームからのデータ入力で
索引が使用出来ない状態になることがあります。

フォームで最初に入力する時には設定した索引で整列した状態から選択出来ますが、
次の入力時には未整列の状態のままで表引き表が開きます。
ヘルプファイルなどを見てみると、絞り込みや共有で開かれている場合は整列が使えないとのことですが、
最初に開いた表引き表には「参照」と表示されており、
次回からは「専有」と表示されています。
チェックすべき点などをご教示いただけると幸いと思っています。
よろしくお願いします。

24240 索引と並べ替え 佐田 守弘 2004/01/10-17:27
記事番号24239へのコメント
沼田さん
質問の意味を取り違えているかも知れませんので、確認します。
質問の主旨は、整列索引を設定してあるのに、その索引で並べ替えられていないという事でしょうか。

基本的には、現在の桐では、索引と並べ替えは別物です。
MS-DOS版桐では「整列」と言い、整列索引を設定すると、
同時に今の桐で言う所の、並べ替えもされました。
Windows版からは、整列と並べ替えは一応、別もので、索引を設定しただけでは、並べ替えられません。
但し、索引を使った並べ替えは、昔の桐の整列と同じものになります。

表引き表の場合、仮に並べ替えられていなくても、索引によって検索が
高速で行われる事には、変わりはないとは思います。
但し、それでは目的に合わないのでしょうね。

表引き表を並べ替えた順序で表示したいのであれば、次の方法を試してみて下さい。

1)もし可能ならば、表引き表を予め並べ替えた状態で作り替えておく。
これが最も手っ取り早い方法です。並べ替えて別表に書き出し、
全行削除して読み込めば、並べ替えた順の表になります。

2)表引き表の開始時の並べ替え条件を設定しておく
これは巧く行くかは、試しておりませんが、
表引き表の表の表示条件の中にある表の開始時の並べ替えを設定してみて下さい。

3)表引き表を予め開いて、目的の順序で並べ替えておく
表引き表を予め開いておき、目的の順序で並べ替えておいて下さい。
表引き表を開くコマンドは、そのフォームのイベントがあれば、
メイン部分で表コマンドを使って開きます。並べ替えもコマンドで行えます。
なお、2)で書いた開始時の並べ替えが設定してあれば、
開くだけで並べ替えられるはずです。

佐田守弘(KS-00119)
24242 Re:索引と並べ替え 沼田 2004/01/10-23:59
記事番号24240へのコメント
佐田さん、いつもありがとうございます。

僕が正確に用語を使えてなくてご迷惑をお掛けしてしまったようです。
質問の主旨は佐田さんのご理解の通りです。
提案いただきました措置についての結果ですが、

>1)もし可能ならば、表引き表を予め並べ替えた状態で作り替えておく。

この方法が最も確実で、まだ試していませんが、試すまでもなく僕の希望が叶えられると思われます。
この方法を取るのに躊躇している理由は、ただ単に余計な処理を少しでも避けたい、というだけのためです。
他の方法があるなら、それに超したことはないですから。

>2)表引き表の開始時の並べ替え条件を設定しておく

巧くいきませんでした。症状は同じです。
1回目は並べ替え状態で表引き表が開きますが、2回目からは並べ替え状態が
解除されてしまっています。

>3)表引き表を予め開いて、目的の順序で並べ替えておく

これもダメでした。
今度は1回目から並べ替え状態にもなっていません。

最初の質問で書き忘れましたが、フォームの編集対象表を直接表形式編集で
操作する場合は、正常に動作します。
2回目以降も並べ替え状態で入力を続けることができます。
また、この編集対象表を使う別のフォームでの操作でも、
2回目以降は並べ替え状態が解除されるという症状が出ます。
現在、2つのフォームで同じ編集対象表を使っていますが(同時に使用することはありません)、
どちらのフォームでも同じ症状が出ます。
他にチェックしてみるポイントはありませんでしょうか。

24244 編集表を使用するにチェックは入ってますか 佐田 守弘 2004/01/11-12:16
記事番号24242へのコメント
沼田さん
表引きの設定で、「編集表を使用する」にチェックマークは入ってますか?
これが入っていれば、表引き表が開かれている場合に、編集状態の表が表引きされます。
つまり前回コメントの3)の方法で、表引き表を開いて並べ替えておけば、
その状態の表で表引きされる仕組みになっているはずです。

もしチェックが入っていないと、表引きの際に仮に開かれていても、
改めて開かれますから、並べ替えは無効になります。

今までの経験では上記でうまく行くはずだと思うのですが。

佐田守弘(KS-00119)
24253 解決しました 沼田 2004/01/12-01:15
記事番号24244へのコメント
佐田さん、申し訳ありませんでした。解決しました。

表引きで呼び出される表("表引先の表.tbl")は、
その項目の「入力後」イベント内で、改めて開かれていました。
イベント内での記述では、表引きで選択した値をif関数で調べて、
条件によって別の項目値を変数に取り込む、という処理を記述しています。
イベントハンドラ内で表引き関数が使えないことの代替措置です。
この際に、
表 "表引き先の表"
という形で開いていますので、2回目以降はここで開かれた表が呼び出されていたのだと思います。
このことで、1回目は正常に動作するが2回目からは異常、という現象を説明することができると思います。
現に、このイベントの最終行に
終了 表 編集対象表
と挿入して、改めて開かれた"表引先の表"を閉じるだけで問題なく動作するようになりました。

しかし、
>つまり前回コメントの3)の方法で、表引き表を開いて並べ替えておけば、
>その状態の表で表引きされる仕組みになっているはずです。
とのことですし、確かにその通りだろうなと思いますが、
前回の3)の方法では1回目から並べ替え状態になりません。

何か別の箇所で"表引先の表.tbl"を触っている可能性もありますので、
もう一度プログラムの流れをたどってみようと思っています。

その結果は、後日になりますが報告させていただきます。
ありがとうございました。

戻る