2011-04-23 52 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