我可以使用 TinyButStrong 字段来控制我的 Word 中的段落格式 Table

Can I use TinyButStrong Fields to control paragraph formatting in my Word Table

我有一个词 table 是通过 OpenTBS 模板从 MYSQL 查询和子查询中填充的。主要查询行为有一个跨行合并的单元格;使用 ope=mergecell 命令合并子查询的第一列;其余列是单个单元格。

有什么方法可以使用 openTBS 字段在子查询的所有行(最后一行除外)上设置段落 'keep with next',以便每个子记录的所有行都保留在同一页上?

模板的摘录如下:

所以我在合并后基本上要做的是设置 'Keep With Next' 的绿色单元格和未设置 属性 的红色单元格。

这是一个解决方案

目前 TBS 没有特定的功能来知道记录何时是最后一次或不是最后一次(TBS 版本 3.11.0)。 (有headergrp and footergrp的特性,但不作用于记录,而是作用于记录周围)

因此,第一步是在数据中获得一个额外的列,说明它是否是最后一条记录。假设该列名为 is_last。 这样的列在理论上可以使用 MySQL 使用 window 函数来完成。像 :

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

如果您没有成功让此列直接想到 MySQL 查询,那么您可以将所有数据加载到 PHP 数组中。由于您有一个主块和一个子块,那么您的数据应该被构造为一个主块的记录集,并且每个记录都应该有一个存储在 sample_lst[=40 中的子记录集=] 列(或任何名称)。 那么你的模板应该参数 sub1 而不是 p1 以便与 automatic subblocks 一起工作。 现在您的数据在 PHP 变量中,很容易访问数据并添加 is_last 列。

既然你有 is_last 列,接下来的步骤很简单:

  1. 在您的模板中,为子块制作 2 个条件部分。在 when [sub.is_last]=0 部分,在 when [sub.is_last]=1 部分。知道您似乎已经为该子块使用了条件部分,您必须安排条件以便将两个条件组合起来以制作 AND。 See FAQ.
  2. is_last=0 部分中,关闭 与下一个 Ms Word 属性 保持一致。
  3. is_last=1 的部分中,打开 与下一个保持一致 Ms Word 属性。