過去の桐井戸端BBS (桐ver.9)
24597 コマンドボタンで別の表のフォームを表示したい 悩み太郎 2004/02/05-16:16
 初めて質問します。何度も質問しようと思いながら、初心者レベルの質問が恥ずかしく、
過去ログを利用してなんとか解決、勉強してきました。
 今回は同じような質問を見つけることができなかったので思い切って投稿した次第です。

 桐V9で一覧表フォームを作っております(連絡.wfm)。行セレクタの横にコマンドボタンを設け、
そのボタンを押すと別の表の一覧表フォーム(氏名をグループにしたもの−個人日程.wfm)を表示したいのです。
共通項目は氏名、会員番号です。
サブフォームを使うことを考えたのですが常に表示する必要はないので必要な時だけ出して確認したいのです。

 どうかよろしくお願い致します。

24598 Re:コマンドボタンで別の表のフォームを表示したい しぼうかん 2004/02/05-19:15
記事番号24597へのコメント
悩み太郎さん、こんばんは.

コマンドボタンの機能名でモーダルフォームを選び、機能パラメータに"個人日程.wfm"と書けばうまくいくと思います。

24599 Re:コマンドボタンで別の表のフォームを表示したい アックン(=^・^=) 2004/02/05-19:16
記事番号24597へのコメント
悩み太郎さん、こんばんは。わかりづらい点は遠慮なく聞いてくださいね。
見本を作ってアップする時間がないので、ぼくが実際に毎日使っているイベントからコピぺしました。

