みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
始めまして。色々調べながらExcel管理から脱却した業務用DBの構築に日々悪戦苦闘してます。
どうしてもうまくいかず、困っていることがあります。
1テーブル :注文DB
2フィールド:顧客名(A社・・J社10社)※顧客マスタからルックアップ
納品日
g納品日開始 ※グローバル
g納品日終了 ※グローバル
3やりたいこと:A社とA社以外に分けて、納品期間で抽出(集計)したい
4できていること:スクリプトでも正常
①トップ画面で「A社」ボタンを押すと、A社専用の画面遷移
②検索モード:顧客名=A社
③A社だけの注文データが表示される
④g納品日開始、g納品日終了 に日付を入れて検索実行(スクリプト)
⑤A社かつ④の期間での結果が表示される
そこで、4のレイアウト、スクリプトをコピーして、
⑥トップ画面で「A社以外」を押すと、A社以外用の画面遷移
⑦検索モード:顧客名=A社を対象外
⑧A社以外の注文データが表示される
ここまでは4ー①~③の流れと同じだが、
⑨g納品日開始、g納品日終了 に日付を入れて検索実行(スクリプト)
すると、A社含む全ての顧客、期間の、所謂注文データそのものが表示される
A社のみの時はうまく動作して、その逆をさせているだけなのですが、
何が原因なのか全くわからず、困っています。
アドバイス、ご指摘いただけたら幸いです。
よろしくお願いいたします。
共通な部分が多いスクリプトにするのでしたら、
①g納品日開始、g納品日終了 に日付を入れて検索実行(スクリプト)
②検索モード:顧客名=A社
を行った後、A社のみでしたら、
③検索結果の絞り込み
を行う
A社以外でしたら、
③レコードを対象外
④検索結果の絞り込み
を行います。
上の4も、間違いなく動いていますか?
もう少しいい方法もありそうです。具体的にどの様なテーブル構成で、どのような事をしようとされているのかを書き出してみられませんか。
Offline
トップ画面で日付を入れた方が、ワンステップで検索できていいのでは。
Shinさん、ありがとうございます。
私のコメントでの4(できていること)は問題なく動作します。
アドバイス通り、順序を変えて、先ずは
①g納品日開始、g納品日終了 に日付を入れて検索実行(スクリプト)
②検索モード:顧客名=A社 ←手入力で実施
を実行したら、A社で期間での表示結果となりました。
しかし、検索条件の変更で、
A社除外で、検索実行すると、
全データ表示 の結果になってしまいます。
こういう使い方はしないようがいいのでしょうか?
g納品日開始~g納品日愁傷 かつ g顧客名
のように、全てグローバル変数でのアンド検索はできるのでしょうか?
④のスクリプトの中身は?
Offline
Shinさん
④は、Shinさんのアドバイスのことをおっしゃっていますか?
そちらはスクリプトは使わず手順を手作業で試しました。
私の最初の4のスクリプトでしたら、
ーーーーーーーーーーーーーーー
TOP画面のボタンに設定したスクリプト名:画面遷移(A社)
レイアウト切り替え[「売上集計(A社)」(注文データ);アニメーション:なし]
全レコード表示
消去[選択;注文データ::g納品日開始]
消去[選択;注文データ::g納品日終了]
検索モードに切り替え[記憶する;一時停止:オフ]
※検索条件の指定 処理:レコードの検索 条件:注文データ:r顧客名[="A社"]
検索実行[]
ーーーーーーーーーーーーーーー
レイアウト:売上集計(A社)
スクリプト:集計期間入力(A社)
エラー処理[オン]
If[/*IsEmpty(注文データ::g納品日開始)and IsEmpty(注文データ::g納品日終了)*/]
カスタムダイアログを表示["エラー";"検索条件を入力してください。"]
End If
検索条件を変更
フィール設定[注文データ::納品日;注文データ::g納品日開始&"..."&注文データ::g納品日終了]
検索実行[]
If [Get(最終エラー)]
カスタムダイアログを表示["メッセージ";"該当するデータが見つかりませんでした"]
End If
---------------
以上の流れで、A社だけの期間集計結果がきちんと表示されています。
ありがとうございます。
最初に全体から期間を表示されることはできるのですが、
その後が・・うまく行かないんです。
顧客名をどのように変数に代入したらいいのか、わからないんです。
すみません、一つお伝えすることが漏れていました。
小計パート(ソート順:納品日、顧客ID)
と
後部総計
も作っています。
A社一つだけだから、集計パートも正常になっていて、
A社以外は、複数あるので、小計パートが悪さしているんでしょうか?
何度もすみません。
結局、原因がわからないままですが、
3パターンの集計レイアウトで落ち着くことにしました。
①A社専用レイアウト:A社検索語、期間入力
②B社専用レイアウト:同上
※A社とB社が、請求締め日が他と異なるため
③全データ表示レイアウト:期間入力
※A社・B社とも別メニューで内訳が出るので、
ここに表示されても、社内的に問題なしと判断
検索条件が記憶されていて、全レコード表示にしても、
前の検索条件がクリアされていないようです。
これをクリアできる方法があれば、結果は変わるかもしれません・・・
自分がたどり着けないだけなのかもしれません。
また、別事案で相談させてください。お騒がせしました。
「検索条件を変更」しているので、前の検索の条件が流用されますよね。
#2でShinさんが正しいやり方を書いてますけど、除外検索をするときは「除外」のステップが入るので、「逆をする」には同じスクリプトにはなりません。
検索条件変更(「A社以外」の検索条件が設定される)
期間の条件を(新規でなく同じ検索条件に)追加
検索実行
だと、「A社かつその期間のデータを除外」という条件になるから、その期間以外のA社のデータが含まれてしまうという状況なのでは。
> A社とB社が、請求締め日が他と異なるため
予想していた状況でしたね。
売上それぞれに対して、締め日と、請求日を計算させてしまえば、その請求日で検索して、企業でソートすれば、全企業の集計が1手間ですみます。
締め日が20で、月末請求 という顧客について、顧客マスターに、締日 : 20 ; 請求 : 0 (月末は0とします)というフィールドを作っておきます。
売上日に対して締め日は、
Date ( Month ( 売上日 - 顧客マスター::締日 ) + 1 ; 顧客マスター::締日 ; Year ( 売上日 - 顧客マスター::締日 ) )で求められます。さらに請求日は、
Date ( Month ( 締め日 - 顧客マスター::請求 + 1 ) + 1 ; 顧客マスター::請求 ; Year ( 売上日 - 顧客マスター::請求 + 1 ) )です。これを使えば、売上日付で抽出は簡単です。今月の請求、という売上を一挙に検索でき、それを顧客で集計すれば、一挙に請求書が作成できます。
例えば、A B C 社の締め日がそれぞれ 15 20 25 請求日が 25 末 末 だったとして、売上の各レコードに上の式の計算フィールドを設定しておけば、請求日 = 7.25 か、7.31 でA または、B C の請求分が抽出できます。7/25...7/31 で抽出すれば、 A B C が抽出できますので、それを、会社名で集計をかければ、それぞれの請求書が一挙に作れます。
https://fm-aid.com/bbs2/viewtopic.php?id=11830
のサンプルをみてください。
これの請求のテーブルに、入金の構造(入金キー、入金額、など)を組み入んでありますので、売掛表として動くようになり、その集計も簡単にできます。
Last edited by Shin (2022-07-25 13:54:17)
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 588.88 KiB (Peak: 605.79 KiB) ]