(現在 過去ログ16 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■2312 / inTopicNo.1)  グループ値以外でフォームを表示したい
  
□投稿者/ 沼田 -(2007/03/27(Tue) 10:39:41)
    いつもお世話になります。京都の沼田です。
    V9sp1を使っていますが、次のようなことをしたいと思っています。

    元表.tblの項目[項目1]をグループ値にした表示.wfmを作っていますが、グループ指定で「次」を選択したときに、別の項目[項目2]の順番で切り替えて行きたいのです。

    [項目1][項目2]はどちらも数値項目ですが、[項目1]の値は同じでも[項目2]の値が違っている場合があります。[項目1]でグループ選択する必要があるのですが、フォームでの確認作業では[項目1]グループ内の先頭レコードの[項目2]の値で昇順に表示させたいのです。
    しかし、どちらの項目も連番ではありません。
    また、フォームの表示を[項目2]で、ということなので、グループ項目[項目1]は非表示にしています。

    [項目1]をグループ項目にすると順番には表示されますが、当然のようにグループの構成が違ってきます。

    フォームのボタンにグループ指定を定義するのではなくて、手続き実行を定義して、希望の処理を手続きに書くしかないと思っています。
    切り替えたい[項目2]の値を変数に入れておき、対応する[項目1]の値を求めてグループ値訂正する、という手順ではないかと思っていますが、[項目2]が連番ではありませんので、繰り返し命令でグループ選択できるかどうかをチェックしながらの作業になるのかな、と思っています。

    考え方として、もう少し効率的な方法はありますでしょうか。
引用返信 [メール受信/OFF] 削除キー/
■2313 / inTopicNo.2)  Re[1]: グループ値以外でフォームを表示したい
□投稿者/ 今村 誠 -(2007/03/27(Tue) 12:53:50)
    沼田さんこんにちは
    > 考え方として、もう少し効率的な方法はありますでしょうか。
    数値がありどの様な数値か分からないのでイメージが沸きません。
    サンプルの表をアップしますので、数値を記入してこのようにグループ表示が
    したいと分かるように説明された方がいいと思います。


引用返信 [メール受信/OFF] 削除キー/
■2314 / inTopicNo.3)  Re[2]: グループ値以外でフォームを表示したい
□投稿者/ 沼田 -(2007/03/27(Tue) 16:40:17)
    今村さん、いつもご迷惑をおかけします。

    サンプルを添付してみました。
    フォームのグループ項目([2数値])は非表示になっています。ヘッダに見えているのは項目値([1数値])ですが、[次]や[前]ボタンで順番に表示を切り替えたいと思っています。

    この要求だけなら見えている項目([1数値])をグループ項目にすれば良いのですが、対象表のデータに問題があります。
    [2数値]でグループ化したいのですが、項目値に7073224が入力されているレコードは10件あり、その内3件の[1数値]の値が10になっており、他の7件のデータの1とは異なっています。
    ヘッダに表示させる[1数値]の値は、グループの先頭レコードの値でかまいません。

    このような条件の中で、[2数値]グループ内の[1数値]の値が同じであり、かつヘッダの[2数値]をテキスト項目にし、[1数値]をグループ項目にした場合の動きと同じ効果を出したいのです。

    コマンドボタンで別に組んだ手続きを実行させるしかないと思っていますが、いかがでしょうか。


1174981217.lzh
/68KB
引用返信 [メール受信/OFF] 削除キー/
■2316 / inTopicNo.4)  Re[3]: グループ値以外でフォームを表示したい
□投稿者/ 今村 誠 -(2007/03/27(Tue) 17:23:48)
    沼田さんこんにちは、1数値が1の時は10件の文字列を表示することは
    分かりましたが、1数値が10の時はどの様に表示するのですか?
    また1数値が18の時はどの様に表示するのですか?
    絞り込みの手続きを書くだけのように思います。
    1数値が昇順で進んだときに2数値の要素を検索し2数値の要素と同じ
    数値が存在したらその文字を表示しヘッダ部分に1数値の1を表示す
    るのか、10を表示するのかのルールが分からないし、1数値のグループを
    次 次と押したときに17で18の文字を表示し18でも17の文字を表示する
    必要があるのじゃないでしょうか?
    2数値が同じ値をとる1数値の要素が2つしかないと決めつけられるのであれば
    表示ボックスは固定でいいと思います。

    とりあえず、10を1数値で指定したときの表示をお聞きしないと先に進みません。