ぼくが実際に使っているふたつのフォームは編集対象表が同一なので、表を多重化しています。
この点はイベントを修正しました。&氏名は固有変数でいいと思うのです
が、局所変数のままで修正していません。固有変数にしたいときは、動作確認後に修正してください。
面倒おかけします。
アップしたイベントは実際に動作させてませんから、素直に動かないかも。(^^;

ところで、連絡.wfmはデータ入力するフォームですか。閲覧するだけですか。

***--------- (C)アックン(=^・^=)
●連絡.kev
名札 メイン
  var 局所 , 文字列 { &氏名 }
*
proc フォーム::フォーム開始(長整数 &表番号)
  &連絡win = &hwindow
end
proc フォーム::フォーム終了()
  &連絡win = ""
end
proc b_dmy::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラ
グ,参照 長整数 &処理中止)
 if( .not#eof )
   &氏名 = [氏名]
   method @フォーム.更新モード設定( 0 )
   cond( .not&個人日程win ) フォーム呼び出し "個人日程.wfm" ,\
                        編集表=開く, 終了状態=&end
   &氏名 = ""
 end
end
***-----------------------------------------
●個人日程.kev
名札 メイン
 cond( .not#v( "個人日程win" ) ) var 固有, 整数 { &個人日程win }
 cond( .not#v( "連絡win" ) ) var 固有, 整数 { &連絡win }
*
proc フォーム::フォーム開始(長整数 &表番号)
 &個人日程win = &hwindow
 if( .not#lv( &連絡win , "氏名" ) )
   method @フォーム.更新モード設定( 36 )
 else
   グループ検索 { [氏名] = #lv( &連絡win , "氏名" ) } , 終了状態=&end
 end
end
proc フォーム::フォーム終了()
 &個人日程win = ""
end
***-----------------------------------------

24601 Re:コマンドボタンで別の表のフォームを表示したい 佐田 守弘 2004/02/05-22:08
記事番号24597へのコメント
悩み太郎さん

フォームの呼び出しは、イベントを使うなら、フォーム呼び出しコマンドで行います。
しかし、質問の主旨は、呼び出したフォーム上で、元のフォームのデータに応じて
絞り込みを行う必要があるので、この点での工夫が必要です。

簡単にポイントだけを述べます。

●フォームを呼び出す。
フォームを呼び出す前に、絞り込む値を変数に取り込んでおく必要があります。
質問の例では、[会員番号]の値を使うのが良いでしょう。つまり、
 代入 &会員番号=[会員番号]
 フォーム呼び出し <呼び出すフォーム>
これを一般手続きとして作成し、コマンドボタンで手続き実行で呼び出します。

●呼び出されたフォーム
フォーム開始イベントで、表のデータを絞り込むコマンドを実行させます。
 絞り込み [会員番号]{=&会員番号}
です。

佐田守弘(KS-00119)
差し支えなければメールを記載するかお知らせ下さい。
サンプルをお送りします。

24605 Re:コマンドボタンで別の表のフォームを表示したい 悲しげ 2004/02/05-23:01
記事番号24598へのコメント
しぼうかんさん wrote

>コマンドボタンの機能名でモーダルフォームを選び、
>機能パラメータに"個人日程.wfm"と書けば

確かにこれで別フォームは開きますが、おそらく悩みさんはその時"連絡.wfm"で
カーソル行があった会員をグループ表示させたいのだと察します。



さて、既にアックン君が#24599でイベント例を書いておりますし、実は私もこのような処理は
ともかくイベントで書いてしまうのですが、元々のタイトルで云うところの
「コマンドボタンで・・・」が「イベントを使わないでコマンドボタンのみで」かもしれないと云う仮定でちょっと考えてみました。

実は個人日程なる表の構成がイマイチ想像できないのですが、とりあえず氏名と
会員番号は一対一対応であると決めつけて、ここでは会員番号のみで考えます。

まず、呼び出される方の"個人日程.wfm"の設定。
▼ワークスペース(フォームの枠外)に仮称"b開始時"なるコマンド牡丹を設ける。
▼その機能と機能パラメタリストは
1.実行条件    &STR<>""        (その他)
2.グループ解除              (行操作)
3.検索_値    [会員番号]=&STR    (編集)
4.グループ再抽出             (行操作)
補注 1の記述は単独で開いた時に動かさないために。
   2以降は牡丹のグループ検索でなぜかパラメータ指定がない
    ので苦肉です(T_T)。他に名案あるでしょうか?
▼フォームオブジェクト属性の「オプション」タブの「開始時(S)」に、上記で設定した牡丹"b開始時"を記入。

次、呼び出し元となる"連絡.wfm"のコマンド牡丹の記述。
▼機能と同パラ
1.なし       #代入(&STR,[会員番号])
2.モーダルフォーム "個人日程.wfm"     (その他)
3.なし       #代入(&STR,"")
補注 3で念のため&STRの値をクリアしておく。
▼牡丹の位置は、ヘッダやフッタでも構わないし、明細部に「背景」を「透明」にしてかぶせてもよいです。
この辺はお好みでしょう。

但し、本格的にやるならイベントを使う方がより細かい制御が可能ですので、勉強して下さい。


24607 Re:コマンドボタンで別の表のフォームを表示したい 佐田 守弘 2004/02/05-23:22
記事番号24601へのコメント
悩み太郎さん
私のサイトにサンプルデータと簡単な解説を掲載しました。
http://www.ne.jp/asahi/m.sada/kiri/QA/EVENT/EVNT_05.html

佐田守弘(KS-00119)
24608 Re:コマンドボタンで別の表のフォームを表示したい しぼうかん 2004/02/06-00:56
記事番号24605へのコメント
悲しげさん、こんばんは.

久々に出てきてさっそくハズしてしまいました。

確かにフォーム呼び出しコマンドを使った方が応用が効きますね。
ただ

>(氏名をグループにしたもの−個人日程.wfm)

この表現から既に個人日程.wfmはグループ項目でグループ化されているのかな?
と思った事とどんな目的でフォームを呼び出すのかが想像出来ない事も有り、

コマンドボタンの機能を使った方が簡単かな?と深く考えずに答えてしまいました。

悩み太郎さん、と言う訳で私のレスはすっかり忘れて頂いてアックンさん、
佐田さん、悲しげさん達諸先輩のお答えを参考にしてみて下さい。

あと個人日程.wfmを呼び出す目的が詳しく判れば他の方々も答え安くなると思います。



24610 Re:コマンドボタンで別の表のフォームを表示したい アックン(=^・^=) 2004/02/06-07:38
記事番号24599へのコメント
悩み太郎さん、こんにちは。気にかかっていることがあったので、2点補足します。

(1)「行セレクタの横にコマンドボタンを設け」と書かれているので、
コマンドボタンは一覧表明細部(明細行)にあると解釈しましたが、そうですか(?)。

(2)
「(氏名をグループにしたもの−個人日程.wfm)」と書かれているので、イベント例を、
>   &氏名 = [氏名]

>   グループ検索 { [氏名] = #lv( &連絡win , "氏名" ) } ・・
などとしましたが、おそらく氏名の他に会員番号もグループ項目に設定されていると思います。
同姓同名の人がいたら困るので、会員番号だけを使って処理するのが確実です。
   &会員番号 = [会員番号]

   グループ検索 { [会員番号] = #lv( &連絡win , "会員番号" ) } ・・
というふうに、&氏名と[氏名]を使いません。(他も同様に修正してください。)
24612 みなさん、ありがとうございます。 悩み太郎 2004/02/06-09:08
記事番号24597へのコメント
早速のコメントをありがとうございます。
今、ツリーを見て、試していないのですが、迅速な対応に驚いております。
皆さんの超スピーディな対応についていけないので、とりあえず確認したと報告させていただきます。

あっくんさん、しぼうかんさん、悲しげさん、佐田守弘さん、いつも画面で見ているので
その方達にコメントをもらえるとは嬉しいです(TVに出ている芸能人といきなり話ができた感じといえば
この心情が伝わりますでしょうか?)

これからみなさんのコメントを試してみますので時間を下さい。

書き方も不足が多く、申し訳ありません。

アックンの質問の

(1)「行セレクタの横にコマンドボタンを設け」と書かれているので、
コマンドボタンは一覧表明細部(明細行)にあると解釈しましたが、そうですか(?)。

その通りです。「横」じゃわかりませんね。

(2)同姓同名の人がいたら困るので、会員番号だけを使って処理するのが確実です。
   &会員番号 = [会員番号]

はい。以前の過去ログから教えを盗み見していたので、会員番号で処理してあります。
今のところ、同姓同名がいないので共通項目に氏名と会員番号と書いてしまいました。
すみません。

連絡.wfmはデータ入力するフォームですか。閲覧するだけですか

連絡.wfmはデータ入力しますが、個人日程は観覧するだけです。
(連絡.wfmは「連絡ノート」のようなもので次の担当者に伝言を残します。会員の名前を入れたとき、
その会員さんが次にいつの予約を入れているか個人日程.wfmで確認し、
その日程を記入するというしくみです。個人日程.wfmの表は予約台帳.TBL)

24613 Re:みなさん、ありがとうございます。 アックン(=^・^=) 2004/02/06-10:16
記事番号24612へのコメント
悩み太郎さん>
>これからみなさんのコメントを試してみますので時間を下さい。
急がれなくて結構ですよ。(^.^)

会員番号で処理する点については、すでに佐田さんと悲しげさんがそうしてますね。
コマンドボタンの配置については、悲しげさんが終わりの方に書いたように、
透明にして明細行の一部または行セレクタを除くオブジェクトに重ねることができます。
おそらくそのようなことをされたいのだろうと思って、
>>連絡.wfmはデータ入力するフォームですか。閲覧するだけですか
とお聞きしました。もし連絡.wfmが閲覧だけなら、ボタンをすっぽり重ねると便利ですから。
でもこの手法は、今回は適さないですね。

>連絡.wfmはデータ入力しますが、個人日程は観覧するだけです。
もし個人日程.wfmを眺めながら、連絡.wfmにデータ入力したいのでしたら、
個人日程.wfmを「ウィンドウ作成」するのがいいですよ。
個人日程.wfmを「フォーム呼び出し」すると、個人日程.wfmを閉じない限り、
フォーカスを連絡.wfmに移せないため、データ入力できませんから。
24614 Re:コマンドボタンで別の表のフォームを表示したい アックン(=^・^=) 2004/02/06-11:18
記事番号24605へのコメント
悲しげさん>
>1.実行条件    &STR<>""        (その他)
>2.グループ解除              (行操作)
>3.検索_値    [会員番号]=&STR    (編集)
>4.グループ再抽出             (行操作)
>補注 1の記述は単独で開いた時に動かさないために。
>   2以降は牡丹のグループ検索でなぜかパラメータ指定がない
>    ので苦肉です(T_T)。他に名案あるでしょうか?

ではおいらからさらなら発展的迷案を。(^^;
会員番号が一番目のグループ項目である、という条件が必要かもしれませんが・・・・・・。

3行目: グループ指定  &STR
(もし会員番号が数値なら、&秒 などにしてください。>悩み太郎さん)

こうすれば解除と再抽出を自動的にするから、2,3行目は不要になるはずでっす。
と思うんだけど・・・・・・、もし指定したグループ番号がなかったら、どんな挙動示すかな。

>   2以降は牡丹のグループ検索でなぜかパラメータ指定がない
グループ項目に会話形式でグループ値を入力できるように編集モードに移行するだけで、
どうやらグループアイコン群のグループ検索と変わらないみたいですね。
24618 Re:コマンドボタンで別の表のフォームを表示したい 悲しげ 2004/02/06-14:38
記事番号24608へのコメント
どもっ、しぼうかんさん

>確かにフォーム呼び出しコマンドを使った方が応用が効きますね。

はて?
確かに#24605は私が書いたコメントですが、私は「フォーム呼び出し」ではなく、
しぼうかんさんと同じくコマンド牡丹を使った「モーダルフォーム」の例を書いたはずですが?
誤読か、他の方の他No発言へのコメントじゃないですかね?(^^;)

24620 Re:コマンドボタンで別の表のフォームを表示したい 悲しげ 2004/02/06-14:52
記事番号24614へのコメント
どもっ、アックン君

>3行目: グループ指定  &STR

え゛っ、こんなことできるの。(゜O゜)

って、試してみましたが、この場合はどうやら &STR=グループ番号であると解釈されるようですね。つーことは、

>会員番号が一番目のグループ項目である、という条件が必要かも

と云うよりは、会員番号=グループ番号である必要がありそうです。
つーことは、欠番とかが有ったらずれるし、あるいは 会員番号=A012 とか
だったら「条件を満たすグループがありません」となるようで。(?_?)

24622 Re:みなさん、ありがとうございます。 悲しげ 2004/02/06-15:06
記事番号24613へのコメント
アックン(=^・^=)君 wrote

>>連絡.wfmはデータ入力しますが、個人日程は観覧するだけです。
>もし個人日程.wfmを眺めながら、連絡.wfmにデータ入力したいのでしたら、
>個人日程.wfmを「ウィンドウ作成」するのがいいですよ。
>個人日程.wfmを「フォーム呼び出し」すると、個人日程.wfmを閉じない限り、
>フォーカスを連絡.wfmに移せないため、データ入力できませんから。

うぅぅ、「ウィンドウ作成」ですか。コワイ(^^;)
入力しようとして連絡.wfmにフォーカスを移したら(アクティブウィンドウにしたら)個人日程.wfmが背面に隠れてしまわないように、
表示位置を考慮した方がいいでしょうね。コマンド牡丹「開く」でも同じことですけど。

私ならサブフォーム(cf.左右連動フォーム)にして、どうせkevを使うんなら、
牡丹によってサブフォームの画面表示をオン・オフさせるかもしれません。

cf.#24597
>サブフォームを使うことを考えたのですが常に表示する必要はないので
>必要な時だけ出して確認したいのです。

24623 Re:コマンドボタンで別の表のフォームを表示したい アックン(=^・^=) 2004/02/06-15:07
記事番号24620へのコメント
悲しげさん> んんん・・・・・・やっぱ迷案だったにゃ。(=^・^=;
会員番号=グループ番号ではないもんね。
んじゃ、検索コマンドで決まりっと。(^^;

 かぜ流行してるから忙しいでしょう。 アックン(=^・^=)
24624 サブフォーム画面オン・オフ 悲しげ 2004/02/06-15:26
記事番号24622へのコメント
ちなみにサブフォームの画面表示のオン・オフは、kevの記述としても
とっても簡単です。

メインwfmにコマンド牡丹(仮称「bサブ画面」)を設けます。
 機能    同パラ
手続き実行 サブ画面

次に同名のkevを設定します。その中味は
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
名札 メイン
 変数宣言 固有,文字列{&画面="1"}



手続き定義開始 サブ画面()
 オブジェクト操作 @sub.画面表示=&画面
 &画面=#条件選択(&画面="0","1",1,"0")
手続き定義終了
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

※メインwfmにあるサブwfmオブジェクトの名称を「sub」と仮称。
 表示タブで「画面表示する」のチェックを予め外しておくと仮定。

24625 コマンドボタンの「グループ検索」 悲しげ 2004/02/06-15:38
記事番号24623へのコメント
うむ、コマンド牡丹の機能「グループ検索」にも、ぜひパラメータ指定をできる仕様にすべきじゃ。
あと、「実行 ボタン名」もね。(^^)v

> かぜ流行してるから忙しいでしょう。 アックン(=^・^=)

ぜ〜んぜん。
暇すぎてこんなこと書いてるんです。(T_T)


24626 Re:みなさん、ありがとうございます。 アックン(=^・^=) 2004/02/06-15:51
記事番号24622へのコメント
悲しげさん>
>私ならサブフォーム(cf.左右連動フォーム)にして、どうせkevを使うんなら、
>牡丹によってサブフォームの画面表示をオン・オフさせるかもしれません。
サブフォームを表示するスペースを確保できれば、それもいいと思いまーす。ぼくは
どっちでもいいでーす。ぼくんじゃないから、なんでもいいでーす。(^^;

え? 今上の引用を読み返して気づいたんだけど(cf.左右連動フォーム)ですか。
左右じゃないといけない? 上下じゃだめ? (^^;

サブフォームの画面表示だけオンオフするよりも、作動そのものをオンオフすれば、
処理速度で有利だと思うんですけど、どうでしょう。で、どうやってするかまでは全く考えてないんですけど。(^^;
今回のQ&Aからちょっと離れて、汎用的ななテクニックの話として考えてみます?

24627 Re:コマンドボタンの「グループ検索」 アックン(=^・^=) 2004/02/06-16:05
記事番号24625へのコメント
悲しげさん
ぼくの場合は、”困ったときの牡丹頼み”なもんで、極めて限定的な使い方しかしないこともあって、
機能名については、なんで行集計がないんだ(?)くらいです。

>あと、「実行 ボタン名」もね。(^^)v
う、これってなんだかややこしそう。スパゲッティになりそうな。パスいち(^^;

24628 Re:コマンドボタンで別の表のフォームを表示したい しぼうかん 2004/02/06-19:50
記事番号24618へのコメント
(^^;)得意の誤読です。


>さて、既にアックン君が#24599でイベント例を書いておりますし、
>実は私もこのような処理はともかくイベントで書いてしまうのですが、
>元々のタイトルで云うところの「コマンドボタンで・・・」が「イベ
>ントを使わないでコマンドボタンのみで」かもしれないと云う仮定で
>ちょっと考えてみました。


ここまでの文章から「イベントを使った方が良いんじゃない?
でもまあコマンドボタンの機能を使うならこんな方法もあるよ」
と私の頭に住んでいるカナシゲさんの心の声(幻聴とも言う)が
聞こえてしまいました。まあ軽くスルーして下さい。

24629 エキストラ しぼうかん 2004/02/06-20:26
記事番号24612へのコメント
他のお三方とはエキストラと主役級の違いが有り、名前を並べられるのは
汗顔の至りです。

ところで、

>会員の名前を入れたとき、その会員さんが次にいつの予約を入れているか
>個人日程.wfmで確認し、その日程を記入するというしくみです。
>個人日程.wfmの表は予約台帳.TBL)


入力時に必ずフォームを呼び出したいので有れば、入力前イベントでも
"フォーム呼び出し"や"オブジェクト操作"コマンドを使って、
今作ろうとしているコマンドボタンと同様の作業をさせた方が良いように思えますが、
入力時には常に個人日程.wfmを表示させたいと言うわけではないんでしょうかね?
24633 Re:コマンドボタンで別の表のフォームを表示したい 悩み太郎 2004/02/07-12:20
記事番号24607へのコメント
佐田様のサンプルを見てやってみたのですが、上手く動きません。
個人日程.wfmに移動して、会員番号ごとの日程が出てくるのですが、記入した番号の会員ではなく、
会員番号の最初の人(1番の人)に飛んでしまいます。どうしてでしょうか?

イベントを使って処理した事は1度だけなどでよくわかっていません。
みなさんが使う用語や式も理解できず、なんとか解釈してやっております。

連絡.kev

名札 メイン
変数宣言  整数{&会員番号}


手続き定義開始  連絡()
 代入 &会員番号=[会員番号]
 フォーム呼び出し 個人日程
手続き定義終了



個人日程.kev

名札 メイン



手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
絞り込み[会員番号]=&会員番号
手続き定義終了

24637 Re:コマンドボタンで別の表のフォームを表示したい しぼうかん 2004/02/07-13:42
記事番号24633へのコメント
イベントを始めたばかりの時に私がやったミスの一つにイベントの設定漏れが有りました。

個人日程.wfmの定義画面で書式→オブジェクト属性を選び、オブジェクト属性のウインドウのイベントタブを
クリックして開いた画面のフォーム開始イベントにチェックが入っていますか?
24638 Re:コマンドボタンで別の表のフォームを表示したい 悲しげ 2004/02/07-16:58
記事番号24633へのコメント
>手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
>絞り込み[会員番号]=&会員番号
>手続き定義終了

このスレッドのルートに当たる#24597で悩みさんは

>別の表の一覧表フォーム(氏名をグループにしたもの−個人日程.wfm)

と書かれていますから、フォーム開始イベントでは

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 グループ検索 {[会員番号]=&会員番号},終了状態=&実行リターン
 条件(&実行リターン<>1) 確認\
  "会員番号"+#文字列(&会員番号)+"のデータは無いので先頭を表示する"
手続き定義終了

のように記述すべきかと思います。

>個人日程.wfmに移動して、会員番号ごとの日程が出てくるのですが、
>記入した番号の会員ではなく、会員番号の最初の人(1番の人)に
>飛んでしまいます。

グループ項目のあるフォーム上で、開始時に絞り込みをすると、
先頭グループについて絞り込みされます。
だから、常に先頭グループになるのは当然なのですが(ゆえに先頭会員の場合はノープロブレム)、
他の会員番号を指定した場合は、先頭グループ内にはそもそも存在しないのであるからして、
先頭会員のグループで且つ絞込件数は0件として表示されているのではないでしょうか?

24640 Re:コマンドボタンで別の表のフォームを表示したい 悩み太郎 2004/02/07-21:26
記事番号24638へのコメント
悲しげさん

>>手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
>>絞り込み[会員番号]=&会員番号
>>手続き定義終了
>

>
>グループ項目のあるフォーム上で、開始時に絞り込みをすると、先頭
>グループについて絞り込みされます。だから、常に先頭グループにな
>るのは当然なのですが(ゆえに先頭会員の場合はノープロブレム)、
>他の会員番号を指定した場合は、先頭グループ内にはそもそも存在し
>ないのであるからして、先頭会員のグループで且つ絞込件数は0件と
>して表示されているのではないでしょうか?
>

このようにしたのですが、やっぱり会員番号の最初のグループが出てきてしまいます。
何か変な設定をしているのでしょうか?(そんなの知りませんよね〜)
ちなみに個人一覧.wfmは予約台帳として使っている一覧表フォームをコピーしたものなのですが、それに問題があるのでしょうか?

初めのグループが表示されてしまっても個人一覧.wfmは出てきているので会員番号で探せばいいので、
十分使えるようになりました。
イベントを始めたばかりの時に私がやったミスの一つにイベントの設定漏れが有りました。


悲しげさんのコマンドボタン方式はまだ実行途中です。

個人日程.wfmの定義画面で書式→オブジェクト属性を選び、
オブジェクト属性のウインドウのイベントタブをクリックして開いた
画面のフォーム開始イベントにチェックが入っていますか?

アックンの言われたようにフォーム開始イベントにチェックを入れましたが変わりません。
でも、フォーム開始だの手続き開始だの、わけわからなかった言葉がようやく解ってきました。
がんばるぞ!

24641 チェックポイント 佐田 守弘 2004/02/07-22:07
記事番号24640へのコメント
悩み太郎さん
最初は訳が解らないかも知れませんが、イベントの仕組みが分かった時には、
ちょうど「トンネルを抜けたら青空が広がった」様なもので、急に全てが解って来る時が来ると思います。
それ程遠くないですよ。

さて、
>ちなみに個人一覧.wfmは予約台帳として使っている一覧表フォームをコピーしたものなのですが、
>それに問題があるのでしょうか?

大いにあり得る事かと思います。

まず、フォームの属性の[イベント]のタブには、イベントファイルを設定する欄があります。
これは当然今作っているイベントファイル名に書き換えてありますよね。
単にコピーしただけだと、イベントファイル名の変更を忘れている事もあり得ます。

確認のためにフォーム定義画面から、[書式]→[イベントの定義]を選んで、
イベントの編集モードに入って下さい。
開かれたイベントファイルが、作成したイベントファイルに間違いないかを調べてみて下さい。

それ以外にも、そのフォーム独自の設定がしてあって、それを忘れているために
うまくイベントが動作しない事もあります。
自分でも忘れてしまう場合もあり、また人に聞いても解りませんから、
落とし穴になる事がまれではありません。

佐田守弘(KS-00119)


24642 Re:コマンドボタンで別の表のフォームを表示したい 悲しげ 2004/02/07-22:08
記事番号24640へのコメント
>このようにしたのですが、やっぱり会員番号の最初のグループが出てきてしまいます。

「このように」とは、まさか引用しているように

>手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
>絞り込み[会員番号]=&会員番号
>手続き定義終了

の方じゃないですよね?

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 グループ検索 {[会員番号]=&会員番号},終了状態=&実行リターン
 条件(&実行リターン<>1) 確認\
  "会員番号"+#文字列(&会員番号)+"のデータは無いので先頭を表示する"
手続き定義終了

の方ですよね?
どうしても、「絞り込み」コマンドを使いたければ、使用するフォーム
をグループ項目の無いフォームに変更するとよいでしょう。

>ちなみに個人一覧.wfmは予約台帳として使っている一覧表フォームを
>コピーしたものなのですが、それに問題があるのでしょうか?

はて、「予約台帳として使っている一覧表フォーム」って?



ちなみに

>アックンの言われたようにフォーム開始イベントにチェックを入れましたが

これを云ったのは、アックンではなくしぼうかんさんです。(^^;)

24644 Re:コマンドボタンで別の表のフォームを表示したい 悩み太郎 2004/02/08-10:15
記事番号24642へのコメント
>「このように」とは、まさか引用しているように
>
>>手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
>>絞り込み[会員番号]=&会員番号
>>手続き定義終了
>
>の方じゃないですよね?
>


>手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
> グループ検索 {[会員番号]=&会員番号},終了状態=&実行リターン
> 条件(&実行リターン<>1) 確認\
>  "会員番号"+#文字列(&会員番号)+"のデータは無いので先頭を表示する"
>手続き定義終了
>
>の方ですよね?


ごめんなさい、こちらのグループ検索でやってみました。

>どうしても、「絞り込み」コマンドを使いたければ、使用するフォーム
>をグループ項目の無いフォームに変更するとよいでしょう。


そうか!そうですね、これでもう一度やってみます。


>>ちなみに個人一覧.wfmは予約台帳として使っている一覧表フォームを
>>コピーしたものなのですが、それに問題があるのでしょうか?
>
>はて、「予約台帳として使っている一覧表フォーム」って?
>
料理教室の事務をやっています(それがメインの会社ではないのですが)。
チケット制で会員の方は好きな日程を予約できるシステムです。
そして講座も毎週○曜日ではなく、月に6回ほどあり、ばらばらです。
今までは直接予約帳に書いて記入していたのですが、
とても不便だったので桐のフォームで対応しています(桐を使い初めて5年ほどですが昨年までは表とレポートのみでやっておりました。
もっと早くこの便利さに気づいていれば)。
 と長々書いてしまいましたが、表は資料請求.TBL 会員名簿.TBL 日程.TBL 予約伝票.tbl(実際に予約を
記入していくもの)連絡帳.tbl(今回皆さんにお世話になったものです)...などがありまして、
それを表示するフォームを色々と作ってあります。
そのフォームの一つが予約台帳として使っている一覧表フォームということです。


>ちなみに
>
>>アックンの言われたようにフォーム開始イベントにチェックを入れましたが
>
>これを云ったのは、アックンではなくしぼうかんさんです。(^^;)

あ〜これもごめんなさい。間違いでした。

佐田さんのおっしゃった「トンネルを抜けたら青空が広がった」気分になれるよう、このHPで勉強します。
ほんとに思い切って投稿してよかったです!

24645 Re:コマンドボタンで別の表のフォームを表示したい 悲しげ 2004/02/08-10:48
記事番号24644へのコメント
ちなみに、そもそも「フォーム開始」イベントが発生しているか否かは

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 確認 "フォーム開始イベントです"
 ・・・・・
 ・・・・・
手続き定義終了

のような確認コマンドを入れてみて、このメッセージが出るかどうかで
確認することができます。(出なければ発生していない)

24646 Re:コマンドボタンで別の表のフォームを表示したい 悩み太郎 2004/02/08-11:03
記事番号24644へのコメント
できました!できた!できた!
あ〜達成の快楽が訪れました。

会員番号は整数で付けていましたが別のフォームでサブフォームを作るとき、
文字列じゃないと不都合が生じることがあり、文字列の項目も作っておいたので、
今、会員番号整数の項目をを会員番号文字列にしてみたらできたのですが、
イベントで処理するとき、整数のデータ型は使えないのでしょうか?
(恥ずかしい質問なのは承知で聞いてます)

番号で識別するとき、どのデータ型を使うのが良いのでしょうか?
私は整数のデータ型に数字を入力して、文字列会員番号の項目計算式に#文字列([会員番号])と入れていますが、
みなさんはどうしているのでしょうか?

24649 2表の[会員番号]のデータ型を統一しましょう 悲しげ 2004/02/08-16:35
記事番号24646へのコメント
例えば同じ「100」と云う値でも、文字列と数値では文字コードが違いますから、
まったく別物でして、これでは検索できる筈がありません。
双方の表の[会員番号]とやらのデータ型を統一すべきです。

[会員番号]とやらのデータ型を、整数にすべきか文字列にすべきかは、
用途とか好みの問題だと思います。が、「別のフォームでサブフォームを作るとき、
文字列じゃないと不都合が生じる」のであれば
(なぜ不具合となるかについてはここではさておいて)
文字列として統一すればいいのではないでしょうか?
ちなみに「番号」ではなく「コード」とかなら、
私なら先ず文字列型と云う先入観があります。
「A12345」等は当然だとしても、
「0001」なんてのもありうるとすれば、これは文字列じゃないと
どうしようもありませんから。

なお、上記でお気づきかもしれませんが、

>イベントで処理するとき、整数のデータ型は使えないのでしょうか?

と云うことでは全くありません。
うまく行かなかったのは「イベントで整数を使ったから」ではなく(^^;)、
整数で文字列を(あるいはその逆で)検索したからでしょう。

>整数のデータ型に数字を入力して、文字列会員番号の項目計算式に
>#文字列([会員番号])と入れていますが、

う〜ん、その辺もお好みの問題ですが、私ならダイレクトに文字列型項目に入力しちゃう口ですかね。
だって、どうせ文字列にしなければならないんだったら、入力の手間は同じですから。
(参考)
表定義/項目属性/入力タブ/入力モード→「漢字変換OFF」とすれば

24651 Re:2表の[会員番号]のデータ型を統一しましょう 悩み太郎 2004/02/08-17:12
記事番号24649へのコメント
悲しげさん、初歩的な質問に答えていただき、ありがとうございます。

>例えば同じ「100」と云う値でも、文字列と数値では文字コードが
>違いますから、まったく別物でして、これでは検索できる筈があ
>りません。双方の表の[会員番号]とやらのデータ型を統一すべき
>です。
>[会員番号]とやらのデータ型を、整数にすべきか文字列にすべき
>かは、用途とか好みの問題だと思います。が、「別のフォームで
>サブフォームを作るとき、文字列じゃないと不都合が生じる」の
>であれば(なぜ不具合となるかについてはここではさておいて)
>文字列として統一すればいいのではないでしょうか?
>ちなみに「番号」ではなく「コード」とかなら、私なら先ず文字
>列型と云う先入観があります。「A12345」等は当然だとしても、
>「0001」なんてのもありうるとすれば、これは文字列じゃないと
>どうしようもありませんから。

私もコードは文字列で行こう!と思ったのですが、文字列だとグループ検索の時、
番号順に表示されないので(1→10→2→20→22→23→234→3となり、1→2→3になってくれない)、
文字列と整数の項目が必要なのかも???と勝手に思ってしまったのです。


>なお、上記でお気づきかもしれませんが、
>
>>イベントで処理するとき、整数のデータ型は使えないのでしょうか?
>
>と云うことでは全くありません。うまく行かなかったのは「イベン
>トで整数を使ったから」ではなく(^^;)、整数で文字列を(あるいは
>その逆で)検索したからでしょう。

え〜、全ての表に文字列と整数の会員番号をふっているので、
その辺はきちんと確認したつもりです。でも、入力ミスしていたのかな。


>>整数のデータ型に数字を入力して、文字列会員番号の項目計算式に
>>#文字列([会員番号])と入れていますが、
>
>う〜ん、その辺もお好みの問題ですが、私ならダイレクトに文字列型
>項目に入力しちゃう口ですかね。だって、どうせ文字列にしなければ
>ならないんだったら、入力の手間は同じですから。
>(参考)
>表定義/項目属性/入力タブ/入力モード→「漢字変換OFF」とすれば
>

24654 会員番号のデータ型は 佐田 守弘 2004/02/08-17:55
記事番号24651へのコメント
悩み太郎さん
私なら、無条件に整数型ないし長整数型とします。
理由は数値(整数、長整数を含む)として処理できるデータを敢て文字列とする
必然性が全くないからです。
会員番号などを数値(整数など)とする理由は次の通りです。
表データはできるだけスリムにする。これは重要なポイントです。

@データサイズが小さくなる
例えば「12345」を文字列で記録すると10バイトになります。整数型では2バイト、長整数型にしても4バイトです。
バイト数が少なければ、表ファイルサイズが小さくなるだけではなくて、
検索や並べ替えその他の処理で、スピードアップの効果があります。

A並べ替えが値通りの順になる。
文字列型の場合、先頭に0を付けて、桁数を併せておかないと、値の順に並べ替える事ができません。
数値(整数など)なら無条件に値通りの順に並びます。

●会員番号として桁数を揃えて印刷するには
多分、多くの方が気にするのはこの点でしょうね。数値(整数など)では先頭にゼロが付けられないからという理由です。
データは数値として持っておき、印刷時に文字列に変換すれば良いのです。
 #文字列([会員番号],5)
と記述すれば、先頭にゼロを付けた5桁の数字文字列になります。

従って、数値型等(整数などを含む)と文字列型の両方で会員番号データを持つ必要は全くありません。

佐田守弘(KS-00119)
24660 Re:2表の[会員番号]のデータ型を統一しましょう 悲しげ 2004/02/08-23:00
記事番号24651へのコメント
>私もコードは文字列で行こう!と思ったのですが、
>文字列だとグループ検索の時、番号順に表示されないので
>(1→10→2→20→22→23→234→3となり、1→2→3になってくれない)、

もし文字列にするのがお好みなら、そしてその際に並びも意識するのなら、
上記例は
  001,010,002,020,022,023,234,003
のように設定すれば事足りる話だと思います、3桁でも4桁でも必要に応じて。
ちなみに、#文字列([某数値系項目],n)でn桁になるまで先頭に0を付けることもできます。
あるいは、分類的な要素を含めて
  1001,1002,……,2001,2002,……,3001,3002,……
から始めるように設定する方法もあります(これは文字列・長整数型とも)。

それと

>え〜、全ての表に文字列と整数の会員番号をふっているので、
>その辺はきちんと確認したつもりです。でも、入力ミスしていたのかな。

う〜ん、何かかみ合ってないような・・・・、
この段落で私が云いたかったことの中心は「イベントで整数は使えない」なる
誤解を晴らすことにありました。


24667 佐田様、悲しげ様 悩み太郎 2004/02/09-09:41
記事番号24660へのコメント
ありがとうございます。とてもよくわかりました。

悲しげさん、コメントは理解しております。ちょっとだだこねてしまいました。
ごめんなさい。

戻る