Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I have developed an application allows the user to write comments, Input Fields, that are saved to an SQL 2005 database. At the end of the macro the idea was to have the Qlikview tables updated with this comment.
About 30 users will use this application simultaneously, the comment written by one user should instantly appear for all other users.
This works fine on a stand-alone set-up but doesn't work at all on a server. I've read numerous threads in this forum but I still don't quite grasp the functionality available on Qlikview.
We had some external help that tried to resolve this but their solution doesn't provide what we're looking for.
Therefore I turn to you guys for help! [:)]
I've been able to read about the follwing solutions;
EDX
This is the solution that the consultants went for but as I understand this solution has some drawbacks.
The application will loose connection to the server for a few seconds when updating the data. All users will loose connection when a comment is written. A work around would be to save the data with one macro and update the Qlikview table (with less frequency) with another macro. This however would mean the data isn't instantly available.
Activedocument.PartialReload
This solution I can't fully understand.
* I've implemented it and it works perfectly on a stand-alone unit.
* When uploaded to a server it doesn't work at all. There's an option in publisher to allow Partial Reload but this doesn't help.
* From what I understood the idea is to have an EDX call but then I can't see the purpose of the function "Activedocument.PartialReload"
Dynamic Data Update
Qlikview 9 should allow real-time data update. It requires an additional license on Qlikview Server?!
What solution would you guys suggest for our application?
* Save data to SQL database
* Instantly update the information in the Qlikview Table to all users when data is saved to an SQL table.
* No loss of connection to server
* Works on AJAX or IE plug-in client
Any input would be gratefully appreciated!
Best Regards,
Jonas
---
Licenses
Qlikview 9
Qlikview Publisher
Qlikview Server
A possible solution is to use commonly available packages to build a data entry system in tandem with QV.
The atricle below explains in detail how to setup IIS and sql server to create a simple data entry form in php that you can launch via the launch url function of qlikview, allow the users to submit commentery and any other data you wish to the DB securely and instantly without kicking users out of the application (as well as logging the owner and timstamp of the commentery).
http://articles.sitepoint.com/article/sql-server-php
you can still use EDX to trigger the reloading of the app (with any commentery updated) via the php script and as the users are not using qlikview to write the commentery any one losing connection at this point is minimally impacted (although in my experience, edx updates are perceived as by the end user as a few seconds lag)
Hi Jonas,
Actually I am working in a company where GL users (around 10 users) have the need to enter, from a QlikView Document, some sort of information in a QlikView table (extra accounting entries) and then the "new data" should be show to all Gl users.
To accomplish this we decided to use macros + EDX.
The macro trigger two action, (1) export data to .TXT and then (2) lunch a EDX task (Open URL, here we had used a custom ASP program to lunch the Task into QV Server) which reload the Qv Document that was configured as follow: "Server performs refresh automatically without client action" (under Settings > Document Properties> Server )
May someone else have another solution (may be better), but this one is working well for us
Flavio
We've used the code below to trigger a reload on the server - called via the External URL action - where the URL is a vbs script on a network drive.
Dim url, doc, uid, pass
url = "http://QLIVIEWSERVER/qtxs.asmx?"
doc = "taskname.qvw"
userID = ""
pass = ""
MsgBox ReloadEDX(url, doc, userID, pass)
Function ReloadEDX (dsURL, document, userID, password)
Dim requestKey, xmlhttp, requestData, httpResult
set xmlhttp = createobject("msxml2.xmlhttp.3.0")
xmlhttp.open "post", dsURL, false, userID, pass
requestData = "<Global method=""GetTimeLimitedRequestKey"" />" & vbCrLf
xmlhttp.send requestData
requestKey = xmlhttp.responseXML.selectSingleNode("//GetTimeLimitedRequestKeyResult").text
requestData = "<Global method=""RequestEDX"" key=""" & requestKey & """><i_TaskIDOrTaskName>" & document & "</i_TaskIDOrTaskName><i_Password /><i_VariableName /><i_VariableValueList /></Global>" & vbCrLf
xmlhttp.open "post", dsURL, false, userID, pass
xmlhttp.send requestData
httpResult = xmlhttp.responseXML.xml
If xmlhttp.responseXML.selectSingleNode("//TaskStartResult") Is Nothing Then ReloadEDX = httpResult
If xmlhttp.responseXML.selectSingleNode("//TaskStartResult").text = "Success" Then ReloadEDX = "Reloading of " & document & " has been started"
ReloadEDX = httpResult
End Function
Note the doc name must match the naming convention you use in EMC.