Могу ли я использовать TinyButStrong Fields для управления форматированием абзацев в моей таблице Word - PullRequest
0 голосов
/ 09 июля 2020

У меня есть таблица слов, которая заполняется из запроса MYSQL и подзапроса через шаблон OpenTBS. Основные действия запроса содержат одну ячейку, объединенную по строке; первый столбец подзапроса объединяется с помощью команды ope=mergecell; остальные столбцы представляют собой одну ячейку.

Можно ли каким-либо образом использовать поля openTBS для установки абзаца «сохранить с следующим» во всех строках подзапроса, кроме последней, чтобы все строки каждой дополнительной записи оставались на та же страница?

Выдержка из шаблона будет выглядеть так:

Template excerpt

So what I am essentially after after merging would be to have the green cells with 'Keep With Next' set and the red cells with that property unset.

введите описание изображения здесь

1 Ответ

1 голос
/ 11 июля 2020

Вот решение

На данный момент TBS не имеет специальной c функции, позволяющей узнать, является ли запись последней или нет (версия TBS 3.11.0). (есть функция headergrp и footergrp , но они действуют не на запись, а вокруг нее)

Итак, первый шаг - получить дополнительный столбец в данных, который говорит, была ли это последняя запись или нет. Допустим, столбец назван is_last . Теоретически такой столбец можно создать с помощью MySQL, используя оконную функцию. Что-то вроде:

(id = (LAST_VALUE(id) OVER (...)) AS is_last

Если вам не удалось заставить этот столбец напрямую обрабатывать запрос MySQL, вы можете загрузить все свои данные в массив PHP. Поскольку у вас есть основной блок и подблок, ваши данные должны быть структурированы как набор записей для основного блока, и каждая запись должна иметь подзапись, хранящуюся в столбце sample_lst (или как его имя ). Тогда ваш шаблон должен параметр sub1 вместо p1, чтобы работать с автоматическими c подблоками . Теперь, когда ваши данные находятся в переменной PHP, легко просмотреть данные и добавить столбец is_last .

Поскольку у вас есть is_last colmun, следующие шаги просты:

  1. Создайте в шаблоне 2 условных раздела для подблока. На участке с when [sub.is_last]=0, а на другом с when [sub.is_last]=1. Зная, что вы, похоже, уже используете условные разделы для этого подблока, вы должны расположить условие, чтобы объединить два условия, как для создания AND. См. FAQ .
  2. В разделе для is_last=0 отключите свойство Keep with next Ms Word.
  3. В разделе для is_last=1, включите свойство Keep with next Ms Word.
...