Function fails if it has Null paramater

I have a function within a crystal report file.  See code below.
Basically, the problem I have is that if ANY of the parameters been passed into the function are Null, then the whole formula just fails. Doesn't report any issues, just returns null.  Even when the parameter is not actually been used within the function.
I haven't done much of this stuff before so it's probably something small.

The below code will return the word Test every time as long as the parameters are not null.  If any of them are null, then it returns nothing.
Function GetReading(Low As Number, High As Number, PInput As Number, OutPut As String, MEAS As String, TOLERANCE as String, TOLVALUE as Number, DECIMALP as Number)
 
    Dim dRange      As Number
    Dim Reading     As Number
    Dim LowRange    As Number
    Dim HighRange   As Number
    Dim ErrRange    As Number
    Dim PerError    As Number
    Dim strFmt      As String
    Dim strSQL      As String
    Dim intPlace    As Number
    Dim strType     As String
    
    dRange = High - Low
    PerError = TOLVALUE
    strType = trim(TOLERANCE)
    intPlace = 0
    intPlace = DECIMALP
    
    ...
    ...
    getreading = 'Test'
End Function

Open in new window

obrienjAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
mlmccConnect With a Mentor Commented:
I haven't written a custom function.  You can try an IsNull and then return a value or evaluate differently

Another idea would be to use a default value for the null parameters and test for that.

mlmcc
0
 
peter57rCommented:
You need to say what you expect to happen if any of the values are null.

But if there can be nulls in the data then you have two options.
Either set the report options to convert all nulls to default values  ("" or 0 for strings and numbers)
or
test for nulls in the data first before you try to use the field value.
0
 
obrienjAuthor Commented:
Are you talking about within the function or within the report???

I can't convert null to values, because it would be wrong. e.g. 0 is a value I would use in the function, whereas Null is not.  If the value is null and I convert it to 0 then the function will return the wrong result.

In the test code I am not even using the values. btw, I commented out the assignations at the start.  See the code below again.  The function does nothing but return the word "Test".  No parameter is used but it still fails if any of them are Null.
Therefore I cant actually test for nulls in the function.  


Function GetReading(Low As Number, High As Number, PInput As Number, OutPut As String, MEAS As String, TOLERANCE as String, TOLVALUE as Number, DECIMALP as Number)
 
    Dim dRange      As Number
    Dim Reading     As Number
    Dim LowRange    As Number
    Dim HighRange   As Number
    Dim ErrRange    As Number
    Dim PerError    As Number
    Dim strFmt      As String
    Dim strSQL      As String
    Dim intPlace    As Number
    Dim strType     As String       
    ...
    ...
    getreading = 'Test'
End Function

Open in new window

0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
mlmccCommented:
Agree.  Crystal halts evaluation of a formula when a NULL value is encountered and it needs too use it.  The exception to this is the IsNull test.

Is this within the application calling the report or is it in a UFL that Crystal calls?

mlmcc
0
 
obrienjAuthor Commented:
It's one of the Report Custom Functions.
So, basically, I do have to set the parameter value to something at all times?  I can't do the isnull within the code of the function itself.  
That sucks.
0
 
obrienjAuthor Commented:
Can't use ISNULL within a custom function for some bizarre reason.  Think I will try using a default value (999) or something.  
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.