2

リストボックスに対してこのコードを実行しようとしていますが、機能していません。これにより、エラー 500 が発生します。@formula をリストボックスに直接書き込むと、正常に機能します。

return session.evaluate("@DbColumn(@DbName(), \"viewName\", 1)").elementAt(0)

しかし、コードの下に書くとうまくいきます。

return session.evaluate("@Unique").elementAt(0);

Lotus Notes 8.5.3のxpagesで作業しています

4

3 に答える 3

5

SSJSの@DbColumnには、evaluateメソッドを使用している場合に実行される「元の」@ DbColumn-Version未満のパラメーターがあるため、500erエラーが発生します。XPagesの場合、キャッシュとクラスのオプションが失われました。

これは、evaluateステートメントの構文です。

@DbColumn( class : cache ; server : database ; view ; columnNumber )

XPagesの構文は次のとおりです。

@DbColumn( server : database , view , columnNumber );

また、ネイティブのNotes @Formula構文を使用する必要があり、コンマの代わりにセミコロンを使用します。

于 2012-04-01T07:43:45.097 に答える
1

session.evaluate は、SSJS ではなく、元の @Formula 構文で機能します。

したがって、代わりに @DbColumn( ""; @DbName; "view", column ) を使用してください。

于 2012-04-02T13:49:57.460 に答える
0

解決策 は次のとおりです。SSJSでは、次のコードを直接コーディングできます...

@DbColumn(@DbName(),"viewName",1)

session.Evaluate() を使用して同じことをしたい場合は、次のことを試すことができます。

//@DbColumn(@DbName(),"viewName",1) --> in SSJS
//@DbColumn( class : cache ; server : database ; view ; columnNumber ) --> in Formula using Evaluate

var colValues = "@DbColumn(\"\":\"\";" + @DbName() + ";\"viewName\";1)";

print ("colValues[0]" + colValues[0]); // will print @DbColumn( "":""; ServerName ; viewName; 1)
print ("colValues[1]" + colValues[1]); // will print @DbColumn( "":""; DatabaseName; viewName; 1)

return session.evaluate(colValues[1]) // It will return the expected value in listbox

@DbName() はサーバー名とデータベース名の両方を返すためです。一方、必要なのはデータベース名だけです。これは現在のサーバー専用です。別のサーバーについては、サーバー名を指定する必要があります。これが役立つことを願っています...!!!

于 2012-04-05T12:15:50.583 に答える