過去の桐井戸端BBS (桐ver.8)
11841 左側に明細一覧を表示し、カーソルのある行のデータを右側でカード形式で表示したい。 米田昌弘 2001/06/24-21:03
みなさんこんばんわ
過去ログに 今村さん 悲しげさん 佐田先生の記事がありましたのですが
よくわからなくてうまくうごかないのです。
リンクを設定するというのが具体的にどうするのかよく解らないのです。

やりたいことは
一つの表テーブルを対象に
画面の左側には 明細一覧を 表示して
画面の右側には 明細の内カーソルがある行の データを
カード形式にて 表示して
左側のカーソル移動にしたがって 右側の表示内容が替わっていく
ようにいたいのです。
両方に表示はされているのですが 左側のカーソルが移動いても
右側はそのままで 変更されないのです。
どうか宜しく ご教授のほど お願い致します。
米田昌弘

11843 Re:一つの表でメインとサブフォーム 米田昌弘 2001/06/24-21:33
記事番号11841へのコメント
自己レス
メインフォーム内のサブフォーム設定領域で
グループ項目を設定すればよかったんですね。
過去ログ見てもピンとこなかったもので
お騒がせいたしました。
米田昌弘

11844 Re:一つの表でメインとサブフォーム きりぎりす 2001/06/24-21:35
記事番号11841へのコメント
こんにちは米田さん、きまぐれコメンテータのきりぎりすです
いつも中途半端にコメントして他の皆さんにフォローしてもらっています
(あらためて感謝)
さてリンクの方法ですが最初に思い浮かぶのは表を多重化して、
同じ表をサブフォームに定義してグループ項目でリンクする手法ですが
これには1行ごとにユニークとなる項目が必要となりいくらかの制限事項も必要になります。
そこで素直に他方が移動したら他方も移動するといったイベントを記述する手法をとりあえずおすすめます。
(なぜとりあえずかというとちょっと酔っているせいです。)

イベントはレコード移動と削除などですが、双方向でつじつまを合わせる必要があることに注意ですかね。
イベントを受けたところで他方のレコードを同じ位置に移動してやります。

今高岡(富山)の実家でフラフラになっているきりぎりすでした。
(ああ、またフォローをしてもらわねばいけない。すいません)
11845 Re:一つの表でメインとサブフォーム 悲しげ 2001/06/24-22:52
記事番号11841へのコメント
>一つの表テーブルを対象に
>画面の左側には 明細一覧を 表示して
>画面の右側には 明細の内カーソルがある行の データを
>カード形式にて 表示して
>左側のカーソル移動にしたがって 右側の表示内容が替わっていく

どもっ、米田さん
過去ログのどの記事を指しているのかは判りませんが、
私の場合は、結局は別な方法(もしかしたらきりぎりすさんと同じ?)でこれを実現しました。
当然、イベントを使っていますが。

で、いつか【多遊】さんのところででも公開しようと思っていたのですが、
別件にかかりっきりで放置していました。

 ※でも近々拙作の「大作」(^^;)をようやく公開できそうです。
  その中には今回の件も含めて、私の3年間の試行錯誤の軌跡がギッシリ詰まっています。
  いえ、多分に洞(ホラ)ですけど(桐ならぬホラv8)。(^^;)

やり方はそう難しいことではありません。
メイン(カード)とサブ(一覧表)の編集対象表にそれぞれ同一の表を指定します。
「開始条件種別」での索引の設定と、「許可作業」での多重化チェックは当然必要です。
しかしながら、メインフォームのサブ部/サブフォームタブでの「グループ値リスト」は何と!設定しません
(グループでは無いので)。
また「リンク元サブフォーム」も空です(こっちの方は、私は未だに使い方が判らんっす)。
  
その上で、お望みの挙動は、双方のkevにて「レコード移動」イベントを設定する、たったこれだけで実現できます。

------------------メインフォーム側のkev-----------------------
名札 メイン



手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 &表No[1]=#表番号取得("某.tbl"),&表No[2]=#表番号取得("某.tbl",2)
手続き定義終了

