Lotus Script: передача строковой переменной в оператор Evaluate

Я не могу заставить простую формулу DbLookup работать с переменной. У меня есть представление с сотрудниками и их менеджерами, я получаю уникальные записи менеджеров с помощью DbColumn, а затем мне нужен список людей, которыми управляет этот человек.

pms=Evaluate({@Unique(@Dbcolumn("":"";"":"";"admin";3))})

ForAll pm In pms
   result = Evaluate({@DBlookup("":"";"":"";"admin";} & pm & {;1)})

это не работает, я также пытался использовать вертикальные полосы и дополнительные кавычки вокруг pm, но я продолжаю получать либо несоответствие типов, либо ошибки выполнения

result = Evaluate({@DBlookup("":"";"":"";"admin";} & "keyword" & {;1)})

это отлично работает


person Qarlog    schedule 07.01.2014    source источник
comment
У вас есть элементы тестовых данных в pms, которые содержат кавычки?   -  person Knut Herrmann    schedule 07.01.2014
comment
Хотя у меня есть косые черты   -  person Qarlog    schedule 07.01.2014


Ответы (1)


Вы также должны заключить значение pm в кавычки:

result = Evaluate({@DBlookup("":"";"":"";"admin";"} & pm & {";1)})

Таким образом, он распознается как строка.

Пример:

Если pm имеет строковое значение "Domino", тогда строка Evaluate должна выглядеть так:

@DBlookup("":"";"":"";"admin";"Domino";1)

но в вашей исходной версии формулы это было бы

@DBlookup("":"";"":"";"admin";Domino;1)

Кстати, код сломался бы, если бы pm содержал кавычки. Если вы уверены, что этого не может произойти, то код в порядке.

person Knut Herrmann    schedule 07.01.2014
comment
Я пробовал это раньше и пробовал сейчас снова - несоответствие типов, CStr (pm) тоже не помогает. pm не может содержать кавычки - person Qarlog; 08.01.2014
comment
Вы получаете несоответствие типов, если обрабатываете result как строку, но это массив. Вместо этого используйте result(0), например. print(result(0)). - person Knut Herrmann; 08.01.2014
comment
Я не. массив результатов пуст каждый раз, когда я получаю сообщение об ошибке ( isEmpty(result) возвращает True), и единственный способ, которым я его использую, - это в другом цикле ForAll для выбора отдельных записей и создания отдельного списка, поэтому проблема все еще находится в Evaluate :) - person Qarlog; 08.01.2014
comment
Вы ищете в первом столбце значение pm и возвращаете первый столбец - имеет ли это смысл? @DbLookup всегда ищет ключ в первом отсортированном столбце (вероятно, не в третьем столбце с менеджерами) - person Knut Herrmann; 08.01.2014
comment
и это оценка! я почти уверен, что принимал это во внимание раньше, но кажется, что я забыл :) большое спасибо! - person Qarlog; 08.01.2014
comment
Я думаю, вам нужно повторное представление: первый отсортированный столбец с менеджерами и второй столбец с управляемыми людьми. - person Knut Herrmann; 08.01.2014