Sql I';I’我不明白为什么当我';我没有使用任何整数?

Sql I';I’我不明白为什么当我';我没有使用任何整数?,sql,vb.net,datagridview,Sql,Vb.net,Datagridview,我试图从DataGridView获取购买日期,并将其与文本框中的字符串进行比较,如果它们相等,则选择DataGridView中的当前记录。 但是我得到“$exception{”从字符串“Purchase_Date”到类型“Integer”的转换无效。“}System.InvalidCastException”。我不明白为什么即使我没有使用整数,我也会得到这个异常 以下是我面临此问题的代码: Dim i=0 对于dgPurchases.Rows中作为DataGridViewRow的每一行 Dim

我试图从DataGridView获取购买日期,并将其与文本框中的字符串进行比较,如果它们相等,则选择DataGridView中的当前记录。 但是我得到“$exception{”从字符串“Purchase_Date”到类型“Integer”的转换无效。“}System.InvalidCastException”。我不明白为什么即使我没有使用整数,我也会得到这个异常

以下是我面临此问题的代码:

Dim i=0
对于dgPurchases.Rows中作为DataGridViewRow的每一行
Dim currentdate As String=格式(dgPurchases.Rows(“Purchase_Date”).ToString(),
“日/月/年”)
如果是StrComp(currentdate,purchasedate),则
dgPurchases.Rows(i).Selected=True
如果结束
i+=1
下一个

对于每个循环使用一个
并保留一个计数器是没有意义的。决定是要为
循环设置一个
,还是为每个
循环设置一个
,然后正确使用您选择的循环

如果为每个
循环选择一个
,请使用循环控制变量:

将每一行作为dgPurchases.Rows中的DataGridViewRow
Dim currentdate As String=格式(行单元格(“购买日期”),“dd/MM/yyyy”)
如果是StrComp(currentdate,purchasedate),则
row.Selected=True
如果结束
下一个
如果为
循环选择一个
,则它提供一个循环计数器:

对于i=0到dgPurchases.Rows.Count-1
Dim currentdate作为字符串=格式(dgPurchases.Rows(i).Cells(“购买日期”),“dd/MM/yyyy”)
如果是StrComp(currentdate,purchasedate),则
dgPurchases.Rows(i).Selected=True
如果结束
下一个
当您使用循环计数器的唯一目的是为单个列表编制索引时,每个循环的
明显优于其他循环


我应该特别提到,解决您问题的部分是列名用于索引行的
单元格
集合,而不是网格的
集合。

我认为您的意思不是
dgspurchases.Rows(“购买日期”)
<代码>行
应为和整数参数。除了我的答案中提到的以外,该代码有很多错误。首先,从名为
purchasedate
的列中获取一个值,并将其分配给名为
currentdate
的变量,然后将其与名为
purchasedate
的变量进行比较。您可能使用了错误的变量,或者您的变量命名非常糟糕。除此之外,您不应该为了比较日期而比较
字符串。您应该比较
日期
。如果您不想将数字转换为字符串来比较它们(请告诉我您不想),那么为什么要转换日期呢?我假设
currentdate
实际上是今天的日期,
purchasedate
是网格中的值。在这种情况下,您可以这样做:
如果CDate(row.Cells(“Purchase\u Date”)=Date.Today,那么
。无论你在处理什么日期,原则都是成立的。将日期保留为日期<代码>字符串
仅用于显示真正为文本的数据,例如名称。