HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■14889 / 親記事)  表引きについて
  
□投稿者/ キリマンジャロ -(2025/03/21(Fri) 10:59:19)
    WIN11、桐10S使用です
    いつもお世話になっております。昨日の今日で申し訳ありませんがよろしくお願いします。
    T受注(トランズ) と M取引先(マスター) の二つの表があります。

    T受注にデータを入力する際に、取引先コードを使い M取引先に入っている取引先名の表引きを行っています。

    ここで問題がありまして、先方の取引先名が変わり、それにより取引先(マスター)の取引先名のデータを変えたことにより、T受注(トランズ)の表引きしていた取引先名のデータが全て新しいデータになってしまいました。

    やりたい事は、これから入力するデータは新しい名前で過去のデータは過去の名前にしておきたいです。


    「挿入初期値式」と「編集初期値式」がカギになると感じ調べた所、同じような方が質問されていました。
    http://www.habata.net/kiri/kbbs/kakov9/22438.htm

    編集初期値式が一番近いのですが、いちいち訂正していかなければならないのがネックになっていて、挿入初期値式は入力しても表示されません。

    お忙しいところ恐縮ですがよろしくお願いします。(__)

引用返信 [メール受信/OFF] 削除キー/
■14890 / ResNo.1)  Re[1]: 表引きについて
□投稿者/ ONnoji -(2025/03/21(Fri) 12:35:00)
    2025/03/21(Fri) 21:50:31 編集(投稿者)

    > WIN11、桐10S使用です
    > T受注(トランズ) と M取引先(マスター) の二つの表があります。
    > T受注にデータを入力する際に、取引先コードを使い M取引先に入っている取引先名の表引きを行っています。
    > ここで問題がありまして、先方の取引先名が変わり、それにより取引先(マスター)の取引先名のデータを変えたことにより、
    > T受注(トランズ)の表引きしていた取引先名のデータが全て新しいデータになってしまいました。
    > やりたい事は、これから入力するデータは新しい名前で過去のデータは過去の名前にしておきたいです。

    項目[取引先名]に #表引き()関数 を指定したのでしょうね。
    項目計算式にしてしまうと、再計算が発生した時に、すべて書き換わってしまいますね。
    これ!、トホホです。

    > 「挿入初期値式」と「編集初期値式」がカギになると感じ調べた所、同じような方が質問されていました。
    > 編集初期値式が一番近いのですが、いちいち訂正していかなければならないのがネックになっていて、挿入初期値式は入力しても表示されません。

    残念ながら、「編集初期値式」でも「挿入初期値式」でもありませんよ。

    結論から申し上げると、[表定義]→[項目属性]→[表引き]の設定では[表引き]画面を出さずに値が複写出来ます。

    具体的には、設定した項目にキャレット(I型のカーソル)が出現した時点で値が複写されています。

    ただし、[検索項目]に重複禁止の索引が作られていなければなりません。←これが条件です。

    [表定義]→[項目属性]→[表引き]の設定は項目計算式ではありませんから、再計算されて書き換わってしまう事もありません。
                          ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
    ひとまず以下の[桐 - ヘルプ]をじっくり読んでください。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    [桐 - ヘルプ]→[表定義]→[項目属性]→[表引き]
    https://www.kthree.co.jp/kihelp/index.html?page=tbl/tfProp5&type=html

    ▽ [表引き表]
     参照する表を指定します。表ファイル名の一覧から選択入力する場合はをクリックします。

    ▽[使用索引]
     参照する表にアクセスするときに使用する索引を選びます。[比較項目]を指定している場合は、[検索項目]が整列項目になっている索引を選びます。
     重複禁止索引を選択した場合、[比較項目]と完全に一致するデータがあったときは[表引き]画面を出さずに値が代入されます。
     ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
     ↑これ重要!

     ただし、完全一致するデータが代入されているときにをクリックすると、[表引き]画面が表示されます。
     表引き表が絞り込み状態または共有で開かれているときは、索引を使用しません。

    ▽[比較項目]
     表引き表と比較する項目を選びます。比較する項目はふたつまで指定できます。表引き条件を設定する項目を指定してもかまいません。表引き表を検索しない場合は指定しません。

    ▽[検索項目]
     表引き表の検索項目を選びます。検索する項目はふたつまで指定できます。
     この項目をひとつも指定しない場合は、[表引き]画面にすべての項目が表示されます。

    ▽[値項目]
     表引き表から自身の表に転記する項目を選びます。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    具体的に以下の情報をお知らせください。

    1.表:T受注(トランズ) の[比較項目]の項目名とデータ型
    2.表:M取引先(マスター)の[検索項目]の項目名とデータ型
    3.表:M取引先(マスター)の[値項目]の項目名
    4.表:M取引先(マスター)の[検索項目]をキーにした重複禁止の索引が作成済みであるか否か

    ↑これは #表引き関数の引数と同じものなんですけれどね。アハハハ(^^ゞ

    具体的に設定方法をご案内します。(^^ok

引用返信 [メール受信/OFF] 削除キー/
■14894 / ResNo.2)  Re[2]: 表引きについて
□投稿者/ キリマンジャロ -(2025/03/21(Fri) 23:17:21)
    ONnojiさんいつもありがとうございます。

    >具体的に以下の情報をお知らせください。

    >1.表:T受注(トランズ) の[比較項目]の項目名とデータ>型
    >2.表:M取引先(マスター)の[検索項目]の項目名とデータ>型
    >3.表:M取引先(マスター)の[値項目]の項目名
    >4.表:M取引先(マスター)の[検索項目]をキーにした重複>禁止の索引が作成済みであるか否か

    的確なアドバイスでいつも感謝しております!
    月曜日にパソコンで確認することが出来ますので、午前中には連絡をしたいと思いますのでよろしくお願いいたします(^^)
