2012-07-17 16 views
0

具有一個DataGridView從數據在MySQLVB.NET和MySQL:DataGrid的錯誤顯示MONTHNAME

查詢顯示MONTHNAME麻煩:

SELECT ItemName, Description, PurchaseDate, MONTHNAME(PurchaseDate) AS PurchaseMonth FROM tblItems 

錯誤:

System.ArguementException:Parameter is not valid

顯示月份編號,使用MONTH(PurchaseDate)的作品完美,但當我嘗試顯示月份名稱我得到一個datagrid錯誤。當我在MySQL中運行SQL時,它會返回預期的結果。

當我添加一個DataError事件時,它只在MONTHNAME(PurchaseDate)應該是的字段中顯示一個紅色的exclimation標記。

+1

被定義爲只接受INT值是網格的單元格? – Madhivanan 2012-07-17 11:29:21

+0

不,嘗試在vb代碼中將字符串'PurchaseMonth'打印到單元格中,並且顯示正常 – Eireash 2012-07-17 11:42:21

+1

您使用強類型的'DataTable' /'TableAdapter'嗎? – sloth 2012-07-17 12:17:04

回答

0

解決了它。 即使當在數據庫中直接運行MONTHNAME(而purchaseDate)工作,我從VB.NET

在通過修訂後的SQL時要使用演員在SQL字符串:

SELECT ItemName, Description, PurchaseDate, CAST(MONTHNAME(PurchaseDate) AS CHAR) AS PurchaseMonth FROM tblItems 
0

你爲什麼要去做?

只加載原始日期和使用格式字符串來獲取名稱

dim purchaseDate as DateTime = DateTime.Now 

dim purchaseMonth as String = purchaseDate.Format("MMMM") 
' or 
dim purchaseMonth as String = String.Format("{0}", purchasDate") 

數據綁定還支持格式化。

此方法的優點,它尊重從用戶環境中的當地人:

' english: July 
' german: Juli 
+0

我試圖直接從數據集填充網格 – Eireash 2012-07-18 08:03:09

+0

這應該不是問題,您可以將數據集綁定到網格,並將列的格式(在網格中,而不是數據表中)設置爲「 MMMM」。不知道你是否使用WinForms或ASP.NET,但它應該是'datagrid.Columns(「PurchaseDate」)。DefaultCellStyle.Format =「MMMM」' – 2012-07-18 10:10:16