Error handling in QlikView

QlikView can work in three error modes. We will talk briefly about all of them, but focus will be put on Error Mode 0, which really gives us the control.

Error mode 1

We are all familiar with default mode (1). Below variable is automatically set by QlikView system during initial phase of script execution:

set ErrorMode=1;

We’ve all seen (too many times!) the result of error handling by this mode – below window shows up when error occurs in script:

So Error Mode 1 pauses script execution and asks user for action. We can either click OK and move to next statement or click Cancel and exit from application.

Error mode 2

How can we change the default behaviour? Simply by overwriting system variable ErrorMode.

set ErrorMode=2;

Mode 2 will close QlikView document immediately when error is encountered. No additional prompts will be shown:

Error mode 0

The most interesting Error Mode is 0. In this mode QlikView omits errors. When one occurs, script simply starts executing next statement. This mode gives us real control on error handling. First of all, when error occurs its code is saved to ScriptError variable.

List of all codes:

0 No error
1 General error
2 Syntax error
3 General ODBC error
4 General OLE DB error
5 General custom database error
6 General XML error
7 General HTML error
8 File not found
9 Database not found
10 Table not found
11 Field not found
12 File has wrong format
13 BIFF error
14 BIFF error encrypted
15 BIFF error unsupported version
16 Semantic error
Note: ScriptError variable is reset to 0, after every successfully executed script statement

Knowing above, we can implement something like try..catch clause in our script. For example, if script does not find the file to load, instead of stopping execution we can try loading file from other location. Example:

SET ErrorMode = 0;
LOAD * FROM [Transaction.qvd] (qvd);
if ScriptError=8 then
LOAD * FROM [\Other Folder\Transaction.qvd] (qvd);
if ScriptError=8 then
exit script;
end if
end if

Above will try loading Transactions.qvd from QlikView document folder. If failed, it will try loading it from “Other Folder”. If file is not found there as well, “Exit script” statement will be executed.

We can mix various Error Modes together. If we prefer script to fail, when other file is not found we can simply do that:

SET ErrorMode = 0;
LOAD * FROM [Transaction.qvd] (qvd);
if ScriptError=8 then
SET ErrorMode = 2;
LOAD * FROM [\Other Folder\Transaction.qvd] (qvd);
end if

Now, when file is not found in second location, script will (as per ErrorMode 2) close QlikView document immediately.

We have 2 more error handling variables available:

  • ScriptErrorCount – returns number of errors, which occurred during script execution.
  • ScriptErrorList – returns concatenated list of all error names.

We can use ScriptErrorCount to trigger an Alert after reload, informing administrators about exact errors stored in ScriptErrorList.

You can read more in QlikView Help

Jakub Szurogajło

Self-motivated, certified QlikView developer and designer, currently working as Business Intelligence workgroup manager at Harman - Connected Services division.

One Comment

  1. Hi Jakub ,
    I really like your posts . I tried to execute your examples in my machine to understand better .
    I would like to ask something regarding Error handling example 1 .
    SET ErrorMode = 0;
    LOAD * FROM [Transaction.qvd] (qvd);
    if ScriptError=8 then
    LOAD * FROM [\Other Folder\Transaction.qvd] (qvd);
    if ScriptError=8 then
    exit script;
    end if
    end if
    Its not going into if statement i.e. “if ScriptError = 8 ” as it’s storing the text value in the ScriptError i.e. File not found so it wont be true ( i.e. File not Found will not be equal to 8 ) . For checking the value, i stored the ScriptError value in a variable and then converted into number to made condition true .
    I would like to know if you got the number i.e.8 instead of text when you executed this script .
    My Qlikview version is QV12SR7.

    Thanks & Regards,
    Saurabh Wadhwa

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.