# Error executing expression binding

**URL:** <https://forum.inductiveautomation.com/t/error-executing-expression-binding/14392>\
**Category:** Ignition\
**Created:** [May 25, 2017, 12:59am UTC](https://forum.inductiveautomation.com/t/error-executing-expression-binding/14392 "2017-05-25T00:59:26Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jasonhaymes](https://avatars.discourse-cdn.com/v4/letter/j/db5fbb/32.png) [@Jasonhaymes](https://forum.inductiveautomation.com/u/Jasonhaymes)\
**Post date:** [May 25, 2017, 12:59am UTC](https://forum.inductiveautomation.com/t/error-executing-expression-binding/14392/1 "2017-05-25T00:59:26Z")

</div>

I have 160 labels that are pulled from a Microsoft SQL Database.

Code in Root Container pointing to the database sql query is as follows:

SELECT 0 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, 0, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, 0, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 1 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, 0, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, 0, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 2 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -1, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -1, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 3 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -1, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -1, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 4 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -2, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -2, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 5 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -2, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -2, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 6 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -3, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -3, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 7 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -3, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -3, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 8 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -4, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -4, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 9 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -4, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -4, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 10 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -5, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -5, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 11 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -5, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -5, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 12 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -6, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -6, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 13 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -6, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -6, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 14 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -7, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -7, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 15 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -7, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -7, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 16 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 19, cast(floor(cast(dateadd(day, -8, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 31, cast(floor(cast(dateadd(day, -8, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

UNION

SELECT 17 as “item”, sd.status as “Status”, description, count(dt.Status) as “Count”, sum(datediff(minute, StartTime, EndTime)) \* 100 / 720.0 as “Percent”  
FROM Status\_Definition sd LEFT JOIN Downtime\_Tracking dt ON dt.Status = sd.status AND StartTime \>= dateadd(hour, 7, cast(floor(cast(dateadd(day, -8, getdate()) as float)) as datetime)) AND StartTime \< dateadd(hour, 19, cast(floor(cast(dateadd(day, -8, getdate()) as float)) as datetime))  
WHERE sd.status in (0,3,12,41,42)  
GROUP BY description, sd.status

I am getting this error on a bunch of the labels not sure how many exactly. I am pulling info in 12 hr blocks as day and night for 7 day history with a current day summary. I am getting the following error.

Exception: Error executing expression binding on  
TLN\_2\_TRS.Root Container.Group 9.Label 30.text  
caused by NullPointerException

Ignition v7.9.2 (b2017041315)  
Java: Oracle Corporation 1.8.0\_121

full detail

java.lang.Exception: Error executing expression binding on  
TLN\_2\_TRS.Root Container.Group 9.Label 30.text  
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.runExpression(ExpressionPropertyAdapter.java:91)  
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter$1.run(ExpressionPropertyAdapter.java:58)  
at com.inductiveautomation.ignition.client.util.EDTUtil$ProcessQueue.run(EDTUtil.java:113)  
at java.awt.event.InvocationEvent.dispatch(Unknown Source)  
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)  
at java.awt.EventQueue.access$500(Unknown Source)  
at java.awt.EventQueue$3.run(Unknown Source)  
at java.awt.EventQueue$3.run(Unknown Source)  
at java.security.AccessController.doPrivileged(Native Method)  
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)  
at java.awt.EventQueue.dispatchEvent(Unknown Source)  
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)  
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)  
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)  
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)  
at java.awt.EventDispatchThread.run(Unknown Source)  
Caused by: java.lang.NullPointerException  
at com.inductiveautomation.ignition.common.expressions.DefaultFunctionFactory$RoundFunction.execute(DefaultFunctionFactory.java:1087)  
at com.inductiveautomation.ignition.common.expressions.FunctionExpression.execute(FunctionExpression.java:69)  
at com.inductiveautomation.ignition.common.expressions.ArithmeticExpression.execute(ArithmeticExpression.java:52)  
at com.inductiveautomation.factorypmi.application.binding.ExpressionPropertyAdapter.runExpression(ExpressionPropertyAdapter.java:82)  
… 16 more

Ignition v7.9.2 (b2017041315)  
Java: Oracle Corporation 1.8.0\_121

---

<div class="post-metadata">

**Author:** ![zackscriven](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zackscriven/32/7213_2.png) [@zackscriven](https://forum.inductiveautomation.com/u/zackscriven)\
**Post date:** [May 25, 2017, 4:32am UTC](https://forum.inductiveautomation.com/t/error-executing-expression-binding/14392/2 "2017-05-25T04:32:00Z")

</div>

It seems like one of your fields is returning a null value.

Maybe it’s just a hunch, but it seems like there should be an easier way to write/architect this query…
