Как добавить поле из 2-й формы? - PullRequest
0 голосов
/ 25 мая 2010

Я изменяю существующее представление Lotus для включения поля из другой формы.

  1. Сначала я добавил новый столбец и установил его в нужном поле. Однако после обновления новый столбец был пуст, хотя я знаю, что в нем есть данные.

  2. Затем я обновил формулу View Selection с:

SELECT Form = "A" & StatusIndex < "06"
чтобы:
SELECT (Form = "A"| Form = "B") & StatusIndex < "06"

Все еще не повезло. Представление успешно обновляется, но новое поле остается пустым. Что еще добавить этот новый столбец в это представление?

Я впервые экспериментирую с Lotus, поэтому, если мне не хватает какой-то важной концепции, я, вероятно, ошибаюсь.

Редактировать

Если бы я извлекал эти данные с помощью SQL, выражение могло бы выглядеть примерно так:

Select A.* , B.*  
from A inner join B on A.id=B.id  
where A.StatusIndex < "06";  

Что поднимает другой вопрос: где определены отношения между этими таблицами / формами?

Ответы [ 3 ]

1 голос
/ 26 мая 2010

К сожалению, в представлении Notes нет (встроенной) функции "соединения". Если вам абсолютно необходимы разные столбцы, появляющиеся в одной и той же строке (документе) в представлении, то один из вариантов - это нормализовать данные, чтобы при сохранении «Документа B» вы обновляли связанный «Документ А» с помощью значения полей. (Это также единственный реальный способ заставить полнотекстовый поиск работать с «объединенными» данными).

Если представление предназначено только для просмотра в браузерах, у вас могут быть другие варианты, такие как вызовы AJAX для загрузки соответствующих полей данных и т. Д.

0 голосов
/ 17 августа 2010

Существует более простая версия трюка с «множественной формой», отмеченного Кеном:

Выберите форму = "A": "B" & StatusIndex <"06" </p>

или, если вы предпочитаете:

Выбор (Форма = "A": "B") и StatusIndex <"06" </p>

Эта формула гласит: if (form = A или B) И StatusIndex <"06" </p>

Примечание: убедитесь, что StatusIndex - это текст (как вы его цитировали), и поле StatusIndex со значением включено в обе формы. Если нет, вам нужно исправить свою логику.

Плюс: документы отображаются в отсортированном или хронологическом порядке, ОДНО в строку, поэтому данные A & B не могут быть в одной строке. Это может выглядеть так:

A
A
A
B
B
B

OR

A
B
A
B
A
B
A

Но никогда

A & B
A & B
A & B
0 голосов
/ 25 мая 2010

Вот трюк для добавления нескольких форм. Таким образом, вы можете легко добавить в список разрешенных форм без большого количества операторов OR.

@ IsMember (Форма; "A": "B") & StatusIndex <"06" </p>

Однако я бы попытался избавиться от всех условий в вашем представлении и просто показать Form = "B", предполагая, что в форме B есть поле, добавленное вами на шаге 1. Если это работает, то вы знаете, это просто проблема с формулой выбора вида.

Также вы можете использовать Свойства документа для проверки элементов документа. Файл> Документ> Свойства доставит вас туда. Я бы трижды проверил, что документы, отображаемые в этом представлении, действительно содержат данные для поля на шаге 1.

Наконец, убедитесь, что программируемое имя столбца в представлении уникально. Дважды щелкните заголовок столбца в конструкторе представлений, а затем щелкните последнюю вкладку (шапка). Имя, которое там находится, обычно будет таким же, как поле, которое вы хотите показать в столбце, или это будет число $, если значение столбца является формулой. Вы можете изменить это имя на что-то, что, как вы знаете, уникально, просто чтобы быть в безопасности. Теория здесь такова, что если это программное имя совпадает с программным именем другого столбца, то представление не будет оценивать значения столбца и вместо этого будет использовать кэшированные значения, которые в вашем случае могут быть пробелами. Это редко, но это случается.

...