引用返信 [メール受信/OFF] 削除キー/
■2320 / inTopicNo.5)  Re[4]: グループ値以外でフォームを表示したい
□投稿者/ 沼田 -(2007/03/27(Tue) 22:31:35)
    今村さん、ややこしい設定で申し訳ありません。

    要求していることは[2数値]でのグループ化です。[1数値]が1であれ10であれ、その他の値でも関係なく、グループ化されて表示されなければならないのは[2数値]での絞り込みです。[2数値]でグループ化されたデータの集まりを、そのグループの先頭レコードの[1数値]の昇順に画面に表示させたいのです。

    [1数値]に入力されるデータは序列を表すとお考え下さい。
    今は年度替わりの時期です。人事事務でも予算執行の事務でも、年度が替われば序列を変更しなければならない項目が出てきます。前年度に13というコードが割り当てられている一定の条件を満たすレコードの集まりを、本年度は20というコードとして運用していかなければならないような事例です。
    それに対して[2数値]に入力されているデータは、生涯の固有番号とお考え下さい。人事事務なら、その人個人を識別するコードになります。
    個人の識別コードは何時になっても変わりませんが、序列を表すコードは年度が変われば変わることがあります。
    年度替わりの3月4月なら、同じ識別コードでありながら、前年度分として処理する場合は前年度の序列コードが入力され、本年度分として処理する場合には前年度とは違う本年度用の序列コードが入力されることもある、ということです。
    もちろん、そのレコードが前年度分として処理するのか本年度分として処理するのかを判断するための、もう一つの項目が必要ですが....。

    いずれにしても、フォームに置いた項目をグループ項目とすることで希望の絞り込みをすることはできます。この事例の場合でしたら、[2数値]での絞り込みです。
    この状態で次のグループを画面に表示するために、コマンドボタンにグループ指定を定義してパラメータに「次」を定義すると、[2数値]を昇順に並べ替えた次のグループを表示することになります。

    しかしこの設定でしたら、先頭グループの[2数値]の値は一番若い数値になりますが、[1数値]の値も一番若い数値とは限りません。
    要求は、先頭グループを指定した時に[2数値]ではなくて[1数値]の値が一番若いグループが表示されることなのです。

    もちろん、[2数値]でグループ化されたレコードの中には[1数値]の値が複数になっていることもあるわけですが、”一番若い”という意味はグループ化されているレコードの先頭レコードの値だけで判断すれば十分だと思っています。
    [1数値]の値が1であれ10であれ18であっても、ヘッダに表示させるのは先頭レコードの値である1だけで良い、ということです。

    おそらくこの処理は、表の定義やコマンドボタンの定義だけで実現させることは無理じゃないかな、と思っています。イベントを書くこと無しで実現できればそれに越したことはないんですが....。

    コマンドボタンに手続き実行を定義するとした時の手続きの内容ですが、
    まず[1数値]の値に対応する[2数値]の値を取得しなければなりません。
    ところが、[1数値]の値は複数ある場合もあり、新年度用として例えば10となっていても、前年度にも10という値は存在していて、しかも別の[2数値]の値になっている場合が考えられます。
    [1数値]と[2数値]は1対1でセットになっている訳ではありませんから、この取得に、まず工夫をしなければなりません。

    まず[2数値]でグループ化した後に、各グループの先頭レコードだけを絞り込んで、それを一覧にした表を別に書き出して、それを対応表として使う、というような工夫を前処理としてやっておかなければいけないような気がしますが、そう簡単ではなさそうな気もします。

