過去の桐井戸端BBS (桐ver.8)
16076 桐8では現在の表から他の表へ併合できないのでどうすればいいか教えてください しぼうかん 2002/05/21-21:55
はじめて投稿(というかお願い)させて頂きます。
このサイトを最近見つけまして桐の勉強をさせて頂いています。
(ほとんどは内容が高度過ぎて理解できませんが(^^;)

桐8では現在の表から他の表へ併合がしたくとも出来ません。
そこでまずB.wfmに 1,機能名 グループ解除 機能パラメータ無し 2,機能名
併合 機能パラメータ("AよりBへ併合"(併合をする為に作った併合条件につけた任意の名前です)
というコマンドボタンを作ります。
このコマンドボタンのオブジェクト名ををB.wfmの実行コマンドの開始時の欄に書き込みます。
そこで現在開いているA.wfmにコマンドボタンを作りそこにイベントハンドラを作り
1行目は手続き定義開始2行目にフォーム呼出し A.wfm 3行目に終了 表 
A.wfm 4行目は手続き定義終了とします。
こうすればA.wfmでコマンドボタンを押すと
B.wfmにA.wfmより併合が行われた後B.wfmが開きすぐにB.wfmが
とじてA.wfmにもどる。
という風になるんじゃないかと思ったのですがA.wfmとB.wfmが両方開いて終了してしまいます。
上記の目的をする為に何か方法はありませんでしょうか。
お知恵をお借りしたいと思います。

なぜ現在の表から他の表へ併合したいかと言いますと納品書入力フォームで8月1日に
C社の8月締めの納品書1、8月10日にD社の8月締めの納品書1、8月15日に
C社の8月締めの納品書2を入力するときにそれぞれの納品書レコードに請求書番号をつけたいのですが
C社の納品書2のレコードには締めが同じなので納品書1と同じ請求書番号を入力したいのです。
このため入力中の現在のフォームの過去のデータより表引きしたいのですが
自分自身のデータを表引きする事は出来ないので併合で現在の表と同じものを作り、
その表から表引き入力しようと思っているのです。

なお私は桐をほとんど会話処理のみで使い時たま履歴を使う程度でイベントハンドラ機能は
勉強を始めたばかりなので出来ればなるべく簡単なお答えが頂ければありがたいです。
タダでお知恵をお借りしようとしているのにわがままを言って申し訳ありませんがもしよければお助けください。
よろしくお願いします。
16091 Re:現在の表から他の表へ併合 今村 誠 2002/05/22-10:47
記事番号16076へのコメント
しぼうかんさんこんにちは、他の方からもっといい答えがあると思いますが。
項目を増やすのを思いつきました。
>なぜ現在の表から他の表へ併合したいかと言いますと納品書入力フォームで8月1
>日にC社の8月締めの納品書1、8月10日にD社の8月締めの納品書1、8月15日に
>C社の8月締めの納品書2を入力するときにそれぞれの納品書レコードに請求書番
>号をつけたいのですがC社の納品書2のレコードには締めが同じなので納品書1と
>同じ請求書番号を入力したいのです。
締めが月ごとに決まっているようですから、[締月]の項目をつくって
請求書番号を印刷したいとのことなので、[請求書番号]の項目を追加して
納品書を印刷するときに、8月分を絞込印字すると良いのではないでしょうか。

納品明細に納品書1の内容でなく集計結果だけでいい場合は、請求書番号が
未定義値でない分だけを行集計して納品書1の分を集計結果を印字する作業表に書き出して、
未定義の分で補集合をとり、請求書番号を管理している表の
最終請求書番号を書き換えて、補集合の請求書番号を書き換えて、書出表追加で
作業表に追加で書き出す。

16107 Re:現在の表から他の表へ併合 佐田 守弘 2002/05/22-23:09
記事番号16076へのコメント
しぼうかんさん
桐ver.5の会話処理では、現在の表から他の表への併合がありましたが、
桐ver.8ではそのメニューがありません。
併合は他の表から現在の表へ行います。
一見すると機能が下がったように見えますが、桐ver.5でも、一括処理コマンドを書き出してみると分かりますが、
現在の表と他の表を入替えて、切り換えた他の表にその時点で他の表になった現在の表から併合しているに過ぎません。

さて、御質問の件ですが、
@併合の方向は他の表から現在の表へ
上記に述べた通りです。質問文にもその様に書かれている様に見受けます。
Aイベントの実行
他の表を編集表とするフォームを開いているようですが、このフォームを開いても
併合はうまく行かないかも知れません。開いただけではそのフォームのイベントが
実行されないからです。実行させるには、フォーム開始イベントに併合のコマンドを
書く必要があるかも知れません。

実は、他の表(B)を別のフォームで開く必要はなく、現在の表(A)の中で、次の様に
すればできるはずです。ここではコマンドの要点を記載します。
 表 B
 併合 A <併合条件>
 終了 表 B
つまり、Aを編集しているフォームのイベントの中でBを開いてこれを編集表とし、
現在表であるAから併合を行います。

佐田守弘(KS-00119)
16112 今村さんありがとうございます しぼうかん 2002/05/23-20:20
記事番号16091へのコメント
今村さん早速ご返答ありがとうございます。昨夜読ませていただきました。

>納品書を印刷するときに,8月分を絞込印字すると良いのではないでしょうか。

ここの部分はスラッシュメニューを開きまず絞り込み→比較式で[会社名]で会社名を入力して絞り込み,
その後絞り込み→比較式で[締月]で8を入力して絞り込みその後レポート印刷をするという事でしょうか。
もしそうなら
私の説明不足でしたが5/21日最初の質問時の説明を補足しますと
桐のSampleデータの印刷伝票フォルダの中の販売伝票フォルダの中の
hanbai.wfmとseikyu.wfmとhanbai.tblのシステムを改造してシステムを作ろうと思っています。
このSampleデータのhanbai.wfmに請求書番号(データ型:数値)を入力するオブジェクトを作り
このオブジェクトには編集初期値と挿入初期値を設定して自動で番号を入力したいのです。
その初期値の計算式にhanbai.tblの入力済みデータの中から同じ会社で同じ締月で同じ締日の
納品書データのレコードがあればそのレコードより請求書番号を表引きして入力し,同じ会社で
同じ締月で同じ締日のレコードが無いときは最終の請求書番号に+1を追加して
請求書番号を入力したいのです。
もちろん自分自身の表より表引きが出来ないので,そのため他の表へ同じデータを併合してその表より表引きしたいのです。
ですから印刷時ではなくフォームの入力時に請求書番号を入力する事により,
フォームの印刷用ボタンを押すと現在表示中の
データの印刷をするという簡単な方法にしたいのです。
もし今村さんの説明の解釈が違っていたらすいません。

>納品明細に納品書1の内容でなく集計結果だけでいい場合は、請求書番号が
>未定義値でない分だけを行集計して納品書1の分を集計結果を印字する作業表に
>書き出して、未定義の分で補集合をとり、請求書番号を管理している表の
>最終請求書番号を書き換えて、補集合の請求書番号を書き換えて、書出表追加で
>作業表に追加で書き出す。

ここの部分はすいませんが私の貧相な頭脳と桐の知識では理解しようとしましたがまだ理解ができていません。
猫に小判とならないようになんとか早く理解したいのですが返事があまり遅くなると失礼になりますので
解読中ということでお許し下さい。

最後に私の能力不足でせっかくの助言をまだ役にたてる事は出来て居ませんが
ご返事をいただいただけで感謝しております。

16113 Re:現在の表から他の表へ併合 しぼうかん 2002/05/23-20:25
記事番号16107へのコメント
佐田さん早速のご返答ありがとうございます。
私でも非常にわかりやい説明で助かります。

早速コマンドボタンのイベントに教えていただいた通りフォームに作った
コマンドボタン(機能はなし)にイベントハンドラを記述してみたのですが
"イベントハンドラの実行中にエラーが発生しましたKU1135:コマンドの形式に誤りがあります(=がありません)"
とエラーメッセージが出てしまいます。記述内容は以下の通りです。

1行目 手続き定義開始・・・
2行目 表 B.tbl
3行目 表 併合 条件名 "AよりBへ併合"
4行目 終了 表 B.tbl
5行目 手続き定義終了

どこがおかしいのでしょうか。なにぶんプログラムの知識が少なくもしかしたら初歩的なミスを
犯しているかもしれません。もしよろしければ教えて頂けませんでしょうか
16115 Re:現在の表から他の表へ併合 pokopon 2002/05/23-20:46
記事番号16113へのコメント
>"イベントハンドラの実行中にエラーが発生しましたKU1135:コマンドの形式に誤りがありま
>す(=がありません)"
>3行目 表 併合 条件名 "AよりBへ併合"

併合 条件名 = "AよりBへ併合"

エラーメッセージのとおり「=」がありません。

■構文
併合  条件名 = <文字列> , 終了状態 = <変数名>

HTML HELP を参照してみましょう。
16116 システムのことは難しいです 今村 誠 2002/05/23-23:17
記事番号16112へのコメント
しぼうかんさんこんにちは、サンプルも良いと思いますが、
桐8はイベントで、他の表のデータを持ってきたり、書き出したりできます。
また得意先を一覧表にしたまま、サブフォームで納品書を書き、得意先毎の請求書番号をメインフォームに表示できます。
リンクのコーナーにある佐田先生や、ONnojiさんのページでお勉強されてはいかがでしょうか

http://www4.justnet.ne.jp/~morihiro.sada/index.htm

http://www.ne.jp/asahi/m.sada/kiri/GUIDE/GUIDE_TOP.html

16117 コマンド記述のエラー箇所 佐田 守弘 2002/05/23-23:46
記事番号16113へのコメント
しぼうかんさん

>2行目 表 B.tbl
は、
表 "B.tbl"
と記述して下さい。「.tbl」を省略して「表 B」ならエラーにはなりません。
ピリオドがあるため、文字列として識別せるために二重引用符が必要なのです。

>4行目 終了 表 B.tbl
は、だめです。
終了 表 編集対象表
と記述します。

前コメントで「終了 表 B」と書きましたが、Bを終了させるというだけの意味です。
表Bの表番号を指定するか、Bが編集対象表になっているなら、「編集対象表」
と記述してその時の編集対象表を終了します。

あとはpokoponさんの書かれている通りです。

【アドバイス】
コマンドの記述になれていないうちは、コマンド名を入力したら、Alt+Endキーを押して
コマンドの雛型を入力し、これを訂正するようにして下さい。
コマンド名やパラメータの記述は、慣れて来ても結構間違えるものです。

佐田守弘(KS-00119)
16129 今村さんありがとうございます。 しぼうかん 2002/05/24-21:44
記事番号16116へのコメント
今村さんこんばんは 親切なアドバイスありがとうございます。
わざわざリンクまで張っていただいてご迷惑をおかけしました。(^^;)
今村さんが最初に教えてくださったことが理解実行できるようになるともっといろいろなことが出来る様になるんでしょうね。
そうなるように佐田先生やONoujiさんのホームページで勉強します。



16131 pokoponさんありがとうございます しぼうかん 2002/05/24-21:47
記事番号16115へのコメント
pokoponさんこんばんわ
早速なご返答ありがとうございます。どうも初歩的なミスのようではずかしい限りです。(^^;)
HELPは見ていたのですが,何しろどこをどうみればいいのかもわからないイベント初心者なのです。
このあと佐田さんからもご返答がありましてお二人のわかりやすくて適切な助言を併せて入力してみたらエラーメッセージもでず
無事に併合イベントを実行する事ができました。初めてイベントハンドラがうまくいった時はちょっとした感動物でした。
後はA.tblの[請求書番号]に編集初期値に
#cond(#表引き([会社名+締月],=,"B",[会社名+締月],[請求書番号])>1,#表引き([会社名+締月],=,"B",[会社名+締月],[請求書番号]),1,#直前値([請求書番号],0)+1)
と入力すれば目的が達成出来ると思ったのですがA.tblで入力するとうまくゆくのに
A.wfmで入力すると
#表引き([会社名+締月],=,"B",[会社名+締月],[請求書番号])のデータが表引き出来ず常に直前値([請求書番号],0)+1
の方のデータが表示されます。[請求書番号]はA.wfmではグループ項目として配置してあります。
管理工学のサポートセンターに電話したのですがフォームのグループ追加と表の行挿入とは意味合いが少し違うそうで
出来ないかもしれませんが調べてみますとのことでしたが時間切れで今日は返事がもらえなかったので
月曜には返事を聞いて見ようと思います。
もしサポートセンターでダメだった時は、また助言を頂くことができればうれしいです。
ただA.wfmよりB.tblに併合が出来るようになっただけでも自分には非常にいい勉強になりました!!ありがとうございます。


16133 佐田さんありがとうございます。 しぼうかん 2002/05/24-21:50
記事番号16117へのコメント
佐田さんこんばんわ
早速なご返答ありがとうございます。Pokoponさんと佐田さんのわかりやすくて
適切な助言を併せて入力してみたらエラーメッセージもです無事に併合イベントを実行できました。
とくに佐田さんには初歩的な事を2度も大変丁寧で詳しくてわかりやすい助言をいただき
本当にありがとうございます&ご迷惑をおかけしました。
初めてイベントハンドラがうまくいった時はちょっとした感動物でした。
後はA.tblの[請求書番号]に編集初期値に
#cond(#表引き([会社名+締月],=,"B",[会社名+締月],[請求書番号])>1,#表引き([会社名+締月],=,"B",[会社名+締月],[請求書番号]),1,#直前値([請求書番号],0)+1)
と入力すれば目的が達成出来ると思ったのですがA.tblで入力するとうまくゆくのに
A.wfmで入力すると
#表引き([会社名+締月],=,"B",[会社名+締月],[請求書番号])
のデータが表引き出来ず常に直前値([請求書番号],0)+1の方のデータが表示されます。
[請求書番号]はA.wfmではグループ項目として配置してあります。管理工学のサポートセンターに電話したのですが
フォームのグループ追加と表の行挿入とは意味合いが少し違うそうで出来ないかもしれませんが調べてみますとのことでしたが
時間切れで今日は返事がもらえなかったので月曜には返事を聞いて見ようと思います。
もしサポートセンターでダメだった時は、また助言を頂くことができればうれしいです。
今まで会社の中では桐をまあまあ使いこなしているつもりでしたが佐田さんを始めみなさんのアドバイスを頂いていると
自分もまだまだ桐を使いこなしていないなあ痛感しました。
ただA.wfmよりB.tblに併合が出来るようになっただけでも自分には非常にいい勉強になりました!!本当にありがとうございます。


16196 なんとか解決のめどがつきました しぼうかん 2002/05/28-21:52
記事番号16107へのコメント
佐田さんpokoponさんこんばんわ しぼうかんです。
月曜、火曜と管理工学のサポートセンターに連絡を入れ
[会社名+締月]を項目計算式に[会社名]+#文字列([締月])としないで編集初期値に[会社名]+#文字列([締月])と記述しこの項目を
A.wfmのグループ項目とすることで問題は解決できそうです。
今村さん、佐田さん、
pokoponさん、親切な助言のありがとうございました。

戻る