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

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

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

You are not logged in.

Announcement

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


#1 2023-09-28 20:15:55

Feris
Guest

横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

Windows10/FM20です

現在以下のような構造をしたテーブルがあり、

テーブル1:単価M
Aα商品個数 Aα商品単価  Aβ商品個数 Aβ単価 Bγ個数 Bγ単価   ……
10      1000          10         2000      100      20   
20            497            50         390      200      9.8
30            330                                      300      6.5
                                                           400      4.8
(この場合、4レコード目のBγ以外は空白)

テーブル2:個数管理
製品種類  個数  単価  商品種類 種別
α      10        1000   A             Aα
α            20        497       A             Aα
α            30        330       A             Aα
β      10        2000   A             Aβ
β            50        390       A             Aβ
γ      100       20        B             Bγ
γ      200       9.8       B             Bγ
γ            300       6.5       B             Bγ
γ            400       4.8       B             Bγ


ここで、単価Mで値を変更した場合、
個数管理テーブルにその値を反映させることは出来ないでしょうか?

単価Mの4レコード目に
Aα商品個数 Aα商品単価
40      245       
を追加した場合、
個数管理に1レコード追加されるイメージです。
製品種類  個数  単価  商品種類 種別
α            40        245       A             Aα

ただ、リレーション出来る項目が無く、なんとか種別名(Aα)で設定できないかと考えている所です。
それか、単価M更新→個数管理テーブルの関連レコードを削除→レコードを洗い替える形にするか、で出来ないでしょうか?


上手く説明できず申し訳ないのですが、よろしくお願いいたします。

#2 2023-09-28 20:32:01

Shin
Member

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

テーブル1:単価Mが存在している意味があるのですか。あるとすれば、そのレコード単位で意味があるのですか。

今の運用の都合でその動きが必要になるのでしたら、3回のインポート作業を行うといいでしょう。更新された場合も、更新インポートを行うといいでしょうね、
https://www.dropbox.com/s/npa4oih0fvxeh … 2.zip?dl=0

Last edited by Shin (2023-09-29 08:55:27)

Offline

#3 2023-09-28 21:03:21

Feris
Guest

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

>テーブル1:単価Mが存在している意味があるのですか。あるとすれば、そのレコード単位で意味があるのですか。

単価等テーブル1:単価Mを参照して単価等を取得している箇所と、テーブル2:を参照して単価等を取得している箇所があり、
どちらかへの統一を行うのが厳しいため、せめて共通している部分の値を統一させたい というのが今回の目的です。
まぁ今までバラバラ保存されてた時点で何を今更って感じではあるのですが……

すいません、3回のインポートとなっておりますが、
個数管理のAαに対して、単価MのAα商品個数 Aα商品単価を更新インポート
同様にAβ、Bγ……という形
という事でしょうか?

例題は3回ですが、実際は種別ごとにそれぞれインポートをするといったような

#4 2023-09-29 09:46:28

チポ
Member

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

テーブル1の個数と単価は書かれた以上にもっとあるんですよね?

この1レコーがどのようなものなのか分かりませんが、
テーブル2が先にあって、テーブル1に応用。
DBとしてはこれが普通の考えでは。。

Offline

#5 2023-09-29 10:50:38

Feris
Guest

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

チポ様
>テーブル1の個数と単価は書かれた以上にもっとあるんですよね?
個数と単価は15種類ほどありますね。一応他にも利用しているテーブルなので、他の列にも今回の分に関係ない値が設定されています。
2にもその15種類分は含まれています。

>テーブル2が先にあって、テーブル1に応用。DBとしてはこれが普通の考えでは。
作成者ではないため、何故このような構造にしたのかは分からないのですが、仰る通りだと思います。
統一テーブルにする事が厳しいので、せめて共通している部分の値を統一させたいのが今回の質問内容になっております。

Shin様
例をdropboxに上げていただいたようなのですが、自分の環境だと接続できない場所の為、すぐに確認できない状況です。申し訳ございません。

#6 2023-09-29 11:19:56

チポ
Member

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

> 統一テーブルにする事が厳しい
テーブル構造の話ではなくて、
運用・入力方法を変えれば、との提案です

Offline

#7 2023-09-29 11:32:21

Shin
Member

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

概略を書いておきますが、このスクリプトで個数テーブルにデータが移行できます。テーブルMでは、○○商品個数、○○単価 というフィールドが並んでいるとします。スクリプトは、インポートを15回行って種別を全置換してもいいです。

テーブルM (追加分のみ)
種別       計算 (テキスト)  非保存, = $key
個数       計算 (数字) 非保存, = GetField ( $key & "商品個数" )
単価       計算 (数字) 非保存, = GetField ( $key & "商品単価" )

テーブル個数
製品種類 計算 (テキスト) = Right ( 種別 ; 1 )
商品種類 計算 (テキスト) = Left ( 種別 ; 1 )
個数       数字 索引設定済, ユーザによる入力値の制限の無視を許可, 常に検証する, 評価に使用する計算式: = Self>0
単価       数字 索引設定済, ユーザによる入力値の制限の無視を許可, 常に検証する, 評価に使用する計算式: = Self>0
種別       テキスト


# スクリプト

レイアウト切り替え [ 「レイアウト 2」 (テーブルM) ; アニメーション: なし ]
全レコードを表示
変数を設定 [ $cat ; 値: Let ( [     FN = FieldNames ( Get ( ファイル名 )  ; "レイアウト 2") ;     FN = Substitute ( FN ;[ "テーブルM::" ; "" ];[ "商品個数" ; "" ];[ "商品単価" ; "" ] ) ;     FN = UniqueValues ( FN ) ] ;     FN ) //ValueListItems ( Get ( ファイル名 ) ; "種別一覧" )  ]
変数を設定 [ $i ; 値: ValueCount ( $cat ) ]
レイアウト切り替え [ 「テーブル個数」 (テーブル個数) ; アニメーション: なし ]
エラー処理 [ オン ]
Loop
    変数を設定 [ $key ; 値: GetValue ( $cat ; $i ) ]
    全レコードを表示
    レコードのインポート [ ダイアログあり: オフ ; テーブル: テーブル個数 ; 「fm-aid14746.fmp12」 ; 更新; シフト JIS ]
    // 対象外のみを表示
    // 対象レコードの絞り込み [ 記憶する ]
    // If [ Get ( 対象レコード数 ) ]
        // 対象レコード削除 [ ダイアログあり: オフ ]
    // End If
    Exit Loop If [ Let (     $i = $i - 1 ;     $i = 0 ) ]
End Loop
全レコードを表示

Last edited by Shin (2023-09-29 11:34:34)

Offline

#8 2023-09-29 15:27:02

Feris
Guest

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

Shin様

ご丁寧にありがとうございます。ファイルは今確認出来ないため、概略を確認した上での回答となりますが、

項目名を取得、個数・単価を除き、種別名毎のグループとして値一覧$catを作成(件数$i)、
$iを1つずつ遡りながら、その行の項目名$keyをもとに、テーブルMの個数と単価を設定、
インポート先はテーブルMのあるファイルを選択し、
その個数と単価、種別を更新インポートし、製品種類と商品種類がインポート後に設定される という事でしょうか。

インポート順定義等確認しながら試してみます、ありがとうございます。

#9 2023-10-06 09:38:13

Feris
Guest

Re: 横持ちのテーブルの更新値を、縦持ちのテーブルに反映させたい

遅ればせながら、Shin様のサンプルを元に、目的のものを作成する事ができました。ありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 595.04 KiB (Peak: 611.95 KiB) ]