手続き定義開始 フォーム::レコード移動(長整数 &行番号,長整数・・・・
 編集表 &表No[1]
 &code=[code]
 編集表 &表No[2]
 検索 [code]_&code
 編集表 &表No[1]
手続き定義終了
---------------------------------------------------------------

-------------------サブフォーム側のkev------------------------
名札 メイン



手続き定義開始 フォーム::レコード移動(長整数 &行番号,長整数・・・
 編集表 &表No[2]
 &code=[code]
 編集表 &表No[1]
 検索 [code]_&code
 編集表 &表No[2]
手続き定義終了
---------------------------------------------------------------

※フォーム開始時に、特定のレコードにジャンプさせたい時はメイン表とサブ表の双方において
発生する可能性を頭に置いておかないと、レレレの迷宮に入る恐れがあります。
レコード移動イベントはフォームオープン時にも発生するからです。
この点に苦しんだ私は、タイマーイベントを流用して、レコード移動イベントを
フォーム開始の次の時点でオンにするようにしたりもしてみたりしちゃいました。(^^;)

ps:変数について
私の場合は元々となるフォームの方で共通変数として宣言済ですが、
今回宣言するのであれば、メインフォームのkevの「メイン部」で
やることになるはずです。
11846 Re:一つの表でメインとサブフォーム 悲しげ 2001/06/24-22:59
記事番号11844へのコメント
どもっ、きりぎりすさん

>イベントはレコード移動と削除などですが、双方向でつじつまを合わせる必要があ

ははぁ、そうか、私は「削除」までは考えてなかったなぁ。
このまんまで削除したらどうなります?(同一表の多重化状態で)
って、自分で実験した方が速いですね。(^^;)

さて、その結果は?
片方を削除したらもう一方も自動的に削除されました。逆方向でも同様です。
まっ、同一表の多重化状態だから当然と云えば当然ですね。
(やばい、実務データを削除してしまった。後で復活させときゃなきゃ)(^^;)

11847 Re:一つの表でメインとサブフォーム 米田昌弘 2001/06/25-00:05
記事番号11841へのコメント
キリギリスさん  悲しげさん
さっそくのレス有難うございます。
解決できたレスと入れ違いのようでお時間をとりまして申し訳御座いません。
イベントは難しいのでなるべく逃げてと思って フォームだけでと思いまして
過去ログをさがしましたところ 佐田先生が イベントナシで実現できそうに
おっしゃっていたのですが 投稿して 試行錯誤していましたら
フォームだけでできちゃいました。

悲しげさんのイベントも 行数が少ないので私でも 理解できるかな???
一応イベントなしで実現できましたので
整理しておきます。
行削除とか 実験してませんが
多重化と リンクだけですのでたぶん大丈夫と思うのですが。
1つの表を対象にして フォームの左側に一覧表形式にて表示し
右側に該当行の個別明細データを表示する。
ちょうど 桐の表形式の 右側に拡張表示するように。

1.表テーブル 1っを 対象にする
2.この表テーブルで 伝票形式のフォームを作成する
3.同じくこの表で カード形式のサブフォームを作成する
 このときグループ値に 一意の項目を指定しておく。
 もちろん表の多重化 共有 を オン に 設定しておく。
4.最初の伝票形式のフォームにて
 サブフォーム領域を作成してサブフォームに
 カード形式のフォームを指定して
 属性設定のサブフォームのグループ値リストに 先ほどの
 一意の項目を指定しておく サフフォームのグループ変更は自動
 表の引継ぎに チェック
 このフォームの表の多重化もチェックいるかな。

これでイベントなしでもできちゃいました。
一応整理しておきました。
みなさま ありがとうございました。
米田昌弘


11848 Re:一つの表でメインとサブフォーム 米田昌弘 2001/06/25-00:15
記事番号11845へのコメント
悲しげさんへ
※でも近々拙作の「大作」(^^;)をようやく公開できそうです。
楽しみにしています。

皆様のプログラムはいつも感心させられます。
最初は なにをしてるのかさっぱりわかんないのですが
こんなやりかたがあるんだと いつも感心させられます。

公開されたときは このサイトでもアナウンスしていただけますか
よろしくお願いしたします。
米田昌弘

11851 Re:一つの表でメインとサブフォーム 悲しげ 2001/06/25-10:24
記事番号11847へのコメント
どもっ、米田昌弘さん
オー、ソーデシタ!
伝票wfmをメインフォームとし、例えばその右半部にサブフォームとしてのカードwfmを置く。
そしてサブフォームの方は、カードwfmなのに、無理やり
グループ項目を設定すると云う。
ワタシ、スッカリ忘レテイマシタ、モーロクシテキマシタネェ。(^^;)

ただ、ですね。
何故私がこの方式を使わないで、わざわざ「レコード移動」イベントを使ったのか、
その訳を思い出したので、附録的に(^^;)書いてみます。
それは、上の方式だと、左部の伝票wfmからはレコードを動かせるが、
右半部のカードwfmにフォーカスがあった時には動かせないのです。
私は、メインフォームをカードwfmとし(右半部に主要な中味を置く)、
左半部にサブフォームとしての一覧表.wfmを置きました。
見かけは、上のものと似たようなものになりますが、実態は逆転しています。
元々は、カードの方を[Up][Dn]で1枚めくりにして表示させていたのを、
一部項目を一覧表示させて高速にスクロールさせたかったことからの発想だった訳です。
で、この方式だと、メインフォームの右半部で[Up][Dn]や検索その他主作業を行い、
必要に応じて左半部で高速スクロールさせると云う使い方ができた訳でした。
ま、わざわざ新たにkevを起こしてまでやるほどのものでもないとは思いますが、
私の場合、このkevには他の処理も組み込んでいたので、
もうひとつ「レコード移動」イベントを追加するだけで、若干ながら操作性が善くなったと云う、
いわば一石二鳥であったと云う、それだけのお話。
11858 Re:一つの表でメインとサブフォーム 今村 誠 2001/06/25-12:30
記事番号11845へのコメント
悲しげさんはこんにちは

> 検索 [code]_&code

 ヘッダのグループ項目をなくして悲しげさん提案のイベントにしてみました。
 6000件程度のメイン&サブですが、すこしですが早くなったような気がします。
 私の場合、登録日で、リンクしていたので上記の式ではうまくいきませんでした。
 
 検索 [登録日]{&現在年月日},文字比較方法=自動,\
部分一致検索=しない,終了状態=&処理

検索コマンドの説明を見ると、文字列型変数となっていましたので、
数値や日時項目の場合{}での指定が必要なのかもしれません。

イベントを書かなくても出来ますが、イベントの方がカード形式に
グループ項目がないので動作が機敏になるのではないかと思いました。

11859 Re:一つの表でメインとサブフォーム 尾形 2001/06/25-12:56
記事番号11851へのコメント
どうも、過去にもあったですよね。
メインサブにしなくても、伝票形式フォーム1つだけで
可能の方法もあったですよね。
bonitoさんが書いてあったような・・・
【多遊】さんとこでも紹介してあったとおもいます。
この方法お気に入り (^_^)
11860 Re:疑似メイン&サブフォーム bonito 2001/06/25-13:43
記事番号11851へのコメント
米田さん、
この方法は前にもここのBBSに書きましたが

>2.この表テーブルで 伝票形式のフォームを作成する
>3.同じくこの表で カード形式のサブフォームを作成する

ごく特殊な場合を除いて、私なら伝票フォーム一つで済ませます。
フォームの左半分には普通の伝票様の(一覧ともおぼしき)、
見出し的な項目を1行(たまには2行)、2・3項目配置し、繰り返し表示をON(デフォルト)にします。
右半分には行などお構いなしでカード様の(1レコードの明細)を配置し、
その全てのオブジェクトの繰り返し表示をOFFにします。
これなら、一つの表しか開いていないので、あたりまえですが
左右は同じレコードを表示しますし、kevでこの表を操作する場合、
メイン側なのかサブ側なのか考えないで済みます。
(イベントを受け取る場合も...)
もし時間があったら試してみて下さい。

ちなみこの方法を思い付いたのは「五郎」の複合フォームと
桐のサンプルの左が名前(複行)で、右がその画像(一面)、
という(ファイル名は失念)ものから...。

<蛇足>
左側は私としては見出しなのでここでの入力は禁止する意味で
フォーカス設定を禁止としています。ただそのままだと左側の
とある1行の行セレクタ以外をクリックしても、処理対象行は
移動せず、はなはだつまらない事になるので、
これらのオブジェクトのマウスイベントもオフにし、その後面に表の
計算項目をひとつ置いておきます。
そうするとクリックはこの計算項目が受け取って処理行の移動が行われます。
(表示が醜いので若干のKEV操作=フォーカス移動も行っていますが (^^; )

悲しげさん、
金、土、日と北海道の東側下半分を回って来ました。
自然と人間、追い詰められた民族、民族性、混血...
雄大な景色のなかでそんな事を考えていました。



11866 Re:一つの表でメインとサブフォーム 悲しげ 2001/06/25-15:26
記事番号11858へのコメント
どもっ、今村さん

>> 検索 [code]_&code

アンダーバーを使った変数による検索は、お調べになったとおり文字列型変数だけですね。
数値系の項目なら
 検索 [項目]=&変数
だけでも(つまり{ }で囲まなくても)動くと思いますよ。

ただですね、文字列型については
 検索 [項目]{&変数}
とか
 検索 [項目]{*&変数*}
とかは、正式サポートじゃないようなのです。アンダーバー検索が推奨とのことで。
その理由は私には判りませんが。
ただ、私自身はこのように試行してみて、失敗した経験はありません。
この辺は色々異論があるようでもありますが……。
11870 Re:一つの表でメインとサブフォーム 悲しげ 2001/06/25-19:27
記事番号11860へのコメント
文字どおり、まとレスします。
3様の方法があると云うことで、この機会に例としてまとめました。
近々【多遊】さんところで公開してもらうことにします。
以下、その説明テキストだけ挙げておきます。(^^)v
-------------------------------------------------------------------
          左右連動フォーム3態

1)JushoA伝.wfm
 これは伝票フォーム1つだけなので、最もシンプルである。左半部は通常の伝票だが、
特徴は右側2項目の「高さ」を伝票部の高さいっぱいまで縦に広げ、
かつ表示タブの「繰り返し表示する」のチェックを外しているところがミソ。
 確か、bonitoさん提唱。

2)JushoBm.wfm と JushoBs.wfm
 メインフォームが伝票(左半部)、サブフォームがカード(右半部)であるメイン&サブフォーム。
同一表でのメイン&サブだから、当然ながら編集対象表タブの許可作業ボタンに
おいて「多重化」のチェックが必要である。
 メインフォーム内のサブ部(右半部)は伝票明細部の高さいっぱいまで縦に使っている。
特徴は、サブフォームにおいて、カード型であるにもかかわらず、
ヘッダ部に無理やりグループ項目を設定していること(余計なことながら、
グループ項目は画面表示をオフにしてある)。
メインフォームのサブ部の「グループリスト」の指定は、このグループ項目値を指定している。
フォーカスがサブ部に入っている時の挙動に少し難ありかも?
 初めの提唱者不詳(佐田さんだろうか?)。

3)JushoCm.wfm と JushoCs.wfm
 メインフォームがカード(右半部)、サブフォームが一覧表(左半部)であるメイン&サブフォーム。
