みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Filemaker pro 13 を使用しています。
フィールドA フィールドB
問い合わせNo お客様コード 更新日 その他情報
AA123456 f1111111 2015/10/01 ********
AA143567 f222222 2015/12/13 ********
AA453565 f333333 2015/02/03 ********
AA556675 f444444 2015/03/02 ********
AA456467 f333333 2015/02/23 ********
AA345344 f1111111 2016/01/06 ********
AA246545 f1111111 2015/02/14 ********
といったエクセルファイルをインポートさせたいと考えています。
このようなデータが毎週届きまして、毎週問い合わせNoを照合フィールドとしてインポートして更新しています。
・問い合わせNoは一意
・お客様コードは各お客様固有のものなので、同じお客様からの問い合わせが複数回あるとお客様コードは重複する場合がある
という状況です。
インポートの際には
「対象内レコード内で一致するレコードを更新」
「一致しないデータを新規レコードとして追加する」
にチェックを入れています。
上記のようなエクセルファイルをインポートすると、お客様コードは当然重複してインポートされます。
そこで、インポートの際に、
・お客様コードが同一で、
・更新日が古いもの(最新ではないもの全て)
を削除したいと考えています。
どのようにスクリプトを書いたらよいでしょうか。
お手数おかけいたしますが何卒宜しくお願い致します。
インポートの際に、問い合わせNoを照合フィールドに指定していますか。
設定が正しければ、そのインポートで意図とする動作になるはずですが。
ただし、1回のインポートで同一の問い合わせNoのレコードがあると、意図通りにならないかもしれませんが。
Offline
インポートの際に、問い合わせNoを照合フィールドに指定していますか。
設定が正しければ、そのインポートで意図とする動作になるはずですが。
ただし、1回のインポートで同一の問い合わせNoのレコードがあると、意図通りにならないかもしれませんが。
shin様
ご返信ありがとうございます。
ご連絡遅くなって申し訳ありません。
問い合せNoを照合フィールドへの指定は行っております。
また、お客様コードを照合フィールドとしてインポートすることも試しました。
問い合わせNo お客様コード 更新日 その他情報
AA123456 f1111111 2015/10/01 ********
AA345344 f1111111 2016/01/06 ********
AA246545 f1111111 2015/02/14 ********
上記のEXCELをインポートした場合、
AA246545 f1111111 2015/02/14 ********
だけが残って欲しいのですが、
お客様コードを照合フィールドとした場合でも、同じEXCEL内にある場合は3つ全てインポートしてしまいます。
スクリプトで、
インポート→スクリプトで更新日を降順に並び替え→お客様コードが重複する二個目以降のものを削除
のようなものを組めないかとも考えたのですが、
「お客様コードが重複する二個目以降のものを削除」がうまくスクリプト作れませんでした。
EXCELファイルの段階で重複を削除すれば良いのですが、
業務の簡略化のために可能であればFileMaker内で実装できないかと思いまして・・・。
コードを重複禁止に制限しておけば重複しません。日付を最新にするには、降順ソートしてからインポートする必要がある。
既存のレコードの日付を最新にするには、逆に昇順ソートでないとうまくいかないんで、削除しないでFM内に全レコードを保持したほうがいいのでは。
照合でインポートとしても、
照合するのは既存の対象レコードとで、
インポートしたレコードとは照合しません。
ですから
インポートのソースの重複は解消されないでインポートされてしまいますね。
フィールド定義の入力値の制限で
常時・ユニーク
とすると、重複は解消されますが、
重複のレコードには上書きされません。
ぽんかんさんが言われる様に、すべてインポートして、
表示は、お客様コードがユニークなお客様マスタのようなテーブルで、
リレーションで最新日付のみを表示したらいかがでしょう。
Offline
ぽんかん様
チポ様
ありがとうございます。
>>照合でインポートとしても、
>>照合するのは既存の対象レコードとで、
>>インポートしたレコードとは照合しません。
やはりそういうことですね・・・。
ご提案頂いておりました、自己リレーションにて解決出来るかと思いまして、色々試してみたのですが上手くいきません・・・。
問い合わせNo お客様コード 更新日 その他情報
AA123456 f1111111 2015/10/01 ********
AA345344 f1111111 2016/01/06 ********
AA246545 f1111111 2015/02/14 ********
AA444444 f2222222 2000/01/01 ********
上記の状態で自己リレーションを、元のテーブルをA・自己リレーションのテーブルをBとして
A:お客様コード = B:お客様コード
A:更新日 ≦ B:更新日
とすると、Bにて表示されるレコードは
AA123456 f1111111 2015/10/01 ********
非表示
非表示
AA444444 f2222222 2000/01/01 ********
A:お客様コード = B:お客様コード
A:更新日 > B:更新日
とすると、Bにて表示されるレコードは
非表示
AA345344 f1111111 2016/01/06 ********
AA246545 f1111111 2015/02/14 ********
非表示
となってしまって思った挙動が実現できません。
非表示
AA345344 f1111111 2016/01/06 ********
非表示
AA444444 f2222222 2000/01/01 ********
となってくれれば、そのままデータを使えますし、逆に
AA123456 f1111111 2015/10/01 ********
非表示
AA246545 f1111111 2015/02/14 ********
非表示
となってくれれば表示されたレコードを削除するスクリプトなどを組めば想定している動作をさせれるかと考えているのですが、
ハマってしまっている状態です・・・。
私の設定が誤っている気がするので、よろしければもう一度お教えいただけませんでしょうか。
自己リレーションを用いた経験が無いため、見当違いのことを行っているようでしたら申し訳ありません。
自己リレーションではなく、
> お客様コードがユニークなお客様マスタのようなテーブル
このテーブルとリレーションして、このテーブルで表示するんですよ。
Offline
チポ様
ありがとうございます。
ご返信遅くなりまして申し訳ないです。
問い合わせNo お客様コード 更新日 その他情報
AA123456 f1111111 2015/10/01 ********
AA345344 f1111111 2016/01/06 ********
AA246545 f1111111 2015/02/14 ********
全てのデータが存在する上記のようなお客様マスタテーブル(EXCELからインポートされたマスター)があったとして、
AA345344 f1111111 2016/01/06 ********
マスタテーブルとリレーションした、上記だけが表示される別のテーブルを作成する
ということで把握しました。
上記が実現できれば目的は達成できるので、色々試しましたが上手くいきません・・・。
チポ様がおっしゃっておられる、
>>リレーションで最新日付のみを表示
が上手く実現できません。
http://www.russ.jp/stepbbs/step.cgi?mode=view&no=75111
https://fm-aid.com/bbs2/viewtopic.php?id=1077
このあたりのページを参考にさせていただいたのですが、上手く作成することができませんでした。
もしよろしければ、
・リレーションで最新日付のみを表示
の手段を詳しくお教えいただけないでしょうか。
何度もご質問して申し訳ないです。
お客様テーブルと、インポートテーブルとを
お客様コードでリレーションし、
リレーションの設定で、
ソートを日付の降順に指定します。
これで、
お客様マスタテーブルのレイアウトに関連テーブルのフィールドを配置するだけです。
Offline
チポ様
ありがとうございます、実現できました。
お客様マスタテーブルの中に設置した関連テーブルのフィールドに、
AA345344 f1111111 2016/01/06 ********
AA345344 f1111111 2016/01/06 ********
AA345344 f1111111 2016/01/06 ********
という形で表示されるようになりました。
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 549.52 KiB (Peak: 570.42 KiB) ]