Vb.net 使用VB和DataRow Select语句时出现参数语法错误
有人能告诉我为什么我要硬编码参数值吗,这行代码有效Vb.net 使用VB和DataRow Select语句时出现参数语法错误,vb.net,parameters,datarow,Vb.net,Parameters,Datarow,有人能告诉我为什么我要硬编码参数值吗,这行代码有效 Dim result() As DataRow = dtGroupMaster.Select("GroupID = 'TDAX015A'") 但是如果我尝试使用我正在传递的实际参数,这一行不起作用 Dim result() As DataRow = dtGroupMaster.Select("GroupID = @cGID") 我得到一个错误: 找不到列 以下是整个功能: Private Function GetGroup(ByVal c
Dim result() As DataRow = dtGroupMaster.Select("GroupID = 'TDAX015A'")
但是如果我尝试使用我正在传递的实际参数,这一行不起作用
Dim result() As DataRow = dtGroupMaster.Select("GroupID = @cGID")
我得到一个错误:
找不到列
以下是整个功能:
Private Function GetGroup(ByVal cGID As String) As Boolean
Dim lValidGroup = False
Dim dtGroupMaster As DataTable = NewBenefitsDataSet.GroupMaster
'Test valid group
cGID = "TDAX015A"
' Dim result() As DataRow = dtGroupMaster.Select("GroupID = @cGID") - doesn't work
'Dim result() As DataRow = dtGroupMaster.Select("GroupID = " + cGID) - doesn't work
Dim result() As DataRow = dtGroupMaster.Select("GroupID = 'TDAX015A'") - works fine
For Each row As DataRow In result
lValidGroup = True
Next
MessageBox.Show(lValidGroup)
Return lValidGroup
End Function
更新:我用这个语法让它工作
Dim result()作为DataRow=dtGroupMaster.Select(“GroupID=”“+cGID+””)只是为了澄清一下,我添加了“Test Valid Group”这一行,如果我从调用程序中传递了函数,就试图强制函数-put,我得到了相同的结果。的语法似乎没有使用参数的任何规定。您可能打算将
Dim result()作为DataRow=dtGroupMaster.Select($“GroupID='{cGID}')
。$
执行“字符串插值”,并且需要在值周围加上单引号。如果您使用的是早期的VS,则Dim result()作为DataRow=dtGroupMaster。选择(“GroupID=”&cGID&“”)
。请注意,VB.NET中的字符串连接运算符是&
,而不是+
。你可以用后者得到不想要的结果。谢谢安德鲁,我做了这个改变,效果很好……感谢你。@Jeffreyclark你可以接受你自己的答案。它不会给你重复次数,但会将问题标记为已回答。