みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
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更新→個数管理テーブルの関連レコードを削除→レコードを洗い替える形にするか、で出来ないでしょうか?
上手く説明できず申し訳ないのですが、よろしくお願いいたします。
テーブル1:単価Mが存在している意味があるのですか。あるとすれば、そのレコード単位で意味があるのですか。
今の運用の都合でその動きが必要になるのでしたら、3回のインポート作業を行うといいでしょう。更新された場合も、更新インポートを行うといいでしょうね、
https://www.dropbox.com/s/npa4oih0fvxeh … 2.zip?dl=0
Last edited by Shin (2023-09-29 08:55:27)
Offline
>テーブル1:単価Mが存在している意味があるのですか。あるとすれば、そのレコード単位で意味があるのですか。
単価等テーブル1:単価Mを参照して単価等を取得している箇所と、テーブル2:を参照して単価等を取得している箇所があり、
どちらかへの統一を行うのが厳しいため、せめて共通している部分の値を統一させたい というのが今回の目的です。
まぁ今までバラバラ保存されてた時点で何を今更って感じではあるのですが……
すいません、3回のインポートとなっておりますが、
個数管理のAαに対して、単価MのAα商品個数 Aα商品単価を更新インポート
同様にAβ、Bγ……という形
という事でしょうか?
例題は3回ですが、実際は種別ごとにそれぞれインポートをするといったような
テーブル1の個数と単価は書かれた以上にもっとあるんですよね?
この1レコーがどのようなものなのか分かりませんが、
テーブル2が先にあって、テーブル1に応用。
DBとしてはこれが普通の考えでは。。
Offline
チポ様
>テーブル1の個数と単価は書かれた以上にもっとあるんですよね?
個数と単価は15種類ほどありますね。一応他にも利用しているテーブルなので、他の列にも今回の分に関係ない値が設定されています。
2にもその15種類分は含まれています。
>テーブル2が先にあって、テーブル1に応用。DBとしてはこれが普通の考えでは。
作成者ではないため、何故このような構造にしたのかは分からないのですが、仰る通りだと思います。
統一テーブルにする事が厳しいので、せめて共通している部分の値を統一させたいのが今回の質問内容になっております。
Shin様
例をdropboxに上げていただいたようなのですが、自分の環境だと接続できない場所の為、すぐに確認できない状況です。申し訳ございません。
> 統一テーブルにする事が厳しい
テーブル構造の話ではなくて、
運用・入力方法を変えれば、との提案です
Offline
概略を書いておきますが、このスクリプトで個数テーブルにデータが移行できます。テーブル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
Shin様
ご丁寧にありがとうございます。ファイルは今確認出来ないため、概略を確認した上での回答となりますが、
項目名を取得、個数・単価を除き、種別名毎のグループとして値一覧$catを作成(件数$i)、
$iを1つずつ遡りながら、その行の項目名$keyをもとに、テーブルMの個数と単価を設定、
インポート先はテーブルMのあるファイルを選択し、
その個数と単価、種別を更新インポートし、製品種類と商品種類がインポート後に設定される という事でしょうか。
インポート順定義等確認しながら試してみます、ありがとうございます。
遅ればせながら、Shin様のサンプルを元に、目的のものを作成する事ができました。ありがとうございました。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 591.55 KiB (Peak: 608.45 KiB) ]