引用返信 [メール受信/OFF] 削除キー/
■2322 / inTopicNo.6)  Re[5]: グループ値以外でフォームを表示したい
□投稿者/ 今村 誠 -(2007/03/28(Wed) 02:23:01)
    沼田さんこんにちは
    > 要求していることは[2数値]でのグループ化です。[1数値]が1であれ10であれ、
    > その他の値でも関係なく、グループ化されて表示されなければならないのは
    > [2数値]での絞り込みです。[2数値]でグループ化されたデータの集まりを、
    > そのグループの先頭レコードの[1数値]の昇順に画面に表示させたいのです
    索引を作ると直ぐ解決しますよ。
    サンプルを見やすいように替えました。
引用返信 [メール受信/OFF] 削除キー/
■2325 / inTopicNo.7)  Re[6]: グループ値以外でフォームを表示したい
□投稿者/ 沼田 -(2007/03/28(Wed) 13:41:19)
    今村さん、ありがとうございます。

    > 索引を作ると直ぐ解決しますよ。

    索引というと、元表.tblの索引定義のことだと思いますし、実際にそのように定義をしていただいています。
    この状態で表示.wfmを開いてみたのですが、
    今、やりたいと思っていることは、表示.wfmのヘッダ部分の[次]ボタンをクリックしていくと、テキスト[1数値]の表示が昇順に切り替わっていくことです。
    今の状態ですと、[次]ボタンをクリックしていっても[1数値]の表示は昇順には切り替わっていきません。グループ項目が非表示の[2数値]であるために、[2数値]の値の昇順にしか切り替わってくれないからでしょう。

    このフォームの[次]ボタンで、ヘッダの[1数値]が順番に変わっていくような工夫がないものでしょうか。

引用返信 [メール受信/OFF] 削除キー/
■2326 / inTopicNo.8)  Re[7]: グループ値以外でフォームを表示したい
□投稿者/ うにん -(2007/03/28(Wed) 14:15:54)

    > このフォームの[次]ボタンで、ヘッダの[1数値]が順番に変わっていくような工夫がないものでしょうか。

    グループ値でないものを使ってグループ値の順番を指定するのは論理的に無理があるでしょう。
    [1数値]をグループ内で共通の値として別フィールドに置換なり結合で入れれば
    グループ値として使えると思います。

    ただ、この共通の値をどこから持ってくるか
    >もちろん、[2数値]でグループ化されたレコードの中には[1数値]の値が複数になっていることもあるわけですが、”一番若い”という意味はグループ化されているレコードの先頭レコードの値だけで判断すれば十分だと思っています。
    というところがわかりません。
    ソートしてないレコードの「先頭」というのは意味がないので、結局
    「意味のない値を元に順番を決めたい」ということになります。

引用返信 [メール受信/OFF] 削除キー/
■2330 / inTopicNo.9)  Re[8]: グループ値以外でフォームを表示したい
□投稿者/ 沼田 -(2007/03/28(Wed) 18:04:22)
    うにんさん、いつもありがとうございます。

    > [1数値]をグループ内で共通の値として別フィールドに置換なり結合で入れれば
    > グループ値として使えると思います。

    今回の要求をざっと見ただけでも、無理な要求だろうなということは気付いています。
    フォームに、絞り込んだレコードを表示していくのは、グループ項目の昇順になるということは当然ですので、[1数値]の順番で切り替えて行きたいなら、[1数値]をグループ項目にするしかないのも、当然のことだと思っています。

    考えてみた工夫をファイルにして添付してみます。
    表示.wfmを開き、[先頭]ボタンをクリックすると、ヘッダの[1数値]が「1」となりますが、データ領域を見ると「1」と「10」が混在しています。
    [次]ボタンをクリックすると、ヘッダ部の値が昇順で次々に切り替わります。

    [1数値]に複数の値を入力しなければならない状況そのものに問題があるのは分かっていますが、仕事の関係から、5月くらいまでは旧年度に使用していた[2数値]データを使わないといけないんですが、[1数値]は4月1日で違う値に変えなければならないのです。
    通常は[1数値]と[2数値]は1対1となっていますが、4・5月のみ2対1になりそうなのです。

    イベントファイルも書いてみましたが、もう少しスマートな工夫があるようでしたら指摘いただけるとうれしく思います。


numata03.lzh
/41KB
引用返信 [メール受信/OFF] 削除キー/
■2332 / inTopicNo.10)  Re[9]: グループ値以外でフォームを表示したい
□投稿者/ 今村 誠 -(2007/03/28(Wed) 19:50:02)
     沼田さんこんにちは全く中身が分かりませんが、フォームを
    作ってみました。
     こういうときはどの様な数値を検索して表示したいかを順番
    に記述して、このようになればいいと詳しくお書きにならない
    と、うまくいかないと思います。
     動作がどうなっているか検証もできませんが、一応アップし
    てみます。駄目なときは無視して下さい。
引用返信 [メール受信/OFF] 削除キー/
■2334 / inTopicNo.11)  Re[10]: グループ値以外でフォームを表示したい
□投稿者/ 沼田 -(2007/03/29(Thu) 00:47:25)
    自分で考えてみたんですが、フォームがわかりにくいので少し触ってみました。

    グループ項目[2数値]で絞り込まれたレコード群が、画面に出したい[1数値]の順番で表示されます。これで要求していた事項は、一応は解決しています。

    やりたいことの説明が回りくどくて、余計に分かりづらくなっていたかもしれません。

    もっと、効率的な方法があれば良いんですが....。

numata04.lzh
/71KB
引用返信 [メール受信/OFF] 削除キー/
■2335 / inTopicNo.12)  Re[11]: グループ値以外でフォームを表示したい
□投稿者/ 今村 誠 -(2007/03/29(Thu) 07:12:03)
    2007/03/29(Thu) 10:51:11 編集(投稿者)

    沼田さんこんにちは、沼田さんのイベントを見て作り替えてみました。
    2数値は単一化して1数値の小さい順に表示させたらいいのであれば
    サンプルのようにしたらいかがでしょうか?
    対応文字列に変更しました。
    8桁の2数値であれば400名までは対応できます。

numata1.lzh
/36KB
引用返信 [メール受信/OFF] 削除キー/
■2336 / inTopicNo.13)  Re[12]: グループ値以外でフォームを表示したい
□投稿者/ 今村 誠 -(2007/03/29(Thu) 15:55:34)
    沼田さんこんにちは、難しいことをたくさんするより、
    グループを非表示にするのだったら、グループ移動用の作業項目を
    一つ作り併合なり結合なり一括処理を使い、イベントで作った、
    2数値の並び順に連続番号を振り、それをグループ移動にして、検索
    したりするときは、グループ解除をして2数値を検索し、グループ
    選択すれば、簡単に解決すると思います。

引用返信 [メール受信/OFF] 削除キー/
■2338 / inTopicNo.14)  Re[13]: グループ値以外でフォームを表示したい
□投稿者/ 沼田 -(2007/03/31(Sat) 17:27:22)
    今村さん、ありがとうございます。いよいよ年度替わりになりましたので、提案頂いているサンプルをじっくりと見てみる時間がなかなか取れませんでした。
    物事をことさらに難しくしてしまうのは、どうも生来のクセのようです。

    ところで、サンプルがすごくスッキリしているので工夫次第でこのようにもできるんだな、というのが率直な感想です。
    特に、#対応文字列で取得するための候補の文字列を作るのに、検索で代入させていくというのは全く思い付きませんでした。なるほどと思いました。
    提案頂いているこの工夫を、ぜひ取り入れたいと思います。ありがとうございました。

    この中で2点ほど確認したいことがあるんですが、このスレッドとは別のテーマになりますので、改めて投稿したいと思います。

解決済み!
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -