過去の桐井戸端BBS (桐ver.9)
25390 並べ替えを行っているのに「#整列状態」関数が0を返してしまう neco 2004/03/11-16:43
関数説明には

#整列状態
編集対象表が整列状態であれば使用中の索引番号(>=1)を返す。
整列状態でなければ 0 を返す。

とありますが、並べ替え 索引名 ="フリガナ" や 並べ替え 条件名 ="フリガナ"としても、
メッセージボックス #STR(#整列状態) で確認すると 0 を返します。
 フォームイベント内で使用したいのですが、教えてください。
25392 Re:#整列状態で困っています。 悲しげ 2004/03/11-17:09
記事番号25390へのコメント
どもっ、necoさん

>#整列状態
>編集対象表が整列状態であれば使用中の索引番号(>=1)を返す。
>整列状態でなければ 0 を返す。

読んで字の如く、索引を使用している時にその索引番号を返すに過ぎません。
よって

>とありますが、並べ替え 索引名 ="フリガナ" や 並べ替え 条件名 ="フリガナ"
>としても、
>メッセージボックス #STR(#整列状態) で確認すると 0 を返します。

ではなく、
 並べ替え 索引名 ="フリガナ"
の場合は、その索引番号が表示されるはずですが、
 並べ替え 条件名 ="フリガナ"
