ホーム > ロータスフォーミュラロータスノーツのチュートリアルデザイナーノート > Lotus Notesの式を- @変換で複数の値に単一値の処理機能をオンにする

ロータスフォーミュラノート - @変換で複数の値に単一値の処理機能をオンにする

共同開発は、最近のドキュメント固有のIDのリストを持っていた。 彼は、文書のそれぞれの値をルックアップしたかったのです。 彼が最初に考えたのは(; "フォーム" unidList)@ GetDocFieldのように、@ GetDocFieldを使用することでした。 ( "フォーム"は彼が探していたフィールドはありませんでしたが、私は例として、ここでそれを使用します)。 @ GetDocFieldは、単一の値のみで動作しますので、それだけでリストの最初のUNIDからフィールドを探していました。

彼は、@変換前に使用されることがなかったが、これはその関数の完全な使用方法です。 それは、 "複数値"処理を行う関数に "単一の値"の処理を行う任意の関数を無効にすることができます。 @ Transformは、3つのパラメータがあります。 最初の値のリストです。 二つ目は、一時的な変数の名前になってしまう文字列です。 三つ目は変数名番目のパラメータを使用して、実行する関数です。 そう、彼の関数は書き直されました:

@変換(unidList、 "x"は、@ GetDocField(X; "フォーム"))

関数は、リスト内のすべての要素(最初のパラメータ)をループ処理します。 リストの各要素は、@ GetDocFieldが実行されます。 文字列 "x"が使用されていることに注意してください。 その2番目のパラメータですが、式の中に "変数"(3番目のパラメータ)の名前だようにすることができます。 関数の結果は、 "変換"値のリストです - リスト内の各要素(各UNID)は何か他のもの(@ GetDocFieldの結果)に形質転換した。

式は、ソースリスト内の要素ごとに処理されるので、式は単一の値でそれぞれの時間を処理しています。 だから、あなたが今、複数の値を処理することができます式に@ GetDocFieldの単一値制限を有効にする方法です。

私は式の中でエラーチェックを行っていないことに注意してください。 式より、 "堅牢な"バージョンは次のようになります。

@変換(unidList "X";ます。@ If(@ ISERROR(@ GetDocField(X; "フォーム")); "エラー"; @ GetDocField(X; "フォーム")))

しかし、もっと複雑な数式で取得し、より多くの困難が続くとサポートすることです。 私は簡単な例から始めなぜそれが - それを説明するのが簡単です。

また、@は、複数のステートメントを実行するには、式の中で行い使用することができます。 キーが値に数式の結果、その値がリスト内の元の値を置き換える終わるということです。

単一の値のみで動作する任意の関数は、同様に同じ技術を使用して複数の値を操作する関数に更新することができます。

2710視聴者が8493回アクセス

  1. リチャード·C
    01:23 2010年4月10日| #1

    他のオプションのカップル:

    選択肢1:@を使います(...)ループ。

    例:

    @ I(の場合:は、i <= @要素(unidList)= 1 I:= I + 1;
    @か(
    theData:= @ GetDocField(unidList [i]は、 "フォーム");
    theDataList:= theDataList:(@の場合(@ ISERROR(theData)、 "エラー"; theData))

    。)

    オプション2:@ DbLookupを使用する
    - あなたは、最初の列@テキスト(DocumentUniqueID)でソートされたビューを持っている場合は、以下を使用することができます。
    theDataList:= @ DbLookupを( "注": "キャッシュ更新"; "": ""; "vDocumentsByUNID"; unidList; "TheForm");

  1. トラックバックはまだありません。