みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
ああ、リレーションも違うんだった。しかし、「初出でも自身と照合します」のは、レコードを保存した後だけです。
新規レコードで初出の値を入れた場合は関連レコードなし(MAXは空欄。SerialIncrementの増分=数字としては0)です。
つまり、grp codeに同じ値を入れ直すと連番が増えてしまうのであった。普通はしないか。
前のバージョンでテキストフィールドのMAXが計算できないような話をみた気がするんですが、みつからない...
4桁揃えのフィールドは数字でなくテキストにするのが本当です。その場合連結時にGetAsTextは不要です。
チポ様、 ありがとうございます。
> not IsValid ( テーブル2::grp code ) ; 1 ;
> は、元々はgrp_codeが初出の場合の計算なので、Maxで処理されてる(関連レコードがなければ空)ので不要私の前レスのリレーションでは、
初出の grp code の場合関連レコードが有りませんので、その場合の対処です。
引栗さんのリレーションでは、
初出でも自身と照合しますからこれが不要ということです。
チポ様の場合は、リレーションに vol no > vol no も追加になっていて、というのもあって、ですよね。
…じゃないか。 Max だから、でしょうか。 Maxが 0 じゃなくて、該当無し、となっておかしくなってしまうふう…かな?
と想像してみました。
> グループコード(grp code)はすべて半角英数字3文字
この制限をかけることもできますよ。
上記の計算式に入れて「だめだよ」と表示とか、
別フィールドでアラート表示とか、
入力値の制限でとか、、
をを~…一応規則性のある3文字並びなので、半角英数字3文字だけれども
組み合わせ間違ってるよ、といったこともエラーチェックには必要になってくるので複雑になりそうです…
おそらく、先に追加されるコード名も照会先を用意しておいて…みたいな?…
すみません、今はこれ以上ノーミソがついていけません…が、
いろいろなお知恵をご検討くださり、感謝です。本当にありがとうございました。
またなにかとお世話になるかと思いますが、宜しくお願い致します。
Offline
[ 解決 ] となっておりますが、後日 同内容の質問と思って おさらいしてみようとうっかり参加したところ
さらなる発展型で太刀打ちできず玉砕しましたが、 覚え書きにここに記させていただきます。
◆ 「同じIDの人を数える」 (ほぼ同条件)
http://www.russ.jp/stepbbs/step.cgi?mode=view&no=4276 → https://fm-aid.com/bbs2/viewtopic.php?id=860
◆ 「とある条件下でレコードに管理番号を自動入力したい」 (条件上乗せ)
https://fm-aid.com/bbs2/viewtopic.php?id=845 #12 ・ #13 ・ #14
引栗様、 解説をありがとうございました。
チポ様、 裏ワザのさらなる発展型、スマートで美しすぎます!
→ 「左右交換」できるのはシリアル値に数字部分が1か所しかないからです。複数あるとMAX値を加工する必要があって面倒になる。 @#12
→ 初出の場合のみ手入力すれば SerialIncrement ( テーブル2::フィールドB ; Max ( テーブル2::フィールドB ) )で済み、
追加メンテもいらなくなります @#13
→ 既存値から加算するんだから、データ自体がマスタのようになるのですねえ。 @#14
Offline
計算値自動入力、既存値置換、常に評価する→評価しない、にして
SerialIncrement("0001";Max(テーブル2::grp_vol)) & Left(grp code;0)
とかも、あり?
(新規作成時などgrp codeが空欄は空欄を返し、入力/編集時は計算結果を返す。)
Last edited by Hiro (2014-01-29 04:18:41)
Offline
[ Generated in 0.009 seconds, 15 queries executed - Memory usage: 510.78 KiB (Peak: 515.69 KiB) ]