初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2020-06-27 11:02:50

エガ
Guest

インポートをする際、既存値があるフィールドは置き換えないようにしたい。

Ver18をお試しで使っています。

顧客のDBを作っていますが、emailのフィールドにはデフォルトで顧客ID(顧客レコード毎に振られるシリアルNo)が
入るようになっています。

要はemailアドレスフィールドを計算値 ”=顧客ID”として自動入力されるかたちになっています。
エクセルから顧客情報をインポートするのですが、
そのエクセルデータにはemailアドレス情報を持っている顧客ともっていない(email欄が空欄)の顧客があります。

インポートする際、email情報を持っていない顧客のファイルメーカー側のemailアドレスフィールドは、データがインポートされずに、上記の
自動入力される顧客IDが残る見込みでしたが、実際は空欄になってしまいます。

おそらく、エクセルの空欄情報がインポートされて上書きされているのではないかと思ってます。

この動き(空欄のインポート)がなされず、自動入力値(顧客ID)が残るようにする方法をご教示いただけませんでしょうか?

よろしくお願いいたします。

#2 2020-06-27 13:09:50

himadanee
Guest

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

インポート値で上書きではなく、インポートでレコードが作成されるので、自動入力が実行されるのはその後です。
インポート時のデフォルト設定では、自動入力は実行されません。ダイアログでチェックを入れる必要があります。
https://fmhelp.filemaker.com/help/16/fm … ect_header

#3 2020-06-27 14:49:39

エガ
Guest

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

ありがとうございます。「自動入力が実行されるのはその後」ということは理解しました。
「入力値に対して自動化オプションを実行」のチェックを入れてインポートを実行しましたが、やはり、自動入力値として
顧客IDは入力されず、空欄のままです。

何か手順が抜けているのでしょうか?

#4 2020-06-27 14:59:48

エガ
Guest

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

計算値の自動入力の設定のところで、既存の値がある場合は、置き換えないという設定にしています。
ひょっとすると、エクセルの空欄の属性か何か見えない情報が、インポートされていて既存値があるように認識されているのかも
しれないと思っています。

#5 2020-06-27 16:36:51

Moz
Member

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

[フィールドに既存の値が存在する場合は置き換えない]がオフの場合は
エクセルで空欄のフィールドに対して計算値は入力されません。

質問者さんの推察のとおりですが、
フィールドに空セルをインポートした場合は値(空欄)がインポートされています。

Offline

#6 2020-06-27 18:59:20

Shin
Member

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

そのフィールドの自動入力の計算値に、置き換えを許可した上で、
Case ( IsEmpty ( Self ) ; GetNextSerialValue ( Get ( ファイル名 ) ; "emailのフィールド" ) ; Self )
を設定すればいいです。

Offline

#7 2020-06-27 21:57:54

エガ
Guest

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

ありがとうございます。

Case ( IsEmpty ( Self ) ; GetNextSerialValue ( Get ( ファイル名 ) ; "emailのフィールド" ) ; Self )の ファイル名はインポートするファイルの名前、emailのフィールドとは
インポートするエクセルファイルのemailアドレスのフィールド名ということで良かったでしょうか?

すみませんが、元々emailアドレスフィールド入っていた計算式 =顧客IDと上記計算式の関係がよく分かりません。
(元々入っていた=顧客IDを上記の計算式に書き換えるということでしょうか?)
素人的な質問で申し訳ありませんが、ご教示頂けますでしょうか?

#8 2020-06-28 00:43:09

Shin
Member

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

Get ( ファイル名 ) で一つの関数です。
全体像が全くわからないのですが、emailフィールドの自動入力式を置き換えてみてください

Offline

#9 2020-06-28 05:47:50

エガ
Guest

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

ありがとうございます。
やりたいことの基本は

*顧客データベースの”emailアドレス”フィールドにエクセルファイルからデータをインポートすることです。

・エクセルファイル側のemailアドレスデータが歯抜け状態で、半分くらいしかemailアドレスのデータがありません。

・インポート時の自動入力オプションをOnにして、emailアドレスが得られなかったレコードにおいては
  ”emailアドレス”フィールドに顧客ID(顧客DB作成時に振られるシリアルナンバー)が入るようにします。
   (この自動入力は既存の値が入っている場合は上書きされないようになっています。)

ビギナーのため基本的なところが分かっておらず、申し訳ありません。
上記の「Case ( IsEmpty ( Self ) ; GetNextSerialValue ( Get ( ファイル名 ) ; "emailのフィールド" ) ; Self )」は
エクセルファイルのインポートの手順も含むものですか?それとも自動入力の計算方法で、インポートはインポートで別途行うべきものですか?

IsEmpty ( Self )や GetNextSerialValue(***;Self)でどういうことを行っているのかご教示頂ければ幸いです。
(検索するとGetNextSerialValueは「ファイル名のフィールド名の次のシリアル番号を返します。」と出てくるのですが、どうして「フィールド名の次のシリアル番号」なのか
良くわかりません。。)

宜しくお願い致します。

#10 2020-06-28 08:30:10

Shin
Member

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

email フィールドと、別にシリアルが振ってある 顧客iD フィールドがあるようですね。(そのような、フィールド定義についての情報が欲しいのです)
新規レコードを作っているのではなく、参照インポートを行なっているのですか。それとも、単に新規レコードを作るようにインポートしているのですか。

Offline

#11 2020-06-28 10:19:18

チポ
Member

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

emailフィールドを空白で上書きしたくない。
ですよね。
これは入力値の自動化とは無関係でしょう。

空白で上書きしないためには空白のレコードは、
emailをインポートしなければいいのですから、、

インポート用の中間テーブルを作り、レコードがない状態で
エクセルをインポート。
そのテーブルでemailが空白でないレコードを対象にしてインポート、
次に、空白を対象にして、email以外をインポート

これでいいのでは。

この中間テーブルはレコード削除を繰り返すことになりますから、
たまに最適化を行った方がいいでしょう。

Offline

#12 2020-06-28 10:50:05

エガ
Guest

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

データをemailアドレスがあるデータとないデータで分けてインポートするということですね。
理解できました。
アドバイスありがとうございました!

#13 2020-06-28 11:59:00

Shin
Member

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

別々にインポートする必要はありませんよ。email フィールドと、別にシリアルが振ってある 顧客iD フィールドがあるのでしたら、
Case ( IsEmpty ( Self ) ; 顧客ID ; Self )
という式に変更し、上書きを許可すればいいです。

Last edited by Shin (2020-06-28 11:59:59)

Offline

#14 2020-06-29 08:51:35

チポ
Member

Re: インポートをする際、既存値があるフィールドは置き換えないようにしたい。

emailフィールドが編集されて、他の値に書き換えられているレコードがある。
と考えるのが自然でしょう。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 553.32 KiB (Peak: 574.23 KiB) ]