過去の桐井戸端BBS (桐ver.8)
9129 項目計算式で表引きしたものを入れ直したい UG3 2000/12/26-21:00
項目計算のところに、表引きを入れると再計算出来なくなってしまいますよね。

これを、一応始めは、表引きさせるが、イレギュラーの時は人の手で、入力させたいのですが、何か方法はあるのでしょうか?

つまり、表引き後、再編集したいのですが。(条件選択も使用するため、項目計算で表引きをどうしても利用しなければなりません。)
もしかしたら、#文字列(#表引き())で、再計算できるのですか?
誰か知っていたら、おしえてください。

ちなみに、もし上記のことで対応できるのなら、下記のようにしたいです。
#文字列(#条件選択(#表引き)))

9130 項目計算式ではなく項目初期値式を使って下さい 佐田 守弘 2000/12/26-23:14
記事番号9129へのコメント
UG3さん
最初に質問内容について整理させて頂きます。
質問の主旨は、
「項目の値として原則は表引きで値を入力するが、時にはその値を編集したい場合がある」
と解釈させて頂きます。
●計算項目
項目計算式を設定した項目を計算項目といいます。
それ以外には通常の基本項目と、ふり仮名項目が有ります。
そして、項目計算式を設定してある計算項目は、計算式で値が自動的に決まる仕組みなので、値の編集はできません。
●初期値は表引きで入力し、後で編集を許可するには
この様な場合には、項目初期値の機能を使って下さい。
つまり[編集]のタブの初期値式のボックスに表引き関数を使った計算式を設定します。
初期値式には挿入初期値と編集初期値の2つがありますが、次の様に使い分けます。
挿入初期値:新しい行を追加した時に初期値(この場合には表引き値)が設定されます。
編集初期値:項目値が未定義の時に、その項目の編集を開始した時に初期値が設定されます。
この2つは両方に同じ計算式を設定しても構いません。質問の主旨からは、挿入初期値に設定するのが適切かと思います。
●それ以外には
例えば項目値の編集前イベントを発生させ、表引きする表から目的値を検索します。
そしてその値を初期値として設定します。高度なイベントを使う方にお薦めする方法です。
佐田守弘(KS-00119)

9135 Re:項目計算式ではなく項目初期値式を使って下さい 宮城 2000/12/27-01:37
記事番号9130へのコメント
佐田さん、おそれながら。

私なら編集初期値をお薦めしますが。
挿入初期値は当該レコードを追加・挿入したときに与えた項目しか反映できません。
入力順の問題はありますが、当該項目にカーソルが来たとき編集する編集初期値のほうが使い勝手がよいはずです。

9140 一般論としては編集初期値ですがこの場合には 佐田 守弘 2000/12/27-23:26
記事番号9135へのコメント
宮城さん、おおそれながら。
>私なら編集初期値をお薦めしますが。
仰る通り一般論としては編集初期値式を設定する方が便利です。
もっとも、挿入初期値と編集初期値の両方に設定するのが正解だったりします。

ただし、この質問の主旨ではちょっと違うのではないかと考えて、「挿入初期値で設定するのが良い」と判断させて頂きました。
その根拠ですが、UG3さんが最初に書かれている

>一応始めは、表引きさせるが、イレギュラーの時は人の手で、入力させた
>いのですが、何か方法はあるのでしょうか?
>つまり、表引き後、再編集したいのですが。

です。

質問内容の解釈が難しい質問ですが、私はこの質問の記述を、
@新しいデータ行を追加した時には表引き関数で表引きを行う
Aその後表引きで設定した初期値を編集する場合がある。
そして、
B編集結果の中には、(一般論として)未定義にしておく場合もあり得る
と解読しました。

そこで、これらの状況判断から、UG3さんの質問のケースに限っては、
「編集初期値ではふさわしくなく、挿入初期値で設定するのが適している」
と考えた次第です。

まあ、どちらが適しているのかは、これらの判断材料を元にUG3さんが決められれば良いかと思います。

佐田守弘(KS-00119)
9141 Re:一般論としては編集初期値ですがこの場合には 宮城 2000/12/28-09:43
記事番号9140へのコメント
一晩悩みました。(^^;;

UG3さんの希望は表引きしたいけど、場合によっては独立した値を入力したいですよね。
そして、表引きとは、自レコードの項目値によってある項目の値を制御させることと思っています。

であれば、あえて挿入初期値を機能させるには、挿入時その値を投入していなければなりません。
それ以後の編集は反映できません。
挿入と編集を両方設定した場合というのは試していませんが、挿入の結果がヌルのときのみ編集が機能するんではないでしょうか。

「挿入」は自レコードの値に関わらず一律設定できる、たとえば「登録年月日」ぐらいに使うべきもので、
この場合にもやはり「編集」が妥当だと思います。

*** おまけ ***

UG3さんへ

#表引きとは・・・、

あえて省略して表記されたんですか? 基本形は次。

#表引き([自レコードで比較したい項目]
    ,=
    ,"参照したい表名"
    ,[参照先表の比較したい項目]
    ,[参照先の参照したい項目])

9144 成る程! 佐田 守弘 2000/12/28-23:00
記事番号9141へのコメント
宮城さん

成る程!
>UG3さんの希望は表引きしたいけど、場合によっては独立した値を入力したい
>ですよね。そして、表引きとは、自レコードの項目値によってある項目の値を
>制御させることと思っています。

そう言われてみれば、確かに表引きの検索値が同じレコードに入っていると言う前提での話ですね(これを見落としてました)。
そうであれば、確かに宮城さんの言われる事が正解で、編集初期値でなければ希望する表引きは機能しません。

という事で、前の発言の「挿入初期値で設定する」を取り消し、「編集初期値で設定する」に訂正させて頂きます。

なお、私がこだわった点、つまり#9140に書いた

>B編集結果の中には、(一般論として)未定義にしておく場合もあり得る
については、「#行挿入」関数を使う事によって対応が可能になります。

まとめますと、
項目初期値は編集初期値に以下の様な計算式を設定する事になります。
#条件選択(#行挿入,#表引き(<表引きの記述>),1,[])

なお<表引きの記述>の部分は、質問者から具体的なデータの提示がないので具体的な記述は割愛します。

佐田守弘(KS-00119)

戻る