У меня точно такой же дизайн базы данных в реальном времени и в DEV, однако, когда у меня есть повторяющийся элемент управления на странице, он работает так, как ожидалось, в DEV, извлекая статус документов из представления, но не в режиме реального времени, где он просто перечисляет номер документа в представлении. Кроме того, похоже, что он не возвращает никаких уникальных значений. Я использую столбец dbcolumn для получения значений и попытался обернуть его @unique, а затем использовать библиотеку сценариев для обработки уникальных записей, но безуспешно. Изображение прилагается и код ниже. Любые идеи?
<table class = "table table-hover">
<thead>
<tr>
<th>Status</th>
<th>Total</th>
<th>%</th>
</tr>
</thead>
<tbody>
<xp:repeat id = "repeat1" rows = "30" var = "row">
<xp:this.value><![CDATA[#{javascript://var result = @DbColumn("", "vwStatusStats", 1);
//var result = session.evaluate("@DbColumn(\"\"; ; \"vwStatusStats\"; 1)").elementAt(0)
//result = session.evaluate("@Unique");
//return result
//return @Unique(@DbColumn("", "vwStatusStats", 1))
return DbColumnArray("", "", "", "unique", "", "vwStatusStats", 1)
}]]></xp:this.value>
<tr>
<td>
<xp:text escape = "true"
id = "computedField11">
<xp:this.value><![CDATA[#{javascript:row}]]></xp:this.value>
</xp:text>
</td>
<td>
<xp:text escape = "true"
id = "computedField1">
<xp:this.value><![CDATA[#{javascript:var v:NotesView = database.getView("vwStatusStats");
var vec:NotesViewEntryCollection = v.getAllEntriesByKey(row);
return vec.getCount().toString()}]]></xp:this.value>
</xp:text>
</td>
<td>
<xp:text escape = "true"
id = "computedField2">
<xp:this.value><![CDATA[#{javascript:var total = getComponent("cmpTotal").getValue();
var amount = getComponent("computedField1").getValue();
var result = (amount / total) * 100;
return result}]]></xp:this.value>
</xp:text>
</td>
</tr>
</xp:repeat>
<tr>
<td>Total</td>
<td>
<xp:text escape = "true" id = "cmpTotal">
<xp:this.value><![CDATA[#{javascript:var v:NotesView = database.getView("vwStatusStats");
return v.getEntryCount().toString()}]]></xp:this.value>
</xp:text></td>
<td>
<xp:text escape = "true"
id = "computedField3">
<xp:this.value><![CDATA[#{javascript:var total = getComponent("cmpTotal").getValue();
var amount = getComponent("cmpTotal").getValue();
var result = (amount / total) * 100;
return result}]]></xp:this.value>
</xp:text></td>
</tr>
</tbody>
</table>
Проверьте наличие нескольких представлений с одинаковым именем / псевдонимом в действующей базе данных. Ваша живая версия может выглядеть иначе, чем вы ожидаете.
Лучше всего также убедиться, что вызов @DbColumn
передает @DbName()
в качестве первого параметра. Он по-прежнему должен будет проделать такой же объем работы, но он обеспечит стабильные результаты ("" не будет работать для XPiNC). Использование SSJS / Java для получения представления и возврата getColumnValues()
также, вероятно, будет более эффективным, чем @DbColumn()
, согласно анализу Ховарда Гринберга. В качестве дополнительного бонуса, возможно, стоит взглянуть на этот XSnippet для использования аспектов Repeat Control для HTML, который обертывает ваш повтор https://openntf.org/XSnippets.nsf/snippet.xsp?id=repeat-with-header-and-footer-facets. Это гарантирует, что HTML-код для таблицы не будет вставлен в дополнительный HTML-код.
Похоже, ваш вид в реальном времени поврежден. Откройте его с помощью клиента Notes, чтобы убедиться, что он действительно содержит ожидаемые значения. Одной из возможных причин может быть повреждение значения "программного имени" в свойствах столбца. Иногда, особенно при копировании / вставке в дизайне представления, ваши столбцы получают одинаковое значение в долларах (например, 1 доллар США) для столбцов с другой формулой. Это вызывает "странные" значения в одном из этих столбцов, полностью отличные от его формулы. Удалите программное значение, новое будет сгенерировано автоматически.
Извините за задержку, меня не было в офисе. Программные имена были такими же, это было первое, что я проверил. Повторный ввод имени также не решает проблемы. Замечу, что в этом представлении буквально одна колонка ....
Программное имя является общим для всех представлений, оно может противоречить формуле столбца в других представлениях.
Я просто дал столбцу совершенно уникальное программное имя, но все равно без радости. Формула столбца - это буквально просто имя поля.
Если я изменю формулу представления, чтобы использовать другое поле, например, расположение офиса, все будет работать, но когда я верну его к статусу, это снова не произойдет .. Содержимое столбца / поля в обоих случаях является строкой ...
Дважды проверьте флаг isSummary в полях - как в документах, так и в таблице полей.
Для них установлено значение true, как для поля, которое отображается правильно, так и для поля, которое не отображается.
Извините за задержку, меня не было в офисе ... Никакого другого имени или псевдонимов представления с указанным именем представления не существует .... Я также изменил на @DbName (), как было предложено, без изменений, и удалил и повторно скопировал вид из DEV, где он работает. Просмотр представления в клиентах заметок также показывает ожидаемые значения