2011-04-23 59 views
0

編碼問題參數值設置等於DataColumn的值在VB.Net

嗨,大家好我有這個問題,在我試圖分配的一些參數與存儲在數據的某些值存儲過程表。在代碼中,我可以將參數值設置爲數據表,並給出一個列標題或索引而沒有問題,但是當它試圖在運行時執行時,它會彈出。

我得到的錯誤是「無法將參數值從DataColumn轉換爲字符串」的一種變體,具體取決於我如何嘗試分配值。

數據類型在代碼中的其他地方都是正確的,所以我非常肯定這不是問題,我想我只是以這種錯誤的方式去做。

我此位碼爲其他


Try 
ConnectionAttempt.Open() 
Try 
    With NewYearCommand_Dates 
     .CommandType = CommandType.StoredProcedure 
     .CommandText = "DatesINSERT" 
     .Parameters.Add(New SqlParameter("@AcademicYear", SqlDbType.VarChar)) 
     .Parameters.Add(New SqlParameter("@YearStart", SqlDbType.Date)) 
     .Parameters.Add(New SqlParameter("@YearEnd", SqlDbType.Date)) 
     .Parameters.Add(New SqlParameter("@Term1Start", SqlDbType.Date)) 
     .Parameters.Add(New SqlParameter("@Term1End", SqlDbType.Date)) 
     .Parameters.Add(New SqlParameter("@Term2Start", SqlDbType.Date)) 
     .Parameters.Add(New SqlParameter("@Term2End", SqlDbType.Date)) 
     .Parameters.Add(New SqlParameter("@Term3Start", SqlDbType.Date)) 
     .Parameters.Add(New SqlParameter("@Term3End", SqlDbType.Date)) 
     .Parameters("@AcademicYear").Value = dates.Columns("AcademicYear") 
     .Parameters("@YearStart").Value = dates.Columns("YearStart") 
     .Parameters("@YearEnd").Value = dates.Columns("YearEnd") 
     .Parameters("@Term1Start").Value = dates.Columns("Term1Start") 
     .Parameters("@Term1End").Value = dates.Columns("Term1End") 
     .Parameters("@Term2Start").Value = dates.Columns("Term2Start") 
     .Parameters("@Term2End").Value = dates.Columns("Term2End") 
     .Parameters("@Term3Start").Value = dates.Columns("Term3Start") 
     .Parameters("@Term3End").Value = dates.Columns("Term3End") 
     .Connection = ConnectionAttempt 
     .ExecuteNonQuery() 
     .Dispose() 
    End With 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
End Try 

事情我已經試圖讓這項工作是對。價值=日期位的所有變化,如

.Value = dates(0)(so using column index)

.Value = dates.columns(0)(再次使用列索引)

我也試過聲明變量,並將它們的值設置爲列中的值,但代碼返回錯誤,指出「類型'System.Data.DataColumn'的值不能轉換爲字符串」。

我應該指出,我在這個子文件中一次爲3個表執行此操作,其中2個將只有一行數據,但第三個數據行具有不確定的數目。

恐怕我不知道該怎麼辦。我帶領我的隊友和我的講師相信這應該起作用,當然它會起作用,但證據不是這樣。

如果我完全用錯誤的方式去談論這個問題,有人能告訴我我應該做什麼嗎?

歡呼

回答

1

此:

dates.Columns("AcademicYear") 

是一個整個列。您只能分配一個的值。

例如,使用數據表的第一行:

.Parameters("@AcademicYear").Value = dates.Rows[0]("AcademicYear") 
+0

實際上,我可以同時與3代表這樣做,但他們各自遭遇了同樣的問題,我想我應該提到的是,我的問題。 無論如何,其中2個只有一行,但第三個行中有不確定的行數,那麼我將如何處理這種情況? – Archaon6044 2011-04-23 18:52:58

+0

@ Archaon6044 - 他們有沒有一行也沒關係。您仍然需要一次訪問一行(您可以訪問每個表中的一行)。 – Oded 2011-04-23 18:57:19

+0

哦,這不是我的意思,實際上編號行已經解決了前兩個表的問題,但我不知道如何將它應用到第三個表,我不知道現在有多少行(這個表格從輸入獲取數據到數據網格視圖) 我想我可以使用For Each循環,但它返回了關於失敗類型轉換的相同錯誤 我用於我的循環的代碼是 '對於每個drPupilItem作爲DataRow在學生中使用。行 .Parameters(「@ Class」)。Value = pupils.Columns(「Class」)' – Archaon6044 2011-04-23 19:46:04