教學網站:
The R Project for Statistical Computing - 官網
中華R軟體學會
陳鐘誠網站
2015年6月15日 星期一
2015年3月4日 星期三
AngularJS
- 要套用AngularJS必須於網頁script中引用下段文字
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
- ng指令(ng-directives):ng打頭的html屬性
ng-app:定義此頁面為AngularJS Application,並指定此為root element,一個頁面只能有一個,告訴AngularJS 包在<div>的是"owner",需要解譯。
ng-init:初始化值變數
ng-controller:是一Javascript Object,定義controller,在page load時執行。
ng-model:Bind application data到HTML controls
ng-bind:Bind application data 到 HTML view
ng-repeat:告訴AngularJS這是一個重複性的element,如選單中的選項。
ng-disable:將其他element屬性設成disable
ng-show:顯示或隱藏html element
ng-hide:隱藏或顯示html element
ng-click:定義click event
- Expressions:寫在{{ expression }}中
必須要包在ng-app中,寫法與javascript類似,包含literals、operators、和variables。
例如:{{ 5 + 5 }} 、 {{ firstName + " " + lastName }}、{{ quantity * cost }}
Filters:基本的格式化
currency 金錢格式filter 取subitemlowercase 轉小寫orderBy 排序uppercase 轉大寫
- XMLHttpRequest($http.get):讀遠端server資料
2014年7月4日 星期五
將DataSet轉成Excel
整個是一個Application
Book1是一個活頁簿
Sheet1是一個工作表
ColumnName是標題1、標題2、標題3
Cell是裡面的表格

使用套件Microsoft.Office.Interop.Excel;
//new 一個 Excel
Application application = new Application();
//在excel中加入新的活頁簿
Workbook wBook = application.Workbooks.Add(Type.Missing);
for (int z = 0; z < dsData.Tables.Count; z++)
{
//建立新的工作表
Worksheet workSheet = (Worksheet)wBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workSheet.Name = dsData.Tables[z].TableName;
//column headings
for (int i = 0; i < dsData.Tables[z].Columns.Count; i++)
{
Range headRange = (Range)workSheet.Cells[1, i + 1];
headRange.Font.Bold = true; //粗體
headRange.Value2 = dsData.Tables[z].Columns[i].ColumnName;
}
//rows
for (int i = 0; i < dsData.Tables[z].Rows.Count; i++)
{
//cells
for (int j = 0; j < dsData.Tables[z].Columns.Count; j++)
{
workSheet.Cells[(i + 2), (j + 1)] = dsData.Tables[z].Rows[i][j];
}
}
}
wBook.SaveAs(filePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
XlSaveAsAccessMode.xlShared, XlSaveConflictResolution.xlLocalSessionChanges, false, Type.Missing, Type.Missing, Type.Missing);
application.Quit();
其中Workbook.SaveAs的參數可參考以下連結:
2014年6月19日 星期四
Crystal Report 錯誤 - (0x8002000B): 無效的索引。
System.Runtime.InteropServices.COMException
(0x8002000B): 無效的索引。 (發生例外狀況於
HRESULT: 0x8002000B (DISP_E_BADINDEX)) 於
CrystalDecisions.ReportAppServer.DataDefModel.FieldsClass.get_Item(Int32 Index)
於
CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions.get_Item(Int32
index) 於
CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinitions.get_Item(String
fieldName) 於
CrystalDecisions.CrystalReports.Engine.ReportDocument.SetParameterValue(String
name, Object val)
以上很明顯看出是設定參數時發生錯誤。
報表的欄位可以分很多種,如下圖:
//這裡是設定資料庫欄位的綁定
rpDoc.SetDataSource(dtFinall);
//這裡是設定參數欄位的綁定
rpDoc.SetParameterValue("formno", dtFinall.Rows[0]["formno"].ToString());
rpDoc.SetParameterValue("orderno", dtFinall.Rows[0]["orderno"].ToString());
rpDoc.SetParameterValue("budget_code", dtFinall.Rows[0]["budget_code"].ToString());
rpDoc.SetParameterValue("batchno", dtFinall.Rows[0]["batchno"].ToString());
rpDoc.SetParameterValue("vat_num", dtFinall.Rows[0]["vat_num"].ToString());
rpDoc.SetParameterValue("supp_nm", dtFinall.Rows[0]["supp_nm"].ToString());
rpDoc.SetParameterValue("addr", dtFinall.Rows[0]["addr"].ToString());
rpDoc.SetParameterValue("work", dtPur_Basic.Rows[0]["purchaser_nmc"].ToString());
而錯誤主要是找不到參數欄位,明明有formno、orderno等欄位,但是在參數欄位中卻沒有設定,程式match不到就出錯了。
This error occurs when your
parameters not matched in both reports & coding. May be your parameter name is wrong. So verify the parameters & parameter names are same in report & your coding.2013年9月24日 星期二
超義科技 Power Process BPM Suite 6.0
最近工作上用到的開發簽核輔助工具,包括流程引擎、流程設計工具、流程管理平臺、使用者申請及簽核的BPM工作區,還有整合其他系統所需的整合管理伺服器等。
該套系統主要的概念是透過組織設定、流程設計抓取組織的設定,然後進行簽核。我沒有使用他所提供的簽核頁面,而是自己開發表單(ASP.Net)透過該公司提供的Web Service、再串流程設計工具,進行開發。
我的流程很簡單,但執行起來不簡單,細節很多:
期間碰到不少問題,目前終於克服,進入最後細節修正階段。
該套系統主要的概念是透過組織設定、流程設計抓取組織的設定,然後進行簽核。我沒有使用他所提供的簽核頁面,而是自己開發表單(ASP.Net)透過該公司提供的Web Service、再串流程設計工具,進行開發。
我的流程很簡單,但執行起來不簡單,細節很多:
![]() |
| 功能增改申請單簽核流程 |
期間碰到不少問題,目前終於克服,進入最後細節修正階段。
- 開發的API文件相當不齊全,很多都只能用猜測的或問廠商窗口。
- 流程設計、管理平台、Web Service提供的模組不一致,導致debug困難。
- 流程設計中的程式撰寫,使用Javascript及Java混合體,很難判斷該用什麼語言,容易混淆,而且沒有debug工具,語法檢測沒什麼效用,不會告知程式有沒有錯誤。
- Web Service的建置有問題,廠商處理速度很慢,還一直覺得是我引用錯誤的問題。
- 呼叫web service錯誤產生的錯誤訊息不夠明確,很難判斷是程式錯還是web service錯。
- 子流程的部分,因為我要傳出所有分析人,其中可能有加簽者,不太好解。
- 組織沒有設定部門主管,只有用角色層級去做區分,故簽核人員可能無法直接選取,造成比較大的麻煩(這是本公司的問題)。
- 整體而言,套用該套工具,要對提供的模組夠熟悉才能節省時間,但是因為教育訓練不夠深入,再加上文件相當不齊全,很多問題都是實作時產生,進入的門檻相對高。
補充:
- 20131007,因為是呼叫既定的web service,無法設定tracsaction的起始和結束點,可能我系統已經存檔了,但是流程引擎exception會難以處理。
2013年7月11日 星期四
DataSet建立DataRelation
DataRelation的基本觀念在於,DataTable與DataTable之間,如果要建立關聯性,必須存在於同一個DataSet,再將DataTable加入分為Parent及Child的概念,建立關聯性程式碼如下:
private void CreateRelation()
{
// 建立Parent的關聯欄位
DataColumn parentColumn = DataSet1.Tables["Customers"].Columns["CustID"];
// 建立Chlid的關聯欄位
DataColumn childColumn = DataSet1.Tables["Orders"].Columns["CustID"];
// 建立關連性
DataRelation rel = new DataRelation("CusOrd", parentColumn, childColumn);
// 將關聯性置於DataSet中
DataSet1.Relations.Add(rel);
}
讀取資料的方是如下:
//由Parent角度讀取Child資料
for(DataRow row in DataSet1.Tables["Customers"].Rows)
{
//多筆->回傳陣列
DataRow[] dr = row.GetChildRows("CustomersOrders");
for(int i=0; i< dr.count; i++)
{
//process dr (即關聯中的Orders)資料
}
}
//由Child角度讀取Parent資料
foreach(DataRow row in DataSet1.Tables["Orders"].Rows)
{
//單筆
DataRow parentRow = row.GetParentRow("CustomersOrders");
}
2013年6月19日 星期三
Crystal Report無法載入檔案或組件System.Web.Extensions
Crystal Report在執行時期出現以下錯誤:
找了很久以為是參考的dll檔版本錯誤,結果發現dll並沒有直接相關,後來找到原因是web.config的<runtime>(組件繫結)設定要修改,由原本的1.1.0.0改為2.0.0.0,如下:
<!--組件繫結-->
<runtime>
<!--組件版本重新導向和組件位置-->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!--封裝組件的繫結原則和組件位置-->
<dependentAssembly>
<!--包含有關組件的識別資訊-->
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<!--將一個組件版本重新導向為另一個版本-->
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
無法載入檔案或組件 'System.Web.Extensions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)
找了很久以為是參考的dll檔版本錯誤,結果發現dll並沒有直接相關,後來找到原因是web.config的<runtime>(組件繫結)設定要修改,由原本的1.1.0.0改為2.0.0.0,如下:
<!--組件繫結-->
<runtime>
<!--組件版本重新導向和組件位置-->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!--封裝組件的繫結原則和組件位置-->
<dependentAssembly>
<!--包含有關組件的識別資訊-->
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<!--將一個組件版本重新導向為另一個版本-->
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
訂閱:
文章 (Atom)


