打破數(shù)據(jù)并保持其一致性
在本節(jié)中,我們將研究?jī)煞N數(shù)據(jù)打印模式--"Break "和 "Keep together"。
在常規(guī)的帶狀打印模式中,F(xiàn)astReport檢查當(dāng)前頁(yè)是否有足夠的空間來(lái)打印一個(gè)帶狀。如果沒(méi)有,則在下一頁(yè)上全部打印出帶子。如果帶子的 "CanBreak "屬性被激活,F(xiàn)astReport將嘗試將帶子的一部分打印在可用的空間上,也就是 "Break "。
打破一個(gè)帶子的嘗試可以成功,也可以不成功。這取決于被放置在帶子上的對(duì)象的類型和它的設(shè)置。以下物體可以被打破:
- "Text"
- "Rich Text"
- "Table"
在下圖中,顯示了一個(gè)帶子是如何被打破的。

Break algorithm does not always work correctly. The artifacts can occur in a situation, when there are several objects with different font size on a band.
斷帶的目的是為了節(jié)省印張上的空間。數(shù)據(jù)保持的目標(biāo)則相反:在一張紙上完全顯示一組帶子。在這種情況下,雖然紙張上會(huì)有很多未使用的空間,但數(shù)據(jù)的打印方式讓人很舒服。
"keep together "機(jī)制允許將一組帶子保持在一張紙上(或列,如果報(bào)告有列的話)。如果在打印時(shí),保留的數(shù)據(jù)到了頁(yè)面的末端,F(xiàn)astReport會(huì)將所有已經(jīng)打印過(guò)的數(shù)據(jù)重新定位到新的頁(yè)面。
你可以在以下情況下使用 "keep together":
一起打印 "Data"帶的所有行;
一起打印一個(gè)組的所有元素(頁(yè)眉、數(shù)據(jù)、頁(yè)腳);
將主數(shù)據(jù)源的行與所有明細(xì)行一起打印(在 "master-detai "報(bào)告中);
打印報(bào)告頁(yè)眉或數(shù)據(jù)頁(yè)眉與至少一個(gè)數(shù)據(jù)行;
打印報(bào)告頁(yè)腳或數(shù)據(jù)頁(yè)腳以及至少一個(gè)數(shù)據(jù)行;
一起打印父帶和子帶。
讓我們來(lái)看看 "keep together "機(jī)制的使用情況。
要把所有的數(shù)據(jù)行或組元素(頁(yè)眉、數(shù)據(jù)、頁(yè)腳)放在一起,請(qǐng)啟用 "KeepTogether "屬性。這個(gè)屬性在 "Data "和 "Group Header "帶中使用。
下圖顯示了在有和沒(méi)有保持在一起的情況下數(shù)據(jù)的打印情況:

要把主數(shù)據(jù)行和詳細(xì)數(shù)據(jù)行放在一起,請(qǐng)啟用 "KeepDetail "帶的 "KeepDetail "屬性。這個(gè)屬性用于 "master-detail "類型的報(bào)告中:

為了防止 "hanging "頁(yè)眉和頁(yè)腳,請(qǐng)使用 "KeepWithData "屬性。下面這些帶子都有這個(gè)屬性:
- report header
- 報(bào)告頁(yè)腳
- data header
- 數(shù)據(jù)頁(yè)腳
- 組頭
- 組頁(yè)腳
這個(gè)屬性允許保持至少有一個(gè)數(shù)據(jù)行的頁(yè)眉/頁(yè)腳:
為了使一個(gè)帶子和它的子帶子保持在一起,啟用 "KeepChild "屬性。