7.22.0988

Navigation:  7.22 (QDV 2022) >

7.22.0988

Previous pageReturn to chapter overviewNext page

Released on August 5, 2022

Change: Internal Gantt diagram – Control on the task and resource titles

In the titles, a control is made to disallow the empty texts, and also to avoid some special characters like “[“ and “\”. This is also true for the grid view of the tasks. So you can no longer create a "blank" task (a task having no title).

Change: Deployment of CustomConnection.DLL, CustomFunctions.DLL and CustomArticles.DLL

Some DLL components can be written by the administrators to customize the behavior of QDV (See <QDV_INSTALL_PATH>\SDK). You can write your own:

 

1.        CustomConnection.dll to define the way QDV connects a user to a profile when on opens an estimate

2.        CustomFunctions.dll to define your own functions called by buttons in workbooks

3.        CustomArticles.dll to connect your own databases to the QDV databases

 

QDV is delivered with 3 “blank” DLL files having those names. “blank” here means that they do nothing special, they are neutral.

So, if you have your own customization DLL files, each time you will update QDV, either with the Setup Program or with the Web updater, your custom DLLs are replaced by the blank DLLs being in the new package (those of the publisher).

To prevent this replacement and keep your DLLs in the QDV installation folder, you can add files named: KeepCustomConnection.inf, KeepCustomFunctions.inf and KeepCustomArticles.inf. Once you have these files in the installation folder, QDV doesn’t replace the corresponding DLLs on update.

But, if you’re an administrator of the QDV solution in your company, you may want to deploy your own DLL from your own server and at the same time, you may want to keep your DLLs when you upgrade your own computer from the publisher servers.

For this specific case, we now always update the 3 DLLs a client side when the update address is NOT the one of the publisher: quick-devis.net/QDV7_upgrade/. So, when one updates from your own server, the DLLs are always updated and conform the ones being published on your server. It means that, when the address is not the one of the publisher, the KeepCustomConnection.inf, KeepCustomFunctions.inf and KeepCustomArticles.inf are ignored.

So, in an organization where regular users are connected to a publishing server inside the organization, the users cannot have their own customization (their own DLLs); they all have the DLLs of the organization.

Only the administrator, who updates his computer from the publisher web site will see his customization DLLs kept when QDV is updated (because it is update from quick-devis.net/QDV7_upgrade/).

So, this administrator can publish his configuration to his server without taking care of the KeepCustomConnection.inf, KeepCustomFunctions.inf, KeepCustomArticles.inf files he has in his installation folder because those files will be ignored by his clients.

New: GetDataFromMinute function enriched with support for SQL

The function GetDataFromMinute has been enriched to support SQL. The SQL code is supported only when the function is invoked from the overhead workbook.

We remind you that the regular supported syntax of the function in the overhead workbook is as follows:

 

GetDataFromMinute(FieldToCheck, ValueInFieldToCheck, FieldToSum, UseWBSQuantities, UseOptions, ShowGrouped)

 

Typically the following GetDataFromMinute("MATERIAL_KindID","ELECCABLE","MATERIAL_TotalCost",FALSE,FALSE,FALSE) returns the sum of lines for the column MATERIAL_TotalCost when the column MATERIAL_KindID contains ‘ELECCABLE

And the following: GetDataFromMinute("MATERIAL_KindID","ELECCABLE","MATERIAL_CostPerUnit",TRUE,FALSE,FALSE) returns the sum of lines for the column MATERIAL_CostPerUnit multiplied by the WBS quantities (taking into account the possible quantities in WBS branches) when the column MATERIAL_KindID contains ‘ELECCABLE

 

Now, you can use a much more flexible syntax by using directly SQL statements:

GetDataFromMinute("{SQL}";"[MATERIAL_KindID]='ELECCABLE'";"MATERIAL_TotalCost";TRUE;FALSE;FALSE) is equivalent to GetDataFromMinute("MATERIAL_KindID","ELECCABLE","MATERIAL_TotalCost",FALSE,FALSE,FALSE)

 

With SQL you can do much more like testing other fields, E.g.: GetDataFromMinute("{SQL}";"[MATERIAL_KindID]='ELECCABLE' AND [WORKFORCE_KindID=’PLUMB’ AND [Quantity] > 10";"MATERIAL_TotalCost";TRUE;FALSE;FALSE)

 

Rules to write simple SQL statements:

 

The second parameter must be a valid SQL statement and the first parameter must be “{SQL}” (between curly brackets).

In the SQL statement passed, the fields must appear between brackets and the texts must appear between single quotes as shown above.

The decimal separator when needed must be a dot. The coma has other significance in SQL language.

 

This new syntax is very powerful because you can almost use any valid SQL statements. These formulas are not able to return a specific text in case of syntax error, you will simply get #N/A in the cell or #Error. Use a macro if you need more information.

 

Keep in mind that this syntax is supported only in the overhead workbook.

 

WARNING: Each time you use GetDataFromMinute, QDV must run a query and build a view to deliver the result. Despite the predictive algorithm which runs the queries only when it’s necessary (when data is changed), such operations are time-consuming. So please, use these statements only when you absolutely need them and use just a few. Never attempt to feed large tables with such formulas. When you need this, consider using the built-in lists if possible or build a specific macro.