我們是一個離羣值。我們使用OCX並以winforms連接到它。
然後,我們有標準的C#代碼與一切debuggable,它使每個人都在這裏非常愉快indead後,使用無盡的時間調試javascripts。
用戶使用QV選擇東西,然後我們在OCX中使用選定的事件,並從QV中提取選定的數據進行後處理,並使用動態SQL更新標記QV數據。
我並不非常推薦這種方法,但它在使用QV進行數據挖掘並處理所選數據時大大增加了我們的開發產出。
下一個項目我們不打算使用OCX。但所有的buisness邏輯和後處理都是通過vbscript宏訪問的COM可見的c#dll。
編輯。更多細節
這是當前設置通過OCX與文檔通信
更改選擇
axQlikMainApp.ActiveDocument.Fields("%UnitID").Clear();
var selSuccess = axQlikMainApp.ActiveDocument.Fields(cls.QlikView.QvEvalStr.Fields.UnitId).Select("(%UnitID)");
重置表對象
axQlikMainApp.ActiveDocument.ClearCache();
axQlikMainApp.ActiveDocument.GetSheetObject("Document\\MySheetObjectName").Restore();
從QV
得到一個字符串
string res axQlikMainApp.ActiveDocument.Evaluate("=concat(Distinct myField1 &'|' & MyField2,'*')");
並且可能會變得非常複雜
string res axQlikMainApp.ActiveDocument.Evaluate("=MaxString({1 <%UnitID= {" + sUnitIds + @"}>}'<b>' & UnitName & '</b> \r\n bla bla bla:' & UnitNotesPlanning) & " +
"'\n title1: ' & Count({1 <%UnitID= {" + sUnitIds [email protected]"},%ISODate={'" + qlickViewIsoDate + "'},Need = {'Ja'}" + MinusCalc + ">}Distinct %CivicRegNo) & " +
"'\n Title2: ' & Count({1 <%UnitID= {" + sUnitIds + @"},%ISODate={'" + qlickViewIsoDate + "'} " + recallMinusCalc + ">}DISTINCT RevGUID) & " +
"'\n Title3: ' & Count({1 <%UnitID= {" + sUnitIds + @"},%ISODate={'" + qlickViewIsoDate + "'},Need2 = {'Ja'}>}Distinct %CivicRegNo) & '" +
"\n Title4:' & MinString({1 <%UnitID= {" + sUnitIds + @"},FutureBooking = {1}>} Date(BookingStart) & ' Beh: ' & If(IsNull(ResourceDisplayedName),'_',ResourceDisplayedName)) &'" +
"\n Title5:' & MaxString({1 <%UnitID= {" + sUnitIds + @"},FutureBooking = {0}>} Date(BookingStart) & ' Beh: ' & If(IsNull(ResourceDisplayedName),'_',ResourceDisplayedName)) &''" +
" & MaxString({1 <%UnitID= {" + sUnitIds + @"}>}if(UnitGeo_isRelocatedOnSameGeo=1,'\nOBS! Multiple geo addresses. Zoom!',''))" +
""
);
您能否提供更多信息?也許你可以將加載分割成不同的部分並在QVD文件之間創建。 – smartmeta
@smartmeta E.g.我想將列表框中的當前數據存入我的程序,而不是讓宏爲我做這件事。 – Disasterkid
我不明白。請添加一些示例數據和部分加載腳本 – smartmeta