みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
himadaneeさん
その方法がありましたね、
確かそんなのがあったと思って、試したんですが、見つからず。
前レスのような回答をしてしまいました。
私のレスはボツでお願いします。。
それでいいのなら、、
印刷用に別テーブルを作って、
そちらへ印刷レコードのみをインポート、
1ページ分に不足する空レコードを作製。
の手順でいかがでしょう。
その罫線をボディに書くと、
罫線の間隔はボディの天地高さと同じになりますよね。
ボディに二本書いて、半分の間隔に並ばせることもできます。
しかし、それが正比例しない間隔になるととても面倒になりますね。
いかがでしょうか?
himadaneeさんが書かれていますが,
私の質問は、
BBファイルのレコードから見て、AAファイルの関連レコードの数は
一つか、複数か、ということです。
一つなら何も考えなくていいのですが、
複数あった場合、書かれたスクリプトでは常に、
関連レコードの内、リレーションの照合一番のレコードのみを編集していますよ。
一つなら、そのテーブルの存在が気になりますし、
複数なら、その作業自体が気になります。
既存の関連レコードを編集するのなら、、
BBファイルのレコードから見て、AAファイルの関連レコードは
対1でしょうか?
対多だと書かれたスクリプトは照合1番目のレコードに入力されます。
> [年月]で検索したとき
毎月ということでしょうか?
> 「販売、入金がなくても差額があれば表示される」
これはレコードが有りませんから、レコードを作るしかないでしょう。
「毎月」が正しければ、
顧客&月ごとのテーブルを作って、
毎月全顧客のレコードを作れば、そちらでご希望の表示ができますね
> 同じレイアウトにまとめると扱いづらい
レイアウトに配置するフィールドは自由に選択できます。
一つのテーブルで、Aのレイアウト、Bのレイアウト
とすれば現状と全く同じに見えるでしょう。
まず、
> 「報告書」のテーブルオカレンスが1つの場合、
> 「Aデータ」「Bデータ」とリレーションシップを結べないことは分かったので、
> テーブルオカレンスは「報告書1」「報告書2」としています。
これは間違いです。
報告書のTOを一つにして、
AかB、どちらかのTOをもう一つ作ります。
リレーションで参照する側をデフォルト、される側を複製、
そうしないとそうしないといろいろ面倒になりますよ。
で、方法の一例は、
報告書で計算フィールドを作り、計算式
Case ( IsValid ( A::フィールドa) ; A::フィールドa ; B::フィールドa )
とすればいいでしょう。
そもそも、
AとB二つのテーブルに分けるのが面倒の元なんだと思いますよ。
ああ、
表示形式の制限はできませんからダメか。。
アクセス権の設定で、フィールドの内容を見られなくすることはできますが、
表形式で、それを配置することはできますね。
表形式をやめて、1行レイアウトのリスト表示ではダメでしょうか?
F1からF7が一つのブロックで、次のF8以降に影響を及ぼさない。
のなら、
ブロックごとに考えればいいのですから、
そのブロックがいくつあってもそんなに問題にならないでしょう。
F2,F3,F4の文字数が多く1行で収まらない場合、F4の前で改行したい。
ですよね。
それは次のF5,F6,F7も同様に考えるのでしょうか?
レイアウトの細かなところが理解できていませんが、、
レイアウトを複数作って、文字数で切り替える。
とか、
複数フィールドを連結したフィールドを作る。
とか必要なのでは。
そうですね。
同じレイアウト名が続いちゃいますから、
そうしないようにしないとだめですよね。
他にも何かあるかな??
> OnLayoutEnter で、グローバルフィールドかグローバル変数にレイアウト名を改行区切りで持たせていきます
単純にこれだと、
スクリプトで前のレイアウトに戻った時にもそのレイアウト名が入ってしまいます。
これを避ける必要がありますね。
> 商品数が多いため、できればたくさんフィールドを作らないもっとスムーズなやり方
商品ごとの集計フィールドを作る?
テーブルの構造の説明がありません。
もっと詳細を書かれれば回答が早くなると思いますよ。
FMファイルをインポートするとき、
そのファイルが開いていれば対象レコードを、
閉じていれば全レコードをインポートします。
受注と納品は1対多になりますから、
前にも書かれた通り、
検索条件に合う関連レコードを持つ親レコードが抽出されます。
ですから正しい結果を表示しているのでは。
そもそも何を抽出したいのでしょうか?
関連レコードがすべて空白の親レコードを求めたいのでしたら、
スレ主さんが最初に書かれた、
入力のあるレコードを除外する方法でしょう。
テキスト列ならそれじゃすまないでしょう。
01,002
の様なのがないことを条件にして、
Replace ( Substitute ( ¶ & テキスト ; ["¶0" ; "" ] ; [ "¶¶" ; "¶"] ) ; 1 ; 1 ; "" )
こんなのでは。。
書かれた1行が1レコードで、
対象レコードにしたいのなら、検索するだけでは。
書かれた契約終了日を、
契約終了日に入力があればその日、なければ本日
と変えればいいのでは。
Letの定義で変数にして、契約終了日を変数に変えればいいでしょう。
書かれた式自体の是非は見ていません。。
micさん
> 変数を設定 [$date; 値:Get(スクリプト引数)]
これだけでは意味不明でしょう。
今回のためには、二つのテーブルは不要では。
> 〇月を入力し作成を押すとその月の日付が記入されたレコード
翌月以降の指定としたら、
例えば、
12月時点で1月の指定だと、年を考えなければなりませんよね。
全日付のレコードを作るのなら、
Loopで一日ずつレコードを作ってゆくスクリプトでしょう。
簡単なのは、
日付フィールドの入力値の自動化で
Self + 1
既存値置き換え
として置いて、
最後のレコードの複製を繰り返せばいいですね。
これはスクリプトにしないでも、
キーボードショートカット
Ctrl+D (Win)
command-D (Mac)
を押しっぱなしで出来ます。
30レコード分で数秒で出来ちゃいますよ。
計算フィールドでしょうか?
フィールドタイプが数字なっていませんか?
> 取引先と日付でリレーションして
日付の範囲でしょうか?
それとも、
都度の請求で単に同日付のリレーションでしょうか?
> すでに請求した売上が表示される
範囲なら、これはないと思いますが、、
同日付とすると、同日付で複数の請求があるということですか?
> 取引先からExcelで送られてくるデータがあります
これは、
一つの請求書の明細ですよね?
とすれば、
同じ請求書番号が振られるのでは。
ならば、
> インポートでは画面切り替えが多くなる
これはなくなるのでは。。
インポート直後はインポートしたレコードのみが対象レコードとなりますから、
同じ請求書番号なら、全置換で一発ですよ。
[ Generated in 0.044 seconds, 7 queries executed - Memory usage: 631.81 KiB (Peak: 1.37 MiB) ]