過去の桐井戸端BBS (桐ver.8)
20404 グループ項目のデータを書き出して入力支援ボタンで表引きするようなメイン・サブフォームを作りたい くるみ 井上 2003/05/18-21:47
桐V8sp6を使用しています。1年半ぶりぐらいのお尋ねです。
よろしくお願いします。
メイン・サブフォームの作り方についてお尋ねします。

表 作業管理.TBL で 項目が4つとしてデータが下記の様にある場合
(表は共有で開きます)
項目名 ”現場名” ”会社名” ”工種” ”金額”
桐宅 A社 基礎 100
桐宅 B社 土木 200
桐宅 B社 電気 50
松宅 A社 基礎 100
松宅 B社 土木 300
松宅 D社 水道 50

メインフォーム上で グループ項目の”現場名”を 入力支援ボタンで選び、
つぎにサブフォーム 上でグループ項目の”会社名”を 入力支援ボタンで選び、
”工種” ”金額”等を追加して入力や訂正をしたいと考えています。
サブフォームは上記だけでなく、他のサブフォームもイベントで表示を
切り換えて同じ”現場名”で入力したいと考えています。
(表示切り換えのイベントはここのコーナーで以前教えて頂いたものです。
他のイベントはいまだ勉強不足の状態です)

グループ項目の”現場名”を他の表に書き出し、書き出した表の”現場名”を単一化して、
フォーム上で グループ項目の”現場名”を 入力支援ボタンでリストの種別を表引き項目として
書き出した表から入力するところまでは考えたのですが、
次の段階の”会社名”の選択が、”現場名”に該当する”会社名”のみを表示選択する方法がわかりません。
サブフォームを伝票形式にしてみたりしたのですが・・・
できれば 入力支援ボタンで選べるようにしたいのですが、ご教授ください。
20448 Re:メイン・サブフォームの作り方について 今村 誠 2003/05/20-15:45
記事番号20404へのコメント
くるみ 井上さんこんにちは、コメントがつかないようなので
うまくいくかよくわかりませんが入力前イベントではいかがでしょうか
サブフォームのイベントファイルに以下のような感じで表引き表を絞り込んで
表示させてみてはいかがでしょうか。
索引定義の部分は共有での動作の確認はしていません。
たくさんのサブフォームを使用する場合現場名tblが絞り込み状態のままでは
都合が悪いと思うので、会社名のソース値更新で解除したがいいと思います。
メソッドでメインフォームの値を取り込むときは”確認”で変数に値が入ったのを
確認しながらプログラムを作成してください。
名札 メイン
  var Str{&tmpfile名="現場名.tbl"},Long{&表引表}
  COND (#表オープン状態(&tmpfile名,2)<>#u) 編集表 &tmpfile名 
  COND (#表オープン状態(&tmpfile名,2)=#u) 表 &tmpfile名,モード=共有更新   
  if (#索引属性数<1)
   索引定義 索引名="現場名",条件登録="現場名",{[現場名]昇順}
else (#索引属性数>0)
   call 索引属性(#索引属性数,&比較式)
   cond (#文字位置(&比較式,"現場名")=0) \
   索引定義 索引名="現場名",条件登録="現場名",{[現場名]昇順}
  end

手続き定義開始 t会社名::入力前(参照 文字列 &編集文字列)
  var Str{&tmpobj,&section,&mainwfm,&sub1wfm},Long{&Just,&結果,&絞り込み数}
  &mainwfm="メインフォーム名",&tmpobj="t現場名",&Just=#IS表
  method ハンドル=&hwindow,&mainwfm.&tmpobj .親オブジェクト取得(&section)
  cond (&section="フォーム明細部") method ハンドル=&hwindow,&mainwfm.&tmpobj.ソ
ース値取得(&比較式,1) /* ヘッダか明細かで使用*/
  cond (&section<>"フォーム明細部") method ハンドル=&hwindow,&mainwfm.&tmpobj.グ
ループソース値取得(&比較式,1) /* メソッドを変更*/
  編集表 &表引表
  &絞り込み数=#絞り込み状態
  COND (&絞り込み数>0) 絞り込み解除 &絞り込み数
  検索 [現場名]_&比較式,文字比較方法=自動,部分一致検索=先頭一致,終了状態=&結果
  COND(&結果>0) \
     絞り込み [現場名]_&比較式,文字比較方法=自動,部分一致検索=先頭一致,終了状態=&結果
  COND(&結果="") 確認 "先頭一致するデータはありません"
  編集表 &Just
手続き定義終了

proc 索引属性(数値 &入力,参照 文字列 &出力)
&出力=#索引属性名(1)
cond (#索引属性数=1) return
for &実行リターン=2,&入力,1
&出力=#S(&出力,&実行リターン,#索引属性名(&実行リターン))
end
end
20456 Re:メイン・サブフォームの作り方について くるみ 井上 2003/05/20-19:06
記事番号20448へのコメント
今村 誠さんこんにちは。
ありがとうございます。
今日もいろいろと少ない知識で悪戦苦闘しておりまたがうまくいかず、
やはりイベント処理などを使わないと無理だろうと思っていた次第です。
指導いただいたイベントファイルをすぐには理解できるレベルではなく時間をかけて取り組んでみたいと思います。
以前にもイベント処理を勉強しようと思っていたのですが、
いままでのケースでは一括処理でOKだったので前に進まずにおりました。
先日V9も注文致しましたのでこの機会に取り組んでみたいと思います。
コメントありがとうございました。
またお尋ねすることがあると思いますので、よろしくお願いします。
(イベントをもつと理解してからになるとは思いますが)

戻る