Как добавить поле из второй формы?

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

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

  2. Затем я обновил формулу выбора вида из:

SELECT Form = "A" & StatusIndex < "06"
to:
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";  

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


person PowerUser    schedule 25.05.2010    source источник


Ответы (3)


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

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

person Ed Schembor    schedule 26.05.2010
comment
Как насчет какой-нибудь функции поиска? Я нашел @DbLookup (), но если я правильно читаю документацию, он применяется только к полям в существующих представлениях. Я пытаюсь вытащить прямо из документа. - person PowerUser; 27.05.2010
comment
Вы не можете использовать @DBLookup в формуле столбца представления. Если вы решите денормализовать данные, вы можете использовать @DbLookup как часть формулы вычисляемого поля, чтобы вытащить данные формы B в поле документов с помощью формы A. - person Ed Schembor; 02.06.2010

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

@IsMember (Форма; "A": "B") & StatusIndex ‹" 06 "

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

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

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

person Ken Pespisa    schedule 25.05.2010
comment
Форма B показывает данные, когда они единственные в представлении. Когда я проверил свойства документа, я не увидел НИКАКИХ полей из формы B (надеюсь, ключ к разгадке?). И да, программируемое имя действительно уникальное, так что никаких проблем. - person PowerUser; 25.05.2010
comment
Я должен добавить, что критерии (на самом деле их несколько) применимы только к полям в форме A. - person PowerUser; 25.05.2010
comment
Вот в чем проблема. Вам нужно будет изолировать форму B от критериев формы A. Попробуйте SELECT (Form = A & StatusIndex ‹06 и все остальное) | Форма = B - person Ken Pespisa; 26.05.2010
comment
Выполнено. Кажется, что они объединили (или объединили внешние или что-то еще) данные из двух форм. Я внес правку в свой исходный пост, в котором показано, как будет выглядеть оператор SQL. Это поможет? - person PowerUser; 26.05.2010

Есть более простая версия трюка с множественной формой, отмеченная Кеном:

Выберите Form = "A": "B" & StatusIndex ‹" 06 "

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

Выберите (Form = "A": "B") & StatusIndex ‹" 06 "

Эта формула гласит: if (form = A or B) AND StatusIndex ‹" 06 "

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

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

A
A
A
B
B
B

OR

A
B
A
B
A
B
A

Но никогда

A & B
A & B
A & B
person andora    schedule 17.08.2010