過去の桐井戸端BBS (桐ver.8)
9290 一括処理で並べ替え条件を選択したい 藤崎 2001/01/11-18:11
一括処理のなかで並べ替え条件を指定しないで、その部分だけ会話形式に戻して条件を指定した後、
また一括処理に戻すにはどうしたらいいのでしょうか。
9292 Re:一括処理で並べ替え条件を選択したい 佐田 守弘 2001/01/11-19:43
記事番号9290へのコメント
藤崎さん
●始めに
まず最初に述べておきます。
絞り込みの場合には、「絞り込み 会話」といったコマンドがあり、絞り込み操作だけを会話で行う方法があります。
しかしこれと同じ様に並べ替えを会話で行う一括処理コマンドはありません。
ただし、「ウィンドウ会話」コマンドを使えば、会話処理に入りますから、一般的な会話処理と同じ様に、
桐のメニューから絞り込みを行えばよい訳です。
またイベントを使う場合には、そもそもイベントは会話処理の中で行われる自動操作ですから、
同様に桐のメニューから自由な操作が行えます。

●2つの実現方法
以上は前提なのですが、質問の主旨は、あるボタンを押したら、
予め用意されている並べ替え条件の中から1つを選んで絞り込みを行いたい、という事なのだと解釈します。
これを実現するには、2つの方法があります。
その1つは、アマチュア向けの方法、もう1つはプロ向けの方法です。

@アマチュア向けの方法
自分で作って自分で使うのがアマチュアユーザーです。
今後どの様な並べ替え条件が登録されるか予測できませんが、
それらを一覧表示して、その中から並べ替え条件を選ぶ事が、この目的とします。
アマチュア向けと書きましたが、実は面倒な方法です。
まず、「#並べ替え条件数」関数を使うと、その表に登録されている並べ替え条件の数が調べられます。
また、「#並べ替え条件名(n)」関数で、n番めの並べ替え条件名が調べられます。
これらの関数を使って、並べ替え条件名を調べ、画面表示して選択する方法を行います。
画面表示と選択には、メニュー3コマンドを使う方法などがあります。
ただし実際には「コマンド」コマンドで実行させるコマンド文字列を作り出す様な事になるかと思います。
その他には、上記の関数で調べた並べ替え条件名を表に書き込み、
サブフォームを表示してその中から選ばせるといった方法も考えられるでしょう。
アマチュア向けの自由度がある方法ですが、いざ作ろうとすると、かなりの手間になると思います。
また、並べ替え条件名の登録に際しても、分かりやすい名前を付けないと、操作ミスの原因になります。

Aプロ向けの方法
プロのプロたるゆえんは、予めシステムの設計をきちんと行っておく事に尽きます。
つまり、どの様な並べ替え条件を用意すればよいかが、始めから決められますし、後からの追加は許しません。
ですから目的を達成するのは至って簡単です。
コマンドボタンで、「名前順」「電話順」「年齢順」といった並べ替えのメニューを必要な数だけ作っておきます。
そしてそれぞれにコマンドボタンの機能名で、予め作ってある並べ替え条件を設定すればでき上がりです。
作ってみればとても使いやすく、操作間違いのないメニューになります。
ですから、システム設計(どの様な並べ替え条件を作るかの設計に徹底的に時間を掛け、
クライアントと仕様書を取り交わす)さえしっかりできれば、後は簡単です。

佐田守弘(KS-00119)
9308 Re:一括処理で並べ替え条件を選択したい 藤崎 2001/01/12-22:27
記事番号9292へのコメント
佐田さん ありがとうございました.
さっそく@アマチュア向けの方法でTRYしてみました.
#並べ替え条件名(n)を配列変数にセットしたあと,
どうやってメニュー2コマンドのリストに持っていくかで今悩んでいます.もう少し頑張ります.

9310 「コマンド」コマンドを使うのが良いでしょう 佐田 守弘 2001/01/12-23:56
記事番号9308へのコメント
藤崎さん
ポイントを述べます。
メニュー2で作るであろうコマンドの記述の内容になるような文字列を、配列変数の値などを組み合わせて計算式で作り、
これを何か適当な変数に代入しておきます。
つまり、その変数名が「&実行したいコマンド」だとしたら、
代入 &実行したいコマンド="メニュー2,・・・・"+・・・・
の様な形で、コマンドに記述する内容と同じ文字列値を作り出して代入します。
コマンドの中に記述する二重引用符や、コンマなどがきちんとは入るように注意して下さい。

