みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめまして。データベース作成初でいきなりファイルメーカーをまかされました。しかも今年から・・・色々いたらないところがあると思いますがよろしくお願いいたします。
早速ですが、フィールドAに受注先、フィルードBに日付を入力し、フィールドCにA+B+(ABのカウント)のテキスト表示をしたいと思います。
フィールドCはA+Bのレコード検索で重複していたら01、02・・・とカウントさせる様にしたいです。
ちなみに「フィールドA&Right ( Year ( 日付 ) ; 2 )&(???)」という感じにしたいと思うのですが、重複検索し、なおかつカウントする為に(???)に入れる関数が思いうかびません。どうかお力をお貸しください。よろしくお願いいたします。
AとBを連結する計算フィールドKを作って、それを照合キーに自己リレーションを組む。
そのリレーションの関連レコード数をCount()して重複数を得る。
・計算フィールドKの式は、
A & ((Right(Year(B);2)*10^4)+(Month(B)*10^2)+(Day(B)))
・自己リレーションの設定は、
「K」 = 「::K」
・重複カウントの式は、
Count(自己リレーション::A)
よって、フィールドCの式は、
K & Right("00" & Count(自己リレーション::A);2)
Offline
受注先の日付ごと?年ごとのような「感じ」?
もう関係ないのかもしれないけど、年が0xの場合の対処が変では?
A & Right(Year(B)*10000+Month(B)*100+Day(B);6)
リレーションだけに限れば、
フィールドの連結は必須では有りません。
複数フィールドの照合ができます。
(FM7以降です)
ジジーの老婆心・・
Offline
ああ、それを書き忘れました。年ごとの連番だったら、どうせ年の計算フィールドがいるんで、連結しても同じかなと思った。
日ごとなら、そのままリレーションできます。
https://fm-aid.com/bbs2/viewtopic.php?id=661
のを使えば
SerialIncrement ( A & Right(Year(B);2) & "01" ; Max ( テーブル2::このフィールド ) )
て書いてみたら、連番が2桁だから、やっぱり年ごとじゃなく日ごと?
ん~なにかイメージとちがうような・・・
>・計算フィールドKの式は、
> A & ((Right(Year(B);2)*10^4)+(Month(B)*10^2)+(Day(B)))
なぜ上の計算式が?何の為に?
>フィールドA&Right ( Year ( 日付 ) ; 2 )&(???)
(???)部分に重複及びカウントの計算をし、
Right ( Year ( 日付 ) ; 2 )を仮にB、(???)をCとし
フィールドA&フィールドB&フィールドCという
ひとつのテキスト「ABC」というようなかんじでフィールドCに表示したいのです。
なにとぞよろしくお願いいたします。
そのイメージがはっきり分らないのですよ、こちら側には。
フィールドCはA+Bのレコード検索で重複していたら
受注先&日付ごと
と言っていますよね。
しかし
Right ( Year ( 日付 ) ; 2 )
ここでは「年」だけを取っています。
これでは同じ番号が振られてしまいますよ。
日ごとなのか
年ごとなのか
分りません。。
Offline
>> A & ((Right(Year(B);2)*10^4)+(Month(B)*10^2)+(Day(B)))
>なぜ上の計算式が?何の為に?
テキストフィールド&日付フィールド
と直接連結してみたら判るかも。
迅速な回答ありがとうございます。
ですが、やりたいことは日付については、最初に書いていたように重複していいのです。
Right ( Year ( 日付 ) ; 2 ) (以下Bで)
A+Bで重複するのは多々あるので、重複前提で「年」だけとりだしています。ですが、Cフィールドには
>フィールドCはA+Bのレコード検索で重複していたら01、02・・・とカウントさせる様にしたい
ようするに2014年の受注先Aの場合
A14&01 A14&02 A14&03と重複していればカウントしていくようなテキスト表示をしたいのです。
どうかよろしくお願いいたします。
うむ?説明が曖昧。
受注先を「日付」ごとでなく「年」ごと集計の意味??
なら計算フィールドKの式を、以下へ変更するだけ。
A & Right(Year(B);2)
他は、そのままで行ける筈。
Offline
A+B
「+」は紛らわしいのでやめましょう、
FMでは和算になります。
テキストの連結は「&」です。
ご希望は
受注先ごとかつ、同年ごとをグループとして、
グループ内で連番を振る。
でいいのかな。
Offline
早速の回答ありがとうございます。
>ご希望は
>受注先ごとかつ、同年ごとをグループとして、
>グループ内で連番を振る。
まさにそのとうりです!
また
>計算フィールドKの式を、以下へ変更するだけ。
> A & Right(Year(B);2)
>他は、そのままで行ける筈。
Kの式といいますが、フィールド内にKの式は設けたくないのですが・・・それは可能ですか?
> A & Right(Year(B);2)
を
>受注先ごとかつ、同年ごとをグループとして、
>グループ内で連番を振る。
Cとして表示が理想です。
掲示板内では解決できませんでしたが、自己解決しました。
お世話になりました。
Kはレイアウト上には必要ないですよ。
年ごとなら最低限年のフィールドYear ( 日付 )が必要な気がしますが、
リレーションを使わないで解決したんでしょうか。
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 529.34 KiB (Peak: 550.25 KiB) ]