引用返信 [メール受信/OFF] 削除キー/
■14895 / ResNo.3)  Re[1]: 表引きについて
□投稿者/ くおんたむ -(2025/03/22(Sat) 00:53:07)
    どうも、キリマンジャロさん

    > T受注にデータを入力する際に、取引先コードを使い M取引先に入っている取引先名の表引きを行っています。
    >
    > ここで問題がありまして、先方の取引先名が変わり、それにより取引先(マスター)の取引先名のデータを変えたことにより、T受注(トランズ)の表引きしていた取引先名のデータが全て新しいデータになってしまいました。
    >
    > やりたい事は、これから入力するデータは新しい名前で過去のデータは過去の名前にしておきたいです。

    おそらくですが、キーとしているのは取引先コードをキーにしていると思います。
    でしたら、取引先をキーにせず、ユニークなコードをキーにする事でできると思います。
    (ユニーク玖コードは完全に一致しないコードです)

    例 ID 取引先CD 取引先名
      1 0001  あ
    2 0001  あい
    3 0001  あう

    でしたら、IDをキーにして表引きすれば、同じ取引先コードでも別々のコードになります。
    ここではIDを例にしましたが、IDをコードにする事でも可能です。

    例 ID  取引先CD 取引先名
      0001-1 0001  あ
    0001-2 0001  あい
    0001-3 0001  あう

    課題としては、間違って古いkコードを使用されてしまった場合のチェックができない面です。
    イベント処理を組み入れている場合はチェックはできますが、表ファイル単体ではチェック用の
    項目を追加して検証する形になると思います。

    私がイベント処理を組み入れる前は、チェック用の日付とフラグで判断していました。
    (取引先開始日、取引先終了日を表引きで引っ張って、その間になるかを取引日で判断して、エラーに
     なる場合に、フラグで1を返すといった形)

