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

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

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

You are not logged in.

Announcement

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


#1 2016-02-24 15:15:37

じろう
Guest

ポータルの検索

どうしてもやり方が分かりません。何らかのヒントをいただければありがたいです。

windows7 FMP12で運用しています。

テーブルが2つあります。
主テーブル
id、内容1、内容2、内容3 ・・・ のフィールドで出来ています。
項目テーブル
id,key,value の3つのフィールドで出来ています。
主テーブルと項目テーブルはidを使ってリレーションが組んであります。
項目テーブルの内容は
id   001   ,  001     ,001
key  chr001 , chr002 ,chr003
value いちご , みかん , りんご
と言う形でデータを持っています。
項目テーブルには同じidに対して300ヶほどの値が(chr001 ~chr300 まで)が入っています。
主テーブルの内容1にchr001、内容2にchr002、内容3にchr003と順番に値を入力したいのですが、内容1、2,3を計算フィールドにして、
計算式の中でchr001、chr002・・を指定して、値を参照するにはどうすればいいのでしょうか?

グローバルフィールドを使って、リレーションを組めば参照できるとは思いますが、リレーションの数があまりに多くなるので、実用的で無いと思っています。

#2 2016-02-24 15:29:14

Moz
Member

Re: ポータルの検索

何がやりたいのかイマイチ分かりません。

「id」フィールドでリレーションが成立する項目テーブルのが
"chr003" 以降も "chr004" "chr005" と続く場合、内容4、内容5・・・に "chr004" "chr005" と入れたいのですか?
これではせっかくテーブルを分けている意味がありません。

Offline

#3 2016-02-24 15:53:20

チポ
Member

Re: ポータルの検索

項目テーブルの内容は
id   001   ,  001     ,001
key  chr001 , chr002 ,chr003
value いちご , みかん , りんご

これは、
以下1行を1レコードとして
   id       key         value
  001   chr001    いちご
  001   chr002    みかん
  001   chr003    いちご
こういうことですか?

そうであれば、
主テーブルで内容フィールドでは無く、
ポータルで表示ができます。

ではないのかな?
表題もなんか違うようで気になるし。。

Offline

#4 2016-02-24 18:06:31

Shin
Member

Re: ポータルの検索

idでリレーションを張っておいて、List() 関数で chr001... を取り込んでおき、GetValue() で分離する式にする、という方法で良いのかも。
具体的な必要性がわかりませんがね。

Offline

#5 2016-02-24 19:35:28

じろう
Guest

Re: ポータルの検索

皆さんありがとうございます。
元のデータはORACLEのデータなのです。
そのデータを、ファイルメーカーに1日数回ずつインポートして使おうとしています。
オラクルのテーブル構造がそんな風になっています。
オラクルのテーブル
主テーブル
ID , 倉庫名
001 , 大阪
002 , 名古屋

項目テーブル
   id       key         value
  001   chr001    いちご
  001   chr002    みかん
  001   chr003    りんご

  002   chr001    レモン
  002   chr003    ブドウ
  002   chr005    すいか

このテーブルを
ID ,   倉庫名  , CHR1 , CHR2  , CHR3 , CHR4 ,CHR5 
001 , 大阪     , いちご, みかん , りんご
002 , 名古屋  , レモン, ""       , ブドウ , ""      ,すいか
こういう表に変換したいのです。
エクセルでコピーするときに行列を入れ替えできますが、それと同じ事をしたいのです。
クロス集計というのかもしれません。

CHR1,CHR2の項目が300項目くらい有り、テーブルもいくつかに分かれています。
なので、主テーブルのCHR1を計算フィールドにして、データを引っ張れないかと思った次第です。

GETVALUE( LIST( VALUE), 2) とかすれば良さそうなのですが、項目テーブルのCHR1,CHR2が歯抜けになっているので、CHR10は必ずしも10番目の項目となりません。

  chr001    いちご
  chr002    みかん
  chr003    りんご
リレーションを使って、このリストを取得して、その中からchr003を検索するようなことをしたいと考えています。

#6 2016-02-24 19:46:58

Hiro
Member

Re: ポータルの検索

質問内容は予定カレンダーの考え方とほぼ同じなので、カレンダー関連の過去ログを参考にされては?
繰り返しフィールドのルックアップ特性を利用する手法が簡便かと。

Offline

#7 2016-03-01 08:47:38

じろう
Guest

Re: ポータルの検索

皆さまありがとうございます。
結局ExecuteSQLで逃げました。

ExecuteSQL(
  "SELECT b.\"KOUMOKU_VALUE\"
   FROM \"FM.DATA_HEADER\" AS a INNER JOIN \"FM.DATA_CHR\" AS b ON a.\"ID_CODE\" = b.\"ID_CODE\" 
   WHERE  b.\"KOUMOKU_KEY\" = 'CHR001' AND a.\"SINSEI_CODE\"=?";
   "";"" ;
   SINSEI_CODE)

”繰り返しフィールド”はやり方が分かりませんでした。
ExecuteSQLは更新されるタイミングがよく分からないので、リレーションを上手く使ったやり方を、もう少し調べてみます。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 519.34 KiB (Peak: 523.88 KiB) ]