Need more info, preferably code that fails where you expect it to work.
if [DataMod.DsoPrint."Substitute_ID"] = nil then MmoSubstituted.Visible:=True;
Unfortunately, LazReport converts a database field value from null to an empty string or zero (depending on the field type). Try using the OnGetValue event.