引用返信 [メール受信/OFF] 削除キー/
■14896 / ResNo.4)  Re[2]: 表引きについて
□投稿者/ キリマンジャロ -(2025/03/24(Mon) 08:54:06)
    おはようございます。返答させていただきます。

    > 1.表:T受注(トランズ) の[比較項目]の項目名とデータ型
    > 2.表:M取引先(マスター)の[検索項目]の項目名とデータ型
    > 3.表:M取引先(マスター)の[値項目]の項目名
    > 4.表:M取引先(マスター)の[検索項目]をキーにした重複禁止の索引が作成済みあるか否か

    1.取コード 文字列
    2.取コード 文字列
    3.取引先名
    4.M取引先牽引を作成しました。

    具体的な設定方法教えていただけたら幸いです。よろしくお願いします。(._.)


引用返信 [メール受信/OFF] 削除キー/
■14898 / ResNo.5)  Re[2]: 表引きについて
□投稿者/ キリマンジャロ -(2025/03/24(Mon) 09:11:43)
    > おそらくですが、キーとしているのは取引先コードをキーにしていると思います。
    > でしたら、取引先をキーにせず、ユニークなコードをキーにする事でできると思います。
    くおんたむさん
    ご回答ありがとうございます。
    確かにもう一つキーを作ることでユニークなコードを作ることができるな!と今頭がたどり着きました。

    > 課題としては、間違って古いkコードを使用されてしまった場合のチェックができない面です。
    > イベント処理を組み入れている場合はチェックはできますが、表ファイル単体ではチェック用の
    > 項目を追加して検証する形になると思います。
    チェックがないと確かに不安だなと感じました。

    > 課題としては、間違って古いkコードを使用されてしまった場合のチェックができない面です。
    > イベント処理を組み入れている場合はチェックはできますが、表ファイル単体ではチェック用の
    > 項目を追加して検証する形になると思います。
    チェックがないと確かに不安だなと感じました。
    恥ずかしながら私自身、イベント処理をやったことがなくその領域はチンプンカンプンです。今後勉強したいと考えておりますが、Webだけの学習だと勝手にですがハードルが高いように感じてしまいまして(-"-)
引用返信 [メール受信/OFF] 削除キー/
■14899 / ResNo.6)  Re[1]: 表引きについて
□投稿者/ ONnoji -(2025/03/24(Mon) 10:41:01)
    2025/03/24(Mon) 16:53:22 編集(投稿者)

    操作の説明すると長くなるので省略いたします。

    添付ファイルを解凍して試してください。

    なお、test_M取引先(マスター).tbx には[取コード]は予め3種類登録してあります。

    取コード 取引先名 登録日
    1001  A社   2025-03-24
    2001  B社   2025-03-24
    3001  C社   2025-03-24

    表引き条件や重複禁止索引の作り方は[桐 - ヘルプ]を参照してください。

    それでは以下を参考にして試してください。グッドラック (@^^)/~~~

     ◇ ◇ ◇ ◇ ◇ ◇

    ■ test_T受注(トランズ).TBX

    項目番号 項目名  データ型 表引き条件
    1     受注名  文字列 
    2     取コード  文字列 
    3     取引先名 文字列  [取コード],"test_M取引先(マスター).tbx","M取引先牽引",[取コード],[取引先名]
    4     登録日  文字列 
       
    条件名が見つかりません  

    ■ test_M取引先(マスター).tbx

    項目番号 項目名  データ型 挿入初期値式
    1     取コード  文字列 
    2     取引先名 文字列 
    3     郵便番号 文字列 
    4     住所   文字列 
    5     登録日  文字列  #日付( #DATE, 1 )
       
    索引 M取引先牽引    ← これは[取コード]昇順・重複禁止で作成

    p.s.

    余談ながら・・・

    取引先名がM&A(エムアンドエー、Mergers〈合併〉and Acquisitions〈買収〉)などで変更になっても、名称が変更になるだけです。

    名称が変わっても、実体としての取引先は同じです。
    ・・・・・・・・・・・・・・・・・・・・・・・

    だから、

    例 record_ID 取引先CD 取引先名
      0001-1   0001   あ
      0001-2   0001   あい
      0001-3   0001   あう

    ↑こういうのは実体が1つなのに複数のレコードが存在して冗長なので感心出来ません。
           ・・・・・・・・・・・・・・・・・・・・・・
    こうするよりも、表:M取引先 に[社名変更の履歴メモ]といった項目を追加した方が良いのではありませんかね。

    表:M取引先 を保守するアプリケーション(マスター・メンテナンス)で、社名変更の場合には、旧レコードを別の表へコピーしておけば、良いと思いますけれどね。アハハハ

    そうすれば、表:M取引先 の変更の履歴が取れますので、一目瞭然です。

    もちろん、アプリケーションを作らずに手作業で行ってもOK。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    たとえば、次のような感じ・・・

     ■取引先マスタの変更履歴.tbx

     変更日   取引先CD 取引先名
     yyyy.mm.dd 0001   C社
     yyyy.mm.dd 0001   AB社
     yyyy.mm.dd 0001   A社

    ↑私( ONnoji )は、これを実際に行っていましたけどね。

    実際には、社名変更よりも、住所の移転の方が多かったですけれどね。アハハハha

    なお、添付ファイルは数日を目途に削除しますので、ダウンロードはお早めに願います。

