みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
エクセルにある 日付 商品ID 個数 のデータをファイルメーカーに取り込みたいです
ファイルメーカーのテーブルやフィールドは
伝票テーブル に 伝票ID 日付
詳細テーブル に 詳細ID リレーション用伝票ID 商品ID 個数
で伝票IDとリレーション用伝票IDでリレーションしています
伝票::日付にエクセルの日付を
詳細::商品ID 詳細::個数 にそれぞれエクセルのデータをインポートしたいのですが
インポート画面で現在のテーブルしか選択することができず
関連テーブルはグレーアウトしています
伝票テーブルを開きインポートで日付をインポート
詳細テーブルを開き商品IDと個数をインポート
と分けてするものなのでしょうか?
そもそも上記のようなインポートでは詳細のリレーション用伝票IDに
対応する伝票IDが入力されないし、根本的に間違っているのでしょうか?
どのようにインポートするのか教えていただけませんか?
複数のテーブルに一度にインポートはできません。
> リレーション用伝票ID
これはエクセルにはないんですよね?
どのように入力を?
Offline
それにつきましても
本来はファイルメーカーのポータルなどで入力するので対応したID自動で付与されていくのですが
インポートのときはどうしたらよいのかまったくわかりません
書いてある通りだとすると、伝票テーブルをなくせばいいだけに見えます。(日付も詳細テーブルに入れる)
エクセルにない伝票IDはデータとして不要なものということになるので。(同じ日付を何度も入力しないですむという効果しか見えない)
正規化しない、ということですね
たしかにこの場合は日付の重複が消えるだけですね
一般的には伝票と詳細でわかれているものだと思いますが
(伝票テーブルに取引先や請求日などがある場合)
そのときはどのようにインポートするのか教えていただけますか?
今、エクセルが持っているデータは、明細のリストですね。それを伝票にまとめているのがどのデータか、を考えれば、それが答えでしょう。(複数データの組み合わせでもいいです)それが伝票テーブルで重複しないようにインポートすればいいでしょう。
Offline
すみません
知識が乏しくうまく理解できませんでした
エクセルは明細のデータだけ、ということになりますね
そもそも一つのエクセルファイルから複数のテーブルに一括インポートはできないということなんでしょうか?
インポートを指定したテーブル以外はグレーアウトしています
複数のテーブルに一度にインポートはできません。
#2で既に書かれていますよ。
[レコードのインポート]の1回の操作や[レコードのインポート]のスクリプトステップひとつだけで
複数のテーブルにインポートを行うことはできません。
インポート対象のテーブルの数だけ操作またはスクリプトステップを実行します。
同じファイルから複数のテーブルに順番にインポートするスクリプトは作れるので「一括処理」はできます。
伝票と明細は照合フィールドでリレーションしていますよね?→伝票ID、リレーション用伝票IDなど。
エクセルからインポートするときはそれに該当する列を各テーブルの照合フィールドにインポートすれば伝票と明細が紐付いた状態になります。
エクセル側にそういった列がないならどの行がどの伝票の明細なのか判別できないので
そのままでは伝票と明細にインポートしても伝票と伝票に紐付かない明細になりますよ。
Offline
> インポートを指定したテーブル以外はグレーアウトしています
この意味がよくわかりませんが
例えば、日付 得意先 商品 数量 単価 金額 が並んでいる表があったとします。
1得意先には1日1納入しか無い、という前提があれば、日付 得意先の組み合わせで1伝票となります。ですから伝票テーブルにはその組み合わせが重複しないように、日付得意先をインポートします。その日付得意先が、明細テーブルへのリレーションキーになります。
この2個のテーブルへのインポートは同じではないので、それぞれでインポートします。
Offline
ファイルメーカーでの最期の伝票IDをみてエクセルにも伝票IDをつくる
日付が変わるたびにプラス1するようにすると
伝票IDがエクセルにもつくられて、それを各テーブルにインポートすればファイルメーカーでは
一対多のかたちにできる、ということになりますか?
「伝票」と「明細」の双方をエクセルからインポートしたいのか
「伝票」は FileMaker で作って「明細」だけエクセルからインポートしたいのかどっちなんですか?
また、エクセルには複数の伝票の明細が含まれているのでしょうか?
エクセルに複数の伝票の明細が含まれている前提なら
#1 に書かれた情報からはふたつのテーブルを紐付ける要素は「伝票ID」「リレーション用伝票ID」のみなので
エクセルに「伝票ID」がなければインポートしても「伝票」「明細」は紐付けられません。
エクセルに「伝票ID」がないならShinさんが書かれているように
「得意先」「日付」の複合キー(双方が一致したらリレーション成立)のような組み合わせが必要です。
質問者さんは「リレーション」がどういうものか理解されていますか?
そもそもエクセルのデータはどのような(どのように作られる)データなのでしょうか?
他システムから出力したデータを FileMaker で管理するためにインポートするというのは分かりますが
エクセルでも伝票・明細を入力していて FileMaker に取り込んでいるなら運用を見直されたほうがよいかもしれません。
Last edited by Moz (2022-05-17 07:50:16)
Offline
> 伝票IDがエクセルにもつくられて、
それなりのプラグインなどを使って Excel ファイルを編集すれば可能ですが、実運用にはあまり意味はないでしょう。上で書いているように、レコードを正規化するキーを使うのが常套手段なのでは。
Offline
皆さんの疑問は、
インポートするエクセルのデータは、
1伝票に複数の詳細があるのか?
あるとすると、それを表示するものがあるのか?
です。
これが分からないと前に進めません。
Offline
>(伝票テーブルに取引先や請求日などがある場合)
で
>エクセルは明細のデータだけ、ということになりますね
だったら、データ自体が不足していて、伝票IDだけExcelに追加してもインポートしようがない(伝票テーブルはFM側で入力が必要)ということになりますが...
わかりにくい質問でご迷惑をおかけします
普段はファイルメーカーで1対多で入力しています
別ソフトの売上データがありましてそれがcsvかエクセル形式では出力されます
その別ソフトの売上データをファイルメーカーに取り込みたいです
正規化の観点(今後日付だけでなく情報が増えるかもしれない)などから
1対多の状態にしていおきたくて
エクセルでは
日付 商品ID 個数
となっているものをリレーションしてインポートする方法がわかりません
一般的なデータベースは1対多になっているのが多いと思います
そして、外部ソフトからのインポートもあることだと思います
なので、一つのエクセルを1対多に振り分けながら
インポートする当たり前の手法があるのか、と思い質問させてもらいました
FileMaker 側に「伝票」「明細」があり、
「伝票」のレイアウトで「明細」をポータルに追加するような入力を行っているのですかね。
エクセルからのインポートでそれを行いたい(同じリレーション構造でインポートしたい)のですよね?
で、「一対多に振り分けながら」と書いてあるので複数の伝票の明細が含まれているのでしょう。
上で書いたことと重複しますが、エクセルの中に伝票を区別する情報が含まれていないのなら
「一対多に振り分けながら」インポートすることはできません。
1,2,3 行目が A の伝票、 4,5行目が B の伝票、6行目が C の伝票だとして、どうやってそれが異なる伝票の明細と判別するのですか?
→仮に日付毎に1伝票ならば可能かも知れませんがインポートだけでなく追加の処理を書く必要があります。
Offline
伝え方が下手でお手数かけます
Mozさんの仰るお通りのことがやりたかったです
エクセルの段階で処理が必要ということですね
日付毎に1伝票ですのでShinさんがおっしゃるように日付でリレーションすればよいのかもしれませんが
その場合、そもそも伝票IDのようなオートナンバーのフィールドがいらないということになるのでしょうか?
> 日付毎に1伝票
これはエクセルデータに限って
ということ?
FMの詳細テーブルでも同じ?
エクセルに限るのなら、伝票IDが必要になりますが、
詳細テーブルでも、ならば、日付がその代わりになりますよね。
Offline
1日付1伝票でしたら、日付そのものがキーになりますので、伝票番号というものは付加的なものになるでしょう。
伝票テーブルの日付を常時ユニークの設定にしておき、明細側と別のリレーションを張っておきます。もし、伝票番号も使いたいのでしたら、明細側の伝票番号を、日付でのリレーションでルックアップしておきます。
その構造で、Excel のファイルから日付を伝票テーブルへインポートします。次に明細テーブルへインポートすればいいでしょう。
Offline
> 日付毎に1伝票です
最初にこの情報がないから皆さんが様々な推察をしていたわけで。
で、次にチポさんがこの「日付毎に1伝票です」がエクセルに限ったことか否かと聞いてるのです。
リレーションをどの程度理解されているか分かりませんが、
オートナンバーであるかは重要ではなく、伝票IDなり日付なりの伝票を一意(ユニーク)にする情報が必要なわけです。
一意でないなら多対多になってしまうのですから。
日付でリレーションすることに問題がないなら、伝票IDの代わりに日付に統一することもできますし、
エクセルから明細に取り込んだあとで伝票に日付毎に1レコードを作成して、
自動付番で振られた伝票IDを日付毎の一時的なリレーションで明細に振ることで伝票IDに統一することもできます。
FileMaker で作るものは伝票IDでエクセルからインポートするものは日付のままにするってこともできますがあまりおすすめはしません。
Offline
便乗で質問します
例えばタイムカードのデータなどはcsvで出力されますよね
それをデータベースにインポートするとき、一般的にはどのようにインポートするのでしょうか?
多分一般的な勤怠管理システムだと、日付やなんらかの項目と、出退勤時間などは別テーブルになっていますよね?
勤怠管理でなくともエクセルや別システムから吐き出される売上データなど
元データに、1対多にするためのデータベースの照合キーがない場合はよくありますよね
元の質問が解決していないので別スレッドで質問されることをおすすめします。
また、質問の際はバージョンやOSなどの環境情報を書きましょう。
Offline
Pages: 1
[ Generated in 0.008 seconds, 8 queries executed - Memory usage: 570.23 KiB (Peak: 590.77 KiB) ]