リンク的なものは特段設定してはいない。
但し「多重化」のチェックは上に同じく必要。
 特徴は、kev(イベント)を使っている点、具体的には双方において「レコード移動」イベントを設定し、
多重化表のそれぞれに交互に編集表を移しつつ、キーとなる項目値で検索してレコードを指定している。
多重化表の表番号は「フォーム開始」イベントに記述した関数で取得している。
 自由度は高いが(っつーのも我田引水的?)、kevを設定しなければならないのが面倒かも?
 提唱者は私、悲しげだと思う(が、きりぎりすさんかも)。
 ※注 「レコード移動」イベントは、「フォーム開始」時にも、
メインとサブの両方で発生している点は銘記しておかないと、後々苦悩する場合があろう。
--------------------------------------------------------------------
ps:
誤認があれば公開前にご指摘お願いします。

ps:bonitoさん江(私信)

>金、土、日と北海道の東側下半分を回って来ました。
>自然と人間、追い詰められた民族、民族性、混血...
>雄大な景色のなかでそんな事を考えていました。

鰹の回游でしょうか(意味不明)。
東側上半分なら私んところだったんですけどね。
またの機会があればお会いしましょう。
11879 Re:一つの表でメインとサブフォーム 米田昌弘 2001/06/25-21:37
記事番号11870へのコメント
キリギリス  今村 悲しげ bonito 尾形
みなさま リプライ 有難うございます
また 悲しげ さん まとめまで 有難うございます。
私は 
1の方法は ぜんぜん思いもよりませんでした。
  bonita さん 提唱ですか