引用返信 [メール受信/OFF] 削除キー/
■14900 / ResNo.7)  Re[2]: 表引きについて
□投稿者/ キリマンジャロ -(2025/03/24(Mon) 17:42:08)
    ONnojiさんありがとうございます。

    ファイルをダウンロードさせて頂き拝見させていただきました。
    それをもとに作成したのですが、ここで一つ問題がありまして、T受注(トランズ)の取コードのデータを入れるとき、併合の置き換え挿入でデータをもってきていて、そうなると取引先名が入っていません。

    併合する場合は自動では入ってこないのでしょうか。

引用返信 [メール受信/OFF] 削除キー/
■14901 / ResNo.8)  Re[3]: 表引きについて
□投稿者/ ONnoji -(2025/03/24(Mon) 18:50:54)
    2025/03/25(Tue) 13:26:25 編集(投稿者)

    > ファイルをダウンロードさせて頂き拝見させていただきました。
    > それをもとに作成したのですが、ここで一つ問題がありまして、
    > T受注(トランズ)の取コードのデータを入れるとき、併合の置き換え挿入でデータをもってきていて、そうなると取引先名が入っていません。
    > 併合する場合は自動では入ってこないのでしょうか。

    実際に確かめてみましたが、併合の場合には入ってきませんね。

    [表引き条件]というのは、手入力の場合に実行されます。

    しかし、併合元表に項目[取コード] が有っても、[併合:置換挿入]では[表引き条件]は実行されませんね。

    これは仕方ないですね。ガハハハハ。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    当初の質問を読んで、私は( ONnoji )は手入力しているのだと考えていたのです。

    しかし、例えば

    受注テキストファイル → [読み込み:テキスト]→ 併合元の表 →[併合:置換挿入]→ T受注(トランズ).TBX

    という作業の流れなんですねぇ〜。

    それならば、もうひと手間かければOKですよ。

    すなわち、新規受注データを併合すると、T受注(トランズ).TBX の項目[取引先名]は空欄ですね。

    そこで、

    1.[取引先名]の値が #未定義 のレコード(行)を絞り込み

    2.[置換:項目置換]で #表引き( [取コード], =, "M取引先(マスター).tbx", [取コード], [取引先名] ) で実行

    3.絞り込みを解除

    でOKでしょ。

    おそらく、[併合:置換挿入]は一括処理で行っているのでしょう???。

    だったら、[併合:置換挿入]の後に、

    [絞り込み]  コマンド
    [置換]    コマンド
    [絞り込み解除]コマンド

    を付け足せばOKでしょ。

    コマンドの具体的な書き方は、[桐 - ヘルプ]を参照してください。

    なお、以下の(p.p.s.)に別法のヒントがあります。

    p.s.

    最初の質問において、項目計算式を使用していることは判りましたが、

    まさか、[併合:置換挿入]でデータを追加しているとは思いませんでした。

    まさしく「そういうのは、早く言ってよぉ〜〜〜〜〜〜(T_T)」です。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    今後質問される場合には、NG(駄目)な結果の他に、それに至る手順や経過も書いてください。(−−〆)

    そうでないと、二度手間・三度手間になりかねませんから。(ーー;)--------------> ※遠い目線

    p.p.s.

    便利な #表引き( ) 関数ですが、大事な表(.tbx)の項目計算式で使うのは避けるのが無難です。

    ただし、例外もあります。 ※再計算しても「ギャッ」と言わないで済む表ならばという意味での例外です
        ・・・・・・・
    受注テキストファイル → [読み込み:テキスト]→ 併合元の表
                              ↑
          この表に項目名[取引先名]を追加して、項目計算式に#表引き( ) 関数を使うのはOKです。

    何故ならば、毎回新しい受注レコード(行)を作成しているのですから、再計算の弊害はありません。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    このように、作業用の表(.tbx)や、一時的な表(.tbx)では、項目計算式で#表引き( ) 関数を使うのはOKなんですゾッ。
          ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    それでは、グッドラック (@^^)/~~~
