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

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

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

You are not logged in.

Announcement

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


#1 2016-04-07 08:35:03

けつのり
Guest

エクセルからレコードをインポートする場合

FM14Ad、Win7で作業しております。
こちらの過去ログ等参考にしましたが、FM初心者の自分の技量のなさと調べ方が悪いためか解決できず質問させていただきます。

テーブル1とテーブル2(テーブル1の自己リレーション、「顧客番号」でリレーション、「時期」で前期→後期と並べ替え済み)があり、
エクセルからレコードをインポートする場合についてです。
毎回200レコード程度、顧客とその顧客の月別データなどをインポート予定で、前期分、後期分と時期で区別されています。

テーブル1
フィールドA:時期
フィールドB:とあるデータ
フィールドC:後期のデータ(If関数で時期="後期"でフィールドBがレコードとして入ります。時期="前期"で"")
フィールドD:前期のデータ(If関数で時期="後期"でフィールドBがレコードとして入ります。時期="前期"で"")
        GetNthRecord ( テーブル2::フィールドB ; レコード番号 )
フィールドE:顧客番号

テーブル1のフィールドD(計算フィールド)をGetNthRecord ( テーブル2::フィールドB ; レコード番号 )とし、
エクセルからフィールドA、Bにそれぞれ時期とデータのレコードをインポートした場合(フィールドC、Dはインポート先のフィールドではありません)、
レコードDが空になってしまいます。インポート後に、フィールドDにGetNthRecord ( テーブル2::フィールドB ; レコード番号 )を
入力し直すとレコードは表示されます。

インポート時にフィールドDにレコードを入力させる方法はないでしょうか。
すみませんが教えて下さい。

#2 2016-04-07 08:39:36

けつのり
Guest

Re: エクセルからレコードをインポートする場合

けつのり wrote:

テーブル1
フィールドA:時期
フィールドB:とあるデータ
フィールドC:後期のデータ(If関数で時期="後期"でフィールドBがレコードとして入ります。時期="前期"で"")
フィールドD:前期のデータ(If関数で時期="後期"でフィールドBがレコードとして入ります。時期="前期"で"")
        GetNthRecord ( テーブル2::フィールドB ; レコード番号 )
フィールドE:顧客番号

テーブル1のフィールドD(計算フィールド)をGetNthRecord ( テーブル2::フィールドB ; レコード番号 )とし、
エクセルからフィールドA、Bにそれぞれ時期とデータのレコードをインポートした場合(フィールドC、Dはインポート先のフィールドではありません)、

訂正します。
エクセルからインポートするのは、フィールドA、B、Eにそれぞれ時期、データ、顧客番号です。

#3 2016-04-07 09:58:51

チポ
Member

Re: エクセルからレコードをインポートする場合

> インポート後に、フィールドDにGetNthRecord ( テーブル2::フィールドB ; レコード番号 )を
入力し直すとレコードは表示されます

入力し直す
とは?
意味不明です。

また、
この「レコード番号」とはどのように得ているのですか?

Offline

#4 2016-04-07 12:02:21

けつのり
Guest

Re: エクセルからレコードをインポートする場合

説明不足ですみません。
入力し直すというのは、例えば、
テーブル1の
フィールド
A , B , C , D , E
前期 ,200 ,   ,   , 1
後期 ,150 ,150 , ? , 1
のようにインポートした後はフィールドCが「?」になっていまして、管理→データベース→フィールドからフィールドCの計算式を消して1度確定をさせまして、
その後また管理→データベース→フィールドからフィールドCにGetNthRecord ( テーブル2::フィールドB ; 2 )と入力して確定すると
A , B , C , D , E
前期 ,200 ,   ,   , 1
後期 ,150 ,150 ,200  , 1
のように表示されるのです。
レコード番号は、自己リレーションで前期→後期とソートしているので、2としています。
これも打ち忘れていました。すみません。

#5 2016-04-07 12:07:56

けつのり
Guest

Re: エクセルからレコードをインポートする場合

けつのり wrote:

……インポートした後はフィールドDが「?」になっていまして、管理→データベース→フィールドからフィールドDの計算式を消して1度確定をさせまして、
その後また管理→データベース→フィールドからフィールドDにGetNthRecord ( テーブル2::フィールドB ; 2 )と入力して確定すると……

すみません。先ほどの投稿、こちらに訂正させてください。
フィールドDとすべきところが、フィールドCになっていました。

#6 2016-04-07 13:25:25

チポ
Member

Re: エクセルからレコードをインポートする場合

索引非保存としていないのでは?

理由はよく分かりませんが、
  GetNthRecord
で得られる値は、索引保存だと引数の変更についていきませんね。

取得関数
  Get (  )
と同じと考えていいんじゃないかな。。


リレーションのソート指定を逆順にすれば、
関連フィールドで直接得られるのでは

Offline

#7 2016-04-07 21:49:15

けつのり
Guest

Re: エクセルからレコードをインポートする場合

索引非保存にしたらできました。
ありがとうございました!

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 516.95 KiB (Peak: 521.48 KiB) ]