1. 程式人生 > >C#中使用DataGridView按數字大小排序顯示access中特定資料

C#中使用DataGridView按數字大小排序顯示access中特定資料

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',試樣編號))