Summary: QV12 introduces a “breaking change” in how file paths are interpreted by QVD File functions like QvdNoOfRecords.
In QlikView version 11 script, the five QVD file functions were not impacted by use of the Directory statement. Relative paths given to these functions were always relative to the qvw file, not the current Directory setting. This is different than the other file functions like FileSize() which considered paths to be relative to the current Directory setting.
In QlikView version 12, the QVD File functions have been changed to respect the Directory setting, making them consistent with the other functions. I think this is a good idea. However, it is a breaking change in that your QV11 script may no longer work in QV12 without changes.
Here is how you may have coded a script sequence in QV11:
DIRECTORY data; STORE Customer INTO Customer.qvd; LET vCustomerRows = QvdNoOfRecords('data\Customer.qvd');
This will not work in QV12. The function will be looking for the qvd in “data\data\Customer.qvd”. There will be no script error, but the value of “vCustomerRows” will be null. Because QV12 respects the Directory, the correct syntax for QV12 would be “QvdNoOfRecords(‘Customer.qvd’).
This change is probably not a big deal for most customers, but it could be a silent irritant for many. If your incremental reloads or other conditional code test for the existence of a QVD using QvdCreateTime(), the code could make the wrong decision leading to missing or corrupted data.
Next week I’ll show you a simple way to scan all your qvws for use of QVD functions or other script of interest.
One thought on “QV12: QVD Functions Respect Directory”
Is there any way of re-creating this logic in QV12.1?
Let TotalQVDRecords = QvdNoOfRecords(‘\\networkpath\folder\filename*.qvd’);
We have multiple qvd files based on daily load being checked, we would use the * to check all of the qvd files to get a grand total of all records between them.