過去の桐井戸端BBS (桐ver.9)
21990 一覧表形式フォーム上の任意の行の項目値を変数に取り込みたい とまと 2003/08/23-22:52
イベントにおいて、「フォーム呼び出し」で呼び出された一覧表形式フォーム上の任意の行のある項目値[受付番号]を
変数&受付番号に取り込みたいのですが・・・。
この変数を利用して別の表(明細表)のデータを絞り込みたいと思っています。

#行番号を利用できるかなと思い、「&行番号=#行番号」と記述し、
任意の行の行セレクタをクリックしてみたりしましたが、
変数には1行目の項目値が取り込まれます。
どのようにすれば、任意の行の項目値を変数に取り込むことができるのでしょうか。
どなたかご教授いただければ助かります。

21993 Re:一覧表形式フォーム上の任煮の行の項目値を変数に取り込むには しぼうかん 2003/08/24-00:15
記事番号21990へのコメント
とまとさん、こんばんは.

変ですね。行セレクタのオブジェクト属性のイベントタブの
マウス左クリックにチェックを入れてから、呼び出した
一覧形式フォーム用のkevファイルに以下の様な簡単なイベントを
書けばクリックしたレコードの項目値を変数に取り込めると思いますが、
もう少し詳しく書かれた方がいいのでは?

手続き定義開始 行セレクタ::マウス左クリック(・・・以下略
&受付番号=[受付番号]
手続き定義終了
21994 Re:一覧表形式フォーム上の任煮の行の項目値を変数に取り込むには 佐田 守弘 2003/08/24-00:32
記事番号21990へのコメント
とまとさん

●項目値を変数に取り込む操作
項目値を変数に取り込む事自体は、代入コマンドによって行います。
それ自体は難しい話ではなく、以下のコマンドを実行させるだけです。
 &受付番号=[受付番号]
これだけで、現在の行(カレントレコード)の[受付番号]の値が変数に代入されます。

それで、多分質問の意味は、「それをどこでどの様に行ったら良いのか?」の意味だと思います。

●取り込みの実行開始
多分、レコードを指定して、[受付番号]の値を取り込み、取り込んだ値で
別の表を絞り込む操作をおこなう実行開始のトリガを考えておられるとは思います。

いくつかの方法があるかと思いますが、コマンドボタンで行うのが簡単と思います。
以下の様な手続を作成し、コマンドボタンの機能名に手続き実行を設定して下さい。

手続きの内容は以下の様なものになります。
=====================================
手続き定義開始 受付番号取得()
 代入 &受付番号=[受付番号]
 (この後、明細表で絞り込みを行うコマンド群)
手続き定義終了
=====================================

●明細表を絞り込む操作
この明細表が既にフォームで開かれているのか、新たに開いて絞り込むのかによって、その方法が変わります。

>フォーム呼び出し」で呼び出された一覧表形式フォーム上の任意の行の

と書かれているので、既に開かれているのではないかと想像しますが、あっておりますでしょうか。
この場合には、現在開かれている一覧表形式フォームを閉じれば、
その前の(多分明細表を編集している)フォームに戻ります。

1)一覧表フォームを閉じる方法
ご存知だとは思いますが、機能名で「閉じる」を設定したボタンを作成しておき、
メソッド呼び出しコマンドでこのボタンを実行して閉じます。

2)明細表を絞り込む方法
次に戻った明細表で絞り込みを行う方法です。
フォーム呼び出しコマンドの次に、
 絞り込み [明細番号]{=&明細番号}
のコマンドがあれば、絞り込みが行えるはずです。

大ざっぱにコメントしましたが、手順をご理解頂けたでしょうか。
なお、新たに明細表を開こうとする場合には、その部分でやり方が異なります。

佐田守弘(KS-00119)
21995 Re:一覧表形式フォーム上の任煮の行の項目値を変数に取り込むには 悲しげ 2003/08/24-00:52
記事番号21990へのコメント
どっも、とまとさん
はるか昔、極めて短期間ではありますが、私も「とまと」なるハンドルネームを使っていたことがあります。
それはさておき「フォーム呼び出し」と云うことで敏感に反応してコメントします。
この場合は、行セレクタを指定しない方がよいです。
なぜなら、行セレクタは、必ずしも現在処理対象行とイコールではないからです。
そのココロは、行セレクタはCtrl+やShift+を組み合わせれば複数行を指定できるから、
と云う一点を挙げれば了解いただけると思います。
複数行を指定している時の現在処理対象行は?となると、レレレのオッサンになりますでしょ。(^^;)

さて、ではどうするか、その一例を挙げます。

フォーム定義で右クリックして「オブジェクトのリスト」を出す。
ファミリをひとつ新設(追加)する。
そのファミリについて、オブジェクトの属性/イベントタブから「マウス左クリック」を指定します。
(kevの該当する記述は後述)
次に、明細行の全項目を([Shift]+を使って)指定してから、
イベントタブで「ファミリ名」に当該ファミリ名(例えば「ファミリ_1」)を選びます。

その上でkevの記述は例えば次のようにします。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
名札 メイン
 変数宣言 固有,文字列{&code} /*別途宣言済みかも?*/



手続き定義開始 ファミリ_1::マウス左クリック(長整数 &マウス位置[2],・・・・・
 &処理中止=1
 *こうしておかないと、マウスクリックで訂正モードになるので
 &code=[code]
 *行全体をファミリ化したので、どの項目にフォーカスがあって
 *も[code]項目値を得ることができる。
 確認 &code  /*一応確認*/
手続き定義終了
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
ちなみにこの時、行セレクタを凹反転させた行とカレント行が必ずしも同じではないことを確認することも出来ます。(^^)v

マウスクリックではなく、[Enter]キーとか[F4]キーとかで指定したいのなら
「キーダウン」イベントを使いますが、それはまたの機会に。

いずれにせよ、これで「任意の行の項目値を変数に取り込むことができ」たので、
引き続く絞り込み処理に利用可能となります。

21997 Re:一覧表形式フォーム上の任煮の行の項目値を変数に取り込むには とまと 2003/08/24-11:29
記事番号21995へのコメント
しぼうかんさん、佐田さん、悲しげさん、深夜にもかかわらず貴重なご教授ありがとうございました。

おかげさまでで、変数に一覧表形式フォーム上の任意の行の項目値[受付番号]を取り込むことができました。
後になって思うと簡単なことでしたね。

これは、ある施設の利用に関する月次処理(数項目ある)のひとつで、
未収状況を把握するとともに、未収対象者に請求書を作成する処理の作成過程で起こったものです。

サブメニューにあるコマンドボタン「未収処理」を選んだ後、
@基本になるテーブル(伝票形式フォームで入力したもの)から未収のあるデータを絞り込 み、未収明細に読み込む。
A未収明細を受付番号ごとに行集計し、受付番号ごとの総括データ(金額は#合計値、
その他の項目は#項目値)を作成する。
B視覚的には、コマンドボタン「未収処理」を選ぶと、前記@、Aの処理の後、
フォーム呼び出しで受付番号ごとに集計した未収一覧を表示し、未収状況を把握する。
C前記Bで任意の行を選び(ここで壁にぶつかった)、フォーム上にあるコマンドボタン
「未収明細」を押すことによって、フォーム呼び出しで特定の未収データを表示する。
D前記Cのフォーム上に設けたコマンドボタン「請求書」を押すことによって、請求書を印刷する。

このような流れの中で、壁にぶつかったものです。どうもありがとうございました。

戻る