過去の桐井戸端BBS (桐ver.9)
18929 フォームから表を開きたい カベナギ 2003/02/12-13:32
カベナギといいます。またよろしく御願い致します。
こういうことは実行可能でしょうか?

例えば"A.TBL"を開く時に、フォーム上に"A"と入力しENTERをおすとA.TBLが開く。

自分のイメージとしては
フォーム上にテキストオブジェクトを作成し、
そこに"A"と入力しコマンドボタンを押すと指定した表が開く。

なんですがコマンドボタンにどのような機能を当てはめればいいのか
さっぱり分かりません。テキストオブジェクトに入力した文字を
コマンドボタンが解釈できるのかも…?です。

よくをいわせてもらえば同時に絞込みをして必要なレコードだけを
表の中に表示できれば最高なんですが…

どなたかご指導、よろしく御願い致します。
18930 Re:フォームから表を開きたい 田辺誠一 2003/02/12-17:00
記事番号18929へのコメント
カベナギさんは はじめまして。

可能だと思います。
入力用の表を作ってください。
項目は[表][ファイル名]
[ファイル名]には、[表]+".tbl"を項目計算式で指定してください。
次に表をベースにした入力用フォームを作ってください。
テキストオブジェクトで、表をつくりコマンドボタンで、一括処理を実行できるようにしてください。

一括処理は下記です。

変数宣言 固有,文字列{&表}


表  "表.tbl"
&表=[表]


表 &表
表形式編集

ざっと簡単ですが、
これで、いけませんか。

18931 Re:フォームから表を開きたい うにん 2003/02/12-19:34
記事番号18930へのコメント
>例えば"A.TBL"を開く時に、フォーム上に"A"と入力しENTERをおすと
>A.TBLが開く。

というご希望ですので、表は作らずともテキストのソースを変数にすれば、
イベントとソース値取得でできるんじゃないでしょうか。
18935 表を開くメニューのフォーム 佐田 守弘 2003/02/13-01:40
記事番号18929へのコメント
カベナギさん
質問の主旨は、複数の表の中から1つ選んで、
その表を開くメニューをフォームで作りたいと言う意味と解釈します。
いろいろな方法がありますので、いくつか紹介します。

●開く表の選び方
書かれている
 >フォーム上に"A"と入力しENTERをおすと
以外にもいくつかの方法があります。
開く表がいくつあるのか、名前が固定なのか、変わるのかで選んで下さい。

【コマンドボタンで選ぶ】
表の数が決まっていて、それ程多くない(せいぜい100個程度)なら、
表の数だけコマンドボタンを並べるのが簡単です。
それぞれのコマンドボタンに機能名:開く、パラメータ:表のファイル名 を指定します。
コマンドボタン1つが開く表1つに対応します。
この方法が一番簡単なので、まずはこの方法で試してみて下さい。

【表名称を入力する】
質問の文面そのものですが、この場合には、フォーム中で自動宣言される局所変数を定義しておきます。
そしてこの変数をソースに設定したテキストボックスを作ります。
ソース値更新イベントに次の様なコマンドを書いておけば、指定した表が開かれるはずです。
 表 &表ファイル名   ←&表ファイル名をテキストのソースに指定
 絞り込み ・・・ (必要なら)

【一覧から選ぶ】
上記のテキストボックスに入力支援ボタンを作れば、予め設定した表名のリストから選択入力もかの右です。

【表の一覧表から選ぶ】
まず開く予定の表のリストを表で作ります。
メニューを一覧表形式で作成し、ここに対象とする一覧表を表示しておき
選んだ表を開かせる事も可能です。
選び方ですが、キーダウンイベントでEnterキーの押下を捕らえて、
その時の一覧表の項目値を変数に取得します。
なお、この場合には、表の一覧を更新する機能を付ける必要があります。

●表を開くのかフォームを開くのか
メニューのフォームがチャイルド形式であれば、上記の方法で表を開けます。
しかし、多少の腕があり、オーバーラップフォームを使って画面全体のサイズのメニューを作った場合、
上記の方法は破たんします。
なぜかと言うと、オーバーラップフォームでも指定した表は開けるのですが、
オーバーラップフォームの下に隠れてしまい、開いた表が表示できません。
対応策は次のどちらかになります。

【表でなくフォームを開く】
フォーム呼び出しを使って、モーダルフォームを呼び出せば、
そのフォームはメニューのフォームの上に表示できます。
このフォームを閉じれば、元のメニューに戻る仕組みです。
なお、メニューのフォームがチャイルドであれば、「開く」:目的の表の
フォーム、「閉じる」(自分自身のフォーム)で、フォームを切り換える事も可能です。

この場合、基本的には表1つに対して、1つのフォームを作っておきます。
これはフォームには編集表を設定してある関係で、フォームを開いたときに
開かれる表が自動的に決まってしまうからです。
上級のテクニックではありますが、同じ形式の表であるなら、1つのフォームを供用して、
編集対象表を切り換える事は不可能ではありません。

【どうしても表で開きたい】
シェル実行コマンドを使って、別の桐を起動し、その桐で表を開きます。

佐田守弘(KS-00119)
18939 Re:表を開くメニューのフォーム カベナギ 2003/02/13-11:36
記事番号18935へのコメント
田辺様、うにん様、佐田様アドバイスありがとうございます。

>●開く表の選び方
>書かれている
> >フォーム上に"A"と入力しENTERをおすと
>以外にもいくつかの方法があります。開く表がいくつあるのか、名前が
>固定なのか、変わるのかで選んで下さい。

開きたい表の数は決まっております。ただ定期的に増えていきます。
年度別の売り上げ表なので1年に1つなんですが…
ちなみに表名は ”URIAGE2002”、”URIAGE2003”みたいな感じです。
佐田様の【表名称を入力する】という方法でトライしてみたいと思っております。
局所変数など完全に理解していないのですが、また分からないことがありましたら
アドバイス御願いいたします。

田辺様の方法もトライしてみました。

>テキストオブジェクトで、表をつくり

ということは作ったフォームで ”表.tbl”を参照させ、テキストオブジェクト
に表.tblの”表”という列項目を関連づけるということですよね。
開きたい表の名前をそこに入力しコマンドボタンを押すと
”編集状態の表があります”というメッセージがでてしまいます。
私の考え方が間違ってますでしょうか?



19031 Re:表を開くメニューのフォーム カベナギ 2003/02/19-11:45
記事番号18935へのコメント
佐田様へ
ちょっと時間がたってしまいましたが教えて頂けますでしょうか?

>【表名称を入力する】
>質問の文面そのものですが、この場合には、フォーム中で自動宣言される
>局所変数を定義しておきます。そしてこの変数をソースに設定したテキスト
>ボックスを作ります。
>ソース値更新イベントに次の様なコマンドを書いておけば、指定した表が
>開かれるはずです。
> 表 &表ファイル名   ←&表ファイル名をテキストのソースに指定
> 絞り込み ・・・ (必要なら)
>

この方法をとりたいのですが ”フォーム中で自動宣言される局所変数を定義”
ということですがこれはフォームに ”局所変数を宣言するイベントファイル”を
定義しておくということでいいでしょうか?
もしその場合、イベントファイルにコマンドをどう記述すればよろしいでしょうか?

変数宣言 局所,文字列{&表ファイル名 ??????? }

こんな感じかと思ったのですが ? のところが良く分かりません。
またこれ1つのコマンドだけでことが足りるのかも?です。

お忙しいところ申し訳ありませんがよろしく御願い致します。

戻る