これが一番簡単で私向きです。
なるべく簡単に安定してて  簡単がなによりです。
蛇足ですが インターネットてすごいですね
過去ログより今村さんは九州 悲しげさんは 北海道
私 奈良なんです。  

みなさま有難うございました。
米田昌弘

12029 Re:一つの表でメインとサブフォーム 【多遊】 2001/06/29-23:49
記事番号11848へのコメント
>悲しげさんへ
>※でも近々拙作の「大作」(^^;)をようやく公開できそうです。
>楽しみにしています。

>公開されたときは このサイトでもアナウンスしていただけますか
>よろしくお願いしたします。
>米田昌弘
>

米田さんこんばんは。
上記、悲しげさんの、

>※でも近々拙作の「大作」(^^;)をようやく公開できそうです。

先ほど登録させていただきましたので、ご紹介させていただきます。
一家に一台ではないのですが、桐ユーザーのかたには是非みて欲しい作品です。

【多遊】
  http://www2u.biglobe.ne.jp/~s_tanaka/

12040 Re:一つの表でメインとサブフォーム 悲しげ 2001/06/30-11:15
記事番号12029へのコメント
どもっ、【多遊】さん、アナウンスありがとうございました。

>上記、悲しげさんの、
>>※でも近々拙作の「大作」(^^;)をようやく公開できそうです。
>
>先ほど登録させていただきましたので、ご紹介させていただきます。
>一家に一台ではないのですが、桐ユーザーのかたには是非みて欲しい
>作品です。

とありますが、今回のものは「大作(^^;)」ではありませんで「小作」です。
本の数時間で作ったものですから。
本当の「大作(^^;)」は3年ものざます。
ちなみに、読みは「こさく」「だいさく」ではありませんよ、「しょうさく」「たいさく(たらっ)」と読みます。(^^;)

で、今回の「こさく」ですが、一部問題蟻だったので、修正版を現在挙げている途中です。(^^;)(^^;)

戻る