Dear all,
I want to take 3 measurements of a persons Systolic Blood Pressure
then calculate the average. However there are occasions when I will
only be able to capture 2 measurements, but I still need to calculate
the average. I have this on my form as:
However when running this through Validate, I get the error:
Invalid XPath expression [if (../systolicBP1 !=999 and ../systolicBP2 !
=999 and ../systolicBP3 !=999),(../systolicBP1 + ../systolicBP2 + ../
systolicBP3) div 3,(../systolicBP1 + ../systolicBP2) div 2)]!
java.lang.NullPointerException
at org.javarosa.core.model.FormDef.addTriggerable(FormDef.java:442)
at org.javarosa.xform.parse.XFormParser.parseBind(XFormParser.java:
1448)
at org.javarosa.xform.parse.XFormParser.parseModel(XFormParser.java:
435)
at org.javarosa.xform.parse.XFormParser.access$200(XFormParser.java:
77)
at org.javarosa.xform.parse.XFormParser$3.handle(XFormParser.java:
150)
at org.javarosa.xform.parse.XFormParser.parseElement(XFormParser.java:
350)
at org.javarosa.xform.parse.XFormParser.parseElement(XFormParser.java:
361)
at org.javarosa.xform.parse.XFormParser.parseElement(XFormParser.java:
361)
at org.javarosa.xform.parse.XFormParser.parseDoc(XFormParser.java:
316)
at org.javarosa.xform.parse.XFormParser.parse(XFormParser.java:267)
at
org.javarosa.xform.util.XFormUtils.getFormFromInputStream(XFormUtils.java:
62)
at org.odk.validate.FormValidator.validate(FormValidator.java:210)
at org.odk.validate.FormValidator.actionPerformed(FormValidator.java:
169)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown
Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(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$1.doIntersectionPrivilege(Unknown
Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown
Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.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)
Can anyone guide me as to how I could achieve my intended goal?
Thanks in advance,
Tumaini
The proper syntax is
"if(conditional_to_evaluate,what_happens_if_true,what_happens_if_false)".
You have a syntax error because you put a ")" after the conditional.
Try the following: ""
···
On Sun, May 20, 2012 at 1:10 PM, Tumaini Kilimba wrote:
> Dear all,
> I want to take 3 measurements of a persons Systolic Blood Pressure
> then calculate the average. However there are occasions when I will
> only be able to capture 2 measurements, but I still need to calculate
> the average. I have this on my form as:
>
> readonly="true()" calculate="if (../systolicBP1 !=999 and ../
> systolicBP2 !=999
> and ../systolicBP3 !=999),(../systolicBP1 + ../systolicBP2 + ../
> systolicBP3) div 3,(../systolicBP1 + ../systolicBP2) div 2)" />
>
> However when running this through Validate, I get the error:
>
>
> Invalid XPath expression [if (../systolicBP1 !=999 and ../systolicBP2 !
> =999 and ../systolicBP3 !=999),(../systolicBP1 + ../systolicBP2 + ../
> systolicBP3) div 3,(../systolicBP1 + ../systolicBP2) div 2)]!
> java.lang.NullPointerException
> at org.javarosa.core.model.FormDef.addTriggerable(FormDef.java:442)
> at org.javarosa.xform.parse.XFormParser.parseBind(XFormParser.java:
> 1448)
> at org.javarosa.xform.parse.XFormParser.parseModel(XFormParser.java:
> 435)
> at org.javarosa.xform.parse.XFormParser.access$200(XFormParser.java:
> 77)
> at org.javarosa.xform.parse.XFormParser$3.handle(XFormParser.java:
> 150)
> at org.javarosa.xform.parse.XFormParser.parseElement(XFormParser.java:
> 350)
> at org.javarosa.xform.parse.XFormParser.parseElement(XFormParser.java:
> 361)
> at org.javarosa.xform.parse.XFormParser.parseElement(XFormParser.java:
> 361)
> at org.javarosa.xform.parse.XFormParser.parseDoc(XFormParser.java:
> 316)
> at org.javarosa.xform.parse.XFormParser.parse(XFormParser.java:267)
> at
> org.javarosa.xform.util.XFormUtils.getFormFromInputStream(XFormUtils.java:
> 62)
> at org.odk.validate.FormValidator.validate(FormValidator.java:210)
> at org.odk.validate.FormValidator.actionPerformed(FormValidator.java:
> 169)
> at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
> at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
> at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
> at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
> at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown
> Source)
> at java.awt.Component.processMouseEvent(Unknown Source)
> at javax.swing.JComponent.processMouseEvent(Unknown Source)
> at java.awt.Component.processEvent(Unknown Source)
> at java.awt.Container.processEvent(Unknown Source)
> at java.awt.Component.dispatchEventImpl(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Window.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
> at java.awt.EventQueue.access$000(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$1.doIntersectionPrivilege(Unknown
> Source)
> at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown
> Source)
> at java.awt.EventQueue$4.run(Unknown Source)
> at java.awt.EventQueue$4.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.security.ProtectionDomain$1.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)
>
> Can anyone guide me as to how I could achieve my intended goal?
>
> Thanks in advance,
> Tumaini
>
> --
> Post: opendatakit@googlegroups.com
> Unsubscribe: opendatakit+unsubscribe@googlegroups.com
> Options: http://groups.google.com/group/opendatakit?hl=en