0

次のコードを使用して、新しいプロファイル ドキュメントを作成します。

Set doc = db.Createdocument()
doc.Form = "SMBPrivateProfile"
Call doc.Computewithform(True,True)
Call doc.Save(True, False)

しかし、読みたいフィールドにデフォルト値がある場合でも、フィールドを読みたいときはいつでも@GetProfileField空の文字列を取得します。ドキュメントを手動で開いて保存すると、すべてが機能します。


詳細:
アプリを改良してヒットしApplication --> Replace Design...ました。新しいバージョンには、プロフィール文書内に新しいフィールドが含まれています。これらの新しいフィールドの 1 つを読み取ると、結果は空の文字列になります。同じドキュメント内の「古い」フィールドを読み取ると、結果は予想される文字列になります。

例えば:

MessageBox([OK];"Title"; @GetProfileField("SMBPrivateProfile"; "OLD_FIELD"; @ThisName))

--> 結果は次のようになります: 「これは派手な古いデフォルト値です」

MessageBox([OK];"Title"; @GetProfileField("SMBPrivateProfile"; "NEW_FIELD"; @ThisName))

--> 結果は次のようになります: "" (「これは派手な新しいデフォルト値です」ではなく)

4

2 に答える 2

3

それはプロフィール文書ではありません。プロファイル ドキュメントを作成するには、次を使用します。

db.GetProfileDocument("SMBPrivateProfile");

プロファイル名に加えて、一意のキーの 2 番目のパラメーターを追加することもできます。

また、本当にプロファイル ドキュメントを使用する必要があるかどうかも検討してください。それらは頻繁にキャッシュされ、どのビューにも表示されません。

于 2013-02-08T12:47:28.810 に答える
0

お読みのとおり、フォームを更新し、デフォルト値の数式を含む新しいフィールドを追加したようです。次に、既存のドキュメントを読んでいます。これを行うと、フォームに追加した新しいフィールドはまだ存在しません。新しいフィールドと数式は、強制的に適用するために何らかの操作を行うまで、既存のドキュメントには適用されません。

それが通常の文書である場合 (元のコードが示すように)、文書を Notes クライアントで開いて編集し、再保存するだけです。これにより NEW_FIELD が作成され、その値が与えられます。これらのドキュメントが多数ある場合は、@Command([ToolsRefreshAllDocs])またはを介し​​てこれを行う単純な式エージェントを作成できます@Command( [ToolsRefreshSelectedDocs])

db.getProfileDocumentそれがプロファイル ドキュメントである場合 (@Panu の anser への応答チェーンに従って)、replace design を行った後、 use doc.ReplaceItemValue("NEW_FIELD";"newを使用して既存のプロファイル ドキュメントを開くエージェントを作成する必要があります。価値")。

于 2013-02-08T22:27:07.227 に答える