では0になるのではないでしょうか?
(#絞り込み状態なら1以上を返すかもしれないが、でも何の役にも立たない)

私もフォームにテキストに
 "索引:"+#半角(#cond(#整列状態=0,"なし",1,#索引属性名(#整列状態)))
のようなソースで表示させることがありますが、これが使えるのは索引有りの場合だけです。
仮称「#並べ替え属性名」なんてのがあればいいのに、と思いつつ、
歳月は虚しく過ぎてきました・・・。>K3さま江

25401 Re:#整列状態で困っています。 宮城 2004/03/11-20:55
記事番号25390へのコメント
necoさん、こんにちは。

桐ヘルプ 「グループ状態」にさりげなく書いてあります。

> グループ状態のときは、次のコマンドが使用できなくなります。
>   行挿入(行追加になります)
>   行移動
>   行複写
>   行復活
>   並べ替え
>   索引定義
>   絞り込み
>   併合

桐使いには常識なのかもしれませんが、ファンクションキー操作では
「並べ替え」できるもんだから、私もつい最近はじめて知りました。
(どのに書いてあったか探すのにまたてこずりました。)

KEVでは並べ替えできないということだと思います。
(トレース出力ウィンドウでは「並び替えた」かのような表示がでるにもかかわらず。)

で、どうするかですが、並べ替えをコマンドボタンに設定して「実行」させてもダメなようで、
フォームのオブジェクト属性「編集対象表」→「表の操作」→「開始条件2」で並べ替え指定。
コマンドボタン 機能名1 「グループ解除」、機能名2 「グループ再抽出」とし、
メソッド呼び出し:実行で逃れております。(ボタンを見れず触れずにしておく。)

あれ? ここまで書いてきて、「入力」→「コマンド」で確認すると、

イベント処理(表示モード):○ イベント処理(表示モード):×

になってますね。(?_?)

いったん出直します。(というか乞うフォロー。)

25407 Re:#整列状態で困っています。 うにん 2004/03/11-23:25
記事番号25401へのコメント

>桐ヘルプ 「グループ状態」にさりげなく書いてあります。
>
>> グループ状態のときは、次のコマンドが使用できなくなります。

ん?フォームがグループ状態だとは言っていませんが?

悲しげさんので解説は終わっていると思いますが、桐9のヘルプは
#索引状態だけで#整列状態という関数はなくなっています。

25431 Re:#整列状態で困っています。 今村 誠 2004/03/13-01:10
記事番号25390へのコメント
necoさんこんにちはテストしたわけではないのですが

メソッド呼び出し @フォーム.更新モード設定(0) /* フォームは半角*/
条件 (#グループ選択状態>0) グループ選択解除
解除 *
if (#表オープン状態(#IS表,1))
  確認 "共有状態では索引は使用できません。"
else if (#表オープン状態(#IS表,1)=0 .and #表オープン状態(#IS表,2))

  確認 "更新禁止では索引定義ができません"
else
 条件 (#処理条件名検索(14,"ふりがな")<1) \
  索引定義 索引名="ふりがな",重複=許可,\
  条件登録="ふりがな",{[ふりがな]辞書順,\
  [得意先名]辞書順}
 並べ替え 索引名 ="ふりがな"
end

こんな感じで書いてみてはいかがでしょうか
25445 Re:#整列状態で困っています。 neco 2004/03/15-10:50
記事番号25392へのコメント
悲しげさん、いつもありがとう。

> 並べ替え 索引名 ="フリガナ"
>の場合は、その索引番号が表示されるはずですが、

> "索引:"+#半角(#cond(#整列状態=0,"なし",1,#索引属性名(#整列状態)))
>のようなソースで表示させることがありますが、これが使えるのは索引有り
>の場合だけです。

上記をメッセージボックスにて、フォーム開始と並べ替えイベントに記述し
実行してみましたがやはり 0 と"索引:なし"を返します。

このメインフォームでは編集対象表として"会社.tbl"(開始条件:索引付、共有・更新:する、多重化)、
サブフォームに"事業所.tbl"、"部課.tbl"をツリー状に配置しています。
またメインフォームではグループ項目はありません。

やりたいことは、釦操作により"フリガナ"または"会社名"順の並べ替え、および解除をトグル式に切替えたいのです。
その他、絞り込み釦の機能もあり、実際の操作順序等によっては状態を検出して
ケース振り分けを行わないと、プログラムを複雑(フラグを多用しなければならない)化しなければならなくなります。

25446 Re:#整列状態で困っています。 neco 2004/03/15-10:58
記事番号25431へのコメント
今村 誠さんこんにちは、

>if (#表オープン状態(#IS表,1))
>  確認 "共有状態では索引は使用できません。"
とありますが、共有状態では索引が使用できないのですか?

25447 Re:#整列状態で困っています。 neco 2004/03/15-11:16
記事番号25431へのコメント
今村 誠さんどうも、
共有:しない でしたら、#整列状態:索引番号を返しました。

でも、共有だとどうして 0 になるのでしょう。

25454 Re:#整列状態で困っています。 うにん 2004/03/15-12:35
記事番号25447へのコメント

>でも、共有だとどうして 0 になるのでしょう。

「表の編集状態」のところに「絞り込んだ後で索引を使用した並べ替えを行なった場合
または表を共有更新または共有参照で開いている場合は
索引状態にはなりません。」と書いてあります。

索引を使用中にだれかに一部を書き換えられたら索引の意味がなくなるので、
専有でないと無効なのでしょう。

昔と違って、絞込みをした後でも並べ替えができるので、あまり整列状態を
気にしないでもいいんじゃないでしょうか。

25455 Re:#整列状態で困っています。 原山 正洋 2004/03/15-12:37
記事番号25445へのコメント
neco さん、こんにちは

>やりたいことは、釦操作により"フリガナ"または"会社名"順の並べ替え、および解除をトグル式に
ということですが、

私が一覧表フォームでよく採用しているのは、
項目毎の見出し部分に、「マウス左クリック」を設定して
その項目毎の並べ替えをさせる。
ついでに、フラグを 0 と 1 に切り替えると
フラグ毎に昇順・降順にすることも出来ますね。
これなら並べ替えたい項目の数だけ好きなように出来ます。
又、「マウス右クリック」に解除を仕込むことも・・・
後はお好み次第です。
本題とは、はずれますがご参考になれば

25456 Re:#整列状態で困っています。 今村 誠 2004/03/15-12:55
記事番号25447へのコメント
うにんさんの説明とだぶりますが書いてしまったのでアップします。(^o^)

桐を起動してヘルプ→トピックの検索→キーワード
「索引」と入力→表示→索引定義→表示
ここのノートのところに詳しく書いてあります。
necoさんが桐9でないと見えないと思うので引用して
おきます。

1)部分一致検索は、索引を使用しない方が高速です。
2)絞り込み状態のときは索引が使用されません。
3)絞り込み併合と削除併合は、元表の照合項目を索引
  状態にしておくことで、実行時間を短縮できます。
4)表を共有更新または共有参照で使用した場合、索引
  は使用されません。※※※※
5)削除した索引を表から消去する場合は、[ファイル]
  メニューの[表整理]を実行します。

仕様ですのでしょうがない ですね!!

#整列状態と#索引状態の用語について
今現在はどちらでもかまわないと思いますが、「整列」
という一括コマンドは、「並び替え 索引名=」と変更
されたので、次のバージョンで使えなくなることもあるので、
どちらかといえば#索引状態の方がいいのではないでしょうか。
25460 Ver8 SP7 なので#索引状態は使えませんでした neco 2004/03/15-15:43
記事番号25390へのコメント
みなさま方には色々とお教えいただき、有難うございます。
#索引状態を使いたかったのですが、Ver8 SP7 にはありませんでした。
現在会社が貧困状態なのでバージョンアップできません。
(クライアント数8のため)
で、フラグをしっかり管理して望みたいと思います。

追考:
  #絞り込み状態だと共有でも使えるのになぁー・・・
25461 Re:Ver8 SP7 なので#索引状態は使えませんでした 悲しげ 2004/03/15-16:13
記事番号25460へのコメント
necoさん wrote

>#索引状態を使いたかったのですが、Ver8 SP7 にはありませんでした。

「#整列状態」と「#索引状態」は、単に名前を変えただけで、
中味は全く同じなのでおます。
だから使ってみてもガッカリするだけでしょう。(^^;)
ちなみにV9でも「#整列状態」は使えます(「#索引状態」に自動読替)。

それよりも、所期の目的からすると、#25455の原山さんの方法がベターだと思います。
どの並べ替え状態なのかも明示したければ、
項目毎の見出し部分の背景色or前景色orフォント太さ辺りを、「マウス左クリック」イベントで
変えてみるとかもあり得ますし。

戻る