Erik's ToolBox Documentation
Index

RDL Editor - Troubleshooting

Field-tested debugging recipes for BC RDLC layouts. The golden rule: for document reports, the PDF is the truth — the designer and even BC's HTML preview are softer than the hard-page renderer.

Blank pages

Almost always a width problem: body, a table, a rectangle, a line, or a hidden item extends past page width − margins.

  1. Deselect → check the width budget readout (chapter 6). Fix the report width if it's over.
  2. Look for bands with the red boundary line / warning chip — the overflow detector includes hidden items.
  3. Recently added a table column? Narrow others until the table warning clears.
  4. Check page breaks: a break at the end of the last group/table instance = trailing blank page. Prefer Between or Start.
  5. Check Keep Together — it can push a whole section to the next page, leaving a blank gap.
  6. Consume Container Whitespace (Report properties) can absorb container slack — but it never fixes a layout that is simply too wide.
  7. Diagnostic trick: give suspect sections temporary background tints, Test Print, see which color owns the blank page. Undo afterwards.

A field doesn't show — the decision tree

  1. Is the field in the dataset? Check the Bind-to-field dropdown. Not there → fix the AL report / report extension; no layout edit can conjure it.
  2. Is it populated? Run the report with data-only output (Excel/XML) from BC. Empty there → AL logic/filters/permissions, not the layout.
  3. Expression right? Exact field name (use the dropdown — don't type from memory), correct scope.
  4. Visible? Check, in order: textbox visibility → row visibility → column visibility → group member visibility → parent rectangle visibility. Use Highlight hidden items.
  5. Scope? A document-level value inside a grouped area may need =First(Fields!X.Value, "DataSet_Result") (snippet available). Don't blanket-wrap everything in First() — if a per-line value needs it, the grouping is wrong.
  6. In a page header/footer? Dataset fields don't work there — the lint will have told you. Use the ReportItems! pattern (chapter 4), and make sure the referenced body textbox appears on every page that needs it.
  7. Clipped or invisible? Too-small textbox, white-on-white color, CanGrow off with long text.

Header/footer value is blank or #Error

  • The ReportItems! name doesn't match any textbox → the lint flags it; check the Structure tab.
  • The referenced body textbox isn't on the current rendered page → move the hidden helper into a repeating table row.
  • More than one ReportItems! reference in a single expression → split into two textboxes.

Address blocks broke

Address areas rely on hidden helper textboxes and First() scoping more than anything else in a BC layout. Before editing one: select pieces and read Referenced by; hide rather than delete; test with a blank Address 2, long names, and international addresses. Empty lines that should collapse need row visibility (=IsNothing(...) Or ...=""), not textbox visibility — a hidden textbox still leaves an empty row.

Totals are wrong

The same =Sum(Fields!Amount.Value) means group total, table total, or dataset total depending on where the textbox sits. Check which row/group hosts it; add an explicit scope (=Sum(Fields!X.Value, "DataSet_Result")) when in doubt; make sure you're not summing a formatted-text field; compare against data-only output.

Long text pushes everything around

  • Enable Can Grow only where long text is expected (descriptions, comments). On tightly controlled documents it shoves totals to the next page.
  • Test with the real ugly data: the longest description, the blank optional fields, multiple VAT rates.

Looks right in the editor, wrong in BC

Fonts (use standard ones for cloud), images (keep them small; FitProportional for logos), the dataset (the editor shows expressions, not data), and renderer differences (Excel export proves nothing about print). When output differs between renderers, remember the classes: PDF/print are hard-page, Word/Excel are soft-page, CSV/XML are data-only.

After a BC upgrade or extension update

Custom layouts break when the underlying dataset changes shape. Keep layouts in source control, re-test after app updates, and compare against a freshly exported standard layout when a field stops arriving.