引用返信 [メール受信/OFF] 削除キー/
■14902 / ResNo.9)  Re[4]: 表引きについて
□投稿者/ キリマンジャロ -(2025/03/26(Wed) 08:49:39)
    ONnojiさんありがとうございます。
    また、また質問になってしまいます。

    > 実際に確かめてみましたが、併合の場合には入ってきませんね。
    > これは仕方ないですね。ガハハハハ。
    >
    > しかし、例えば
    > 受注テキストファイル → [読み込み:テキスト]→ 併合元の表 →[併合:置換挿入]→ T受注(トランズ).TBX
    > すなわち、新規受注データを併合すると、T受注(トランズ).TBX の項目[取引先名]は空欄ですね。
    > 1.[取引先名]の値が #未定義 のレコード(行)を絞り込み
    >
    > 2.[置換:項目置換]で #表引き( [取コード], =, "M取引先(マスター).tbx", [取コード], [取引先名] ) で実行
    >
    > 3.絞り込みを解除
    >
    > でOKでしょ。
    >
    > おそらく、[併合:置換挿入]は一括処理で行っているのでしょう???。
    >
    > だったら、[併合:置換挿入]の後に、
    >
    > [絞り込み]  コマンド
    > [置換]    コマンド
    > [絞り込み解除]コマンド
    >
    > を付け足せばOKでしょ。

    丁寧なご返信ありがとうございます。一括処理で行っている表もあるのでぜひ参考にさせて頂きます。
    ただ、今回の表の処理は道具箱を使い併合の置換挿入を行っています。
    なので、置換挿入で取コードが入った時にデータが入って欲しいと考えています。
    システム的に無理なのでしょうか・・・

    また、今回教えて頂いた索引での表引きと「編集初期値式」での表引きは結果が類似していたので使い分けとしてはどの様なやり方か気になりました。('_')
    > 最初の質問において、項目計算式を使用していることは判りましたが、
    >
    > まさか、[併合:置換挿入]でデータを追加しているとは思いませんでした。
    >
    > まさしく「そういうのは、早く言ってよぉ〜〜〜〜〜〜(T_T)」です。
    >
    > 今後質問される場合には、NG(駄目)な結果の他に、それに至る手順や経過も書いてください。(−−〆)
    >
    > そうでないと、二度手間・三度手間になりかねませんから。(ーー;)--------------> ※遠い目線

    確かにそうですね。受注などデータを手入力する所で活用させていただきます。
    次回からきをつけます(^^♪

    > このように、作業用の表(.tbx)や、一時的な表(.tbx)では、項目計算式で#表引き( ) 関数を使うのはOKなんですゾッ。

    肝に銘じます!

引用返信 [メール受信/OFF] 削除キー/

次のレス10件>

スレッド内ページ移動 / << 0 | 1 >>

このスレッドに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -