2012-04-01 3 views
2

Я пытаюсь выполнить этот код для списка, но его не работает, это дает мне ошибку 500. Если я прямо пишу @formula в списке, он отлично работает.@dbcolumn in session.evaluate в xpages

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

, но если я напишу ниже код, он отлично работает.

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

Я работаю в XPages на Lotus Notes 8.5.3

ответ

4

Вы получаете 500er Ошибку, потому что @DbColumn для SSJS имеет параметр меньше, чем «оригинал» @ DbColumn-версия, которая будет выполняться если вы используете метод оценки. Для XPages опция для кеширования и класса потеряна.

Это синтаксис для оценки заявления:

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

Это синтаксис XPages:

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

И вы должны использовать собственный синтаксис Notes @Formula, F.E. вместо запятой используйте точки с запятой.

+0

Спасибо .. но как я могу выполнить этот @dbcolumn то, что у меня есть в текстовом формате? – NotesArt

+0

Я не знаю, правильно ли я вас понимаю, но если это так, вы можете сделать это следующим образом: return session.evaluate ("@ DbColumn (\" \ "; @DbName(); \" viewName \ "; 1) ") .elementAt (0) –

0

session.evaluate работает с оригинальным синтаксисом @Formula, а не с SSJS.

Так что вместо этого используйте @DbColumn (""; @DbName; "view", column).

+0

мелочи: если это был синтаксис SSJS, ваш второй пример - @Unique тоже не работал - правильный синтаксис SSJS - @Unique() –

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() возвращает имя сервера и имя базы данных. В то время как нам нужно только имя базы данных. Это только для текущего сервера. Для другого сервера нам нужно указать имя сервера. Я надеюсь, это поможет...!!!

Смежные вопросы