0

私はLotusDominoDesignerの学習を任されており、前世で何をしたかはわかりませんが、かなり悪かったに違いありません...データベースを検索して選択値を取得する方法を考えていました。この情報は多くのアプリケーションで使用される可能性があるため、1か所にのみ配置することをお勧めします。

@DBColumnを使用できると収集しましたが、そのルックアップのエントリが変更された場合はどうなりますか?ルックアップの一意の値がテキストである場合、関係は壊れますね。リレーショナルルックアップのアイデアを模倣する方法はありますか?

これはルックアップの本当の制限のように思われるので、私はロータスの開発を間違った角度から見ていると思います。

インターウェブ上でまともな学習資料を見つけられなかったので、助けていただければ幸いです。

Ta

4

5 に答える 5

2

ソース データベースに一意の ID をテキスト値と共に格納する必要があります (RDBMS で行う場合とは異なります)。次に、その ID のみを参照ドキュメントに保存し、表示用計算フィールドを使用して表示値を検索します。(ここにはパフォーマンスに関する考慮事項があります。データを「非正規化」し、ID とテキスト値を参照ドキュメントに保存し、値の同期を維持するために非同期作業を行うことができます。たとえば、実行されるスケジュールされたエージェントを使用します。毎晩または毎週)。

DB1 にキー値があり、DB2 にこれらの値を参照するドキュメントがある場合、DB2 のフォームでは、@DbColumn を実行して値リストを検索します。DB1 のルックアップ ビューで、テキスト値と ID を最初の列のパイプ セパレータ (textField + "|" + ID) で連結します。これにより、ID 値のみを保存するよう Notes に指示されます (パイプの後に続くのは「エイリアス」であり、保存されるものです)。

注: @DocumentUniqueID をこれらの値の一意の ID として使用することは避けます。ドキュメントをコピーして貼り付けたり、データベース全体をコピーしたりすると、ドキュメントの一意の ID が変更されるためです。作成時に計算されたフィールドを使用して、一意の ID に近いものを生成します (SQL の ID 列にほぼ似ています)。

于 2009-09-29T21:31:25.047 に答える
1

リレーショナル プロパティが必要な場合は、Notes 以外のソリューションを探してください。ドキュメント UNID と更新エージェントを使用してリレーショナル動作を取得することは可能ですが、適切なリレーショナル バックエンドを使用するよりも困難です。

変更される可能性のあるテキストを参照する際の特定の問題は、選択フィールドでエイリアスを使用することである程度解決できます。ダイアログ リストにフォームの値が含まれている場合...

Foo|id1
Bar|id2 

...フォームにはFooが表示されますが、バックエンド ドキュメントには値id1が格納されます(これは標準ビューで表示できるものですが、xpagesで解決できます)。@DocumentUniqueID状況によっては、 for エイリアスを使用することをお勧めします。

于 2009-09-29T17:12:47.563 に答える
0

データをどこで使用するかによって異なります。@DBLookup または @DBColumn は、フィールドが表示用に計算されるように設定されている場合、Lotus Notes フィールドで機能します。そうすれば、フォームを開いたときに常に最新の情報を取得できます。

データがドキュメントに保存されるようにすると、値を更新する必要があるときに更新コードを記述する必要があります。

デザイナー用の Lotus Notes ヘルプ ファイルは非常に優れています。それを参照してください。

SM

于 2009-09-28T12:57:28.027 に答える
0

ルックアップの内容は自由に変更できます。ルックアップ キーが変更された場合にのみ、問題が発生します (同じ状況の他のプラットフォームでも同様です)。変更されないキーを使用する必要があります。人間が読めるテキストは利点ですが、キーの説明をたとえば「部門」から「ビジネス ユニット」に変更し、ルックアップを機能させたい場合は、何らかのエイリアスを使用する必要があります。おそらく、テキストの説明にマップされ、内部でのみ使用されます。@Unique はこれに非常に適しており、重要な場合は短いキーを提供します。@DocumentUniqueID は最も信頼性が高いですが、Ed が指摘したように、コピー/貼り付けまたは非レプリカ コピーを作成すると変更されます (変更する必要があります - 新しいドキュメントです)。ただし、これは簡単に回避できます。Computed-when-composed フィールドを作成します (たとえば、"

于 2009-11-10T00:54:43.133 に答える
0

キーまたはエイリアスを使用して、ルックアップ値との関係を保存できます。値自体が変更された場合、エイリアスがそのままであるため、接続が維持されます。たとえば、ルックアップ値がドキュメントのコレクションとして保存されている場合、@DBColumn で Document UNID|lookup 値のペアを取得します。表示モードでは、@GetDocField を使用して値を取得できます。ルックアップ値が別のデータベースにある場合は、@DBLookup を使用して表示用にそれらを取得し、UNID または使用するキーをオフにしたビューを作成する必要があります。この手法の唯一の欠点は、実際の値はドキュメントに保存されておらず、参照のみであるため、フィールド値をビューに表示することはできません。ただし、XPages を使用すると、

ややこしいことですが、LEI を使用すると、Notes を使用してリレーショナル バックエンド システムをフロントエンドにすることもでき、ルックアップで必要な動的な関係を得ることができます。

お役に立てれば!

于 2009-10-02T21:08:37.190 に答える