後は、
コマンド &実行したいコマンド
を実行すれば、目的を達します。

佐田守弘(KS-00119)
9320 Re:一括処理で並べ替え条件を選択したい kazu 2001/01/13-21:54
記事番号9290へのコメント
初めまして、kazuと申します。初心者です。
同じようなことを考えている人がいてとてもうれしいです。
以前 過去の桐井戸端BBS 一括処理  6297 簡易メニューで教えてください でご教授いただきました。
kazuは簡易メニューでその時は考えていました。
メニュー2と簡易メニュー両方考えてみました。
表を一つ用意していただき一括処理で実行してみてください。
なにぶん初心者ですので上手に動かないこともあるかと思いますが、その時はご容赦ください。

*** メニュー2 ***
   変数 数値{&並べ替え数,&I,&メニュー番号}
   変数 文字列{&ファイル名,&メニュー,&メニュー並び}
ファイル名入力 初期値="*.tbl",プロンプト = "表を選択してください",&ファイル名
  表 &ファイル名,表番号=1

   繰り返し
    &メニュー="",&メニュー並び=""
    &並べ替え数=#並べ替え条件数
      繰り返し &I=1,&並べ替え数
      &メニュー並び=#連結(&メニュー並び,#並べ替え条件名(&I),",")
      繰り返し終了
     &メニュー並び=#部分列(&メニュー並び,1,#文字数(&メニュー並び)-1)
    メニュー2 &メニュー番号,1,(5,5),"選びましょう", &メニュー並び
    ケース開始
     ケース(&メニュー番号=0)
      繰り返し中止
     ケース その他
     並べ替え 条件名=#対応文字列(&メニュー並び,&メニュー番号)
      表形式編集 ,画面消去=する
    ケース終了
     *変数管理 固有
    繰り返し終了
  表

*** 簡易メニュー ***
   変数 数値{&並べ替え数,&I,&メニュー番号}
   変数 文字列{&ファイル名,&メニュー,&メニュー並び}
ファイル名入力 初期値="*.tbl",プロンプト = "表を選択してください",&ファイル名
  表 &ファイル名,表番号=1

   繰り返し
    &メニュー="",&メニュー並び=""
    &並べ替え数=#並べ替え条件数
      繰り返し &I=1,&並べ替え数
      &メニュー=#連結(&メニュー,"{",#文字列(&I),",""",#並べ替え条件名(&I),"""},")
      &メニュー並び=#連結(&メニュー並び,#並べ替え条件名(&I),",")
      繰り返し終了
     &メニュー="{"+#部分列(&メニュー,1,#文字数(&メニュー)-1)+"}"
     &メニュー並び=#部分列(&メニュー並び,1,#文字数(&メニュー並び)-1)
    代入 &STR=”簡易メニュー &メニュー番号 ,ESC =有効 ,文字選択 = しない, \
           フォント={,,標準,""黒"",""空色""},\
           ヘッダ={""並べ替えメニュー"",,10,太字,""紺色"",""空色""}, \
           フッダ={"”終了はEscキーです"",,10,標準,""青"",""空色""}" \
           +","+&メニュー
    コマンド &STR
    ケース開始
     ケース(&メニュー番号=0)
      繰り返し中止
     ケース その他
     並べ替え 条件名=#対応文字列(&メニュー並び,&メニュー番号)
      表形式編集 ,画面消去=する
    ケース終了
    *変数管理 固有
    繰り返し終了
  表

9323 Re:一括処理で並べ替え条件を選択したい Ogo 2001/01/14-01:39
記事番号9290へのコメント
桐5のサンプルとして、次の場所の一括処理が参考になるでしょうか(桐8でも稼働します)。

http://www.icity.or.jp/usr/ogou/DOSfiles.htm#ReSort10

「TBLデータ初期整列状態変更CMD」

9349 Re:一括処理で並べ替え条件を選択したい 藤崎 2001/01/16-14:31
記事番号9290へのコメント
みなさん ありがとうございました。なんとか無事解決しました。
中学校の進路事務のためのシステムが拙作ながらできあがりました。
これからもよろしくお願いします。

戻る