C#中使用DataGridView按數字大小排序顯示access中特定資料
阿新 • • 發佈:2018-12-03
access中表資料如下圖所示:
該表中[試樣編號]是以字元即文字格式填寫在表中。
C#中使用DataGridView顯示上述access表中指定資料,但資料需要按照[試樣編號]的數字大小排列。
如果程式碼如下ORDER BY [試樣編號],則DataGridView顯示中顯示的資料是以試樣編號的字元順序排列!
SQLCmd = "SELECT 試樣編號,m值,試驗日期,備註 FROM 試驗資料_MCGS WHERE [任務單編號]="
+ "'" + taskinf.PjtSheetNo + "'" + " AND" + "([試驗名稱]=" + "'" + taskinf.TstName + "'"
+ " OR" + "[試驗名稱]=" + "'" + taskinf.TstName + "補做" + "'" + ")" + " ORDER BY [試樣編號] ";
tstDataDataSet = tstDataAccess.ReturnDataSet(SQLCmd);
將SQL語句改為ORDER BY val(試樣編號)或者ORDER BY CInt(試樣編號),則可達到預期目的!
SQLCmd = "SELECT 試樣編號,m值,試驗日期,備註 FROM 試驗資料_MCGS WHERE [任務單編號]="
+ "'" + taskinf.PjtSheetNo + "'" + " AND" + "([試驗名稱]=" + "'" + taskinf.TstName + "'"
+ " OR" + "[試驗名稱]=" + "'" + taskinf.TstName + "補做" + "'" + ")" + " ORDER BY val(試樣編號) ";
tstDataDataSet = tstDataAccess.ReturnDataSet(SQLCmd);
當試樣編號為NULL時, ORDER BY val(試樣編號) 和 ORDER BY cint(試樣編號) 均會出錯
ORDER BY val(試樣編號) 錯誤提示為 標準表示式中資料型別不匹配
ORDER BY cint(試樣編號) 錯誤提示為 無效的NULL使用
為避免出現這種情況,SQL語句改為
SELECT * FROM 試驗資料_MCGS ORDER BY CInt(IIf(IsNull(試樣編號),'0',試樣編號))