索引属性错误

时间:2013-07-03 08:52:01

标签: sql vb.net datagridview

在调试我的代码时,我发现了一个内部异常,其内容如下:

为了评估索引属性,必须对该属性进行限定,并且必须由用户显式提供参数。

在sql中,脚本平滑地运行返回所有行,但在vb中它不返回或查找任何行。我已检查主键是否在表中并已定义。我怎样才能解决这个问题?我有一个返回行的proir查询,但是一旦我添加了这个新查询,内部异常就来了....除了查询字符串,我没有更改任何内容。

这就是我所做的:

    Public Sub BindDeliveredItems()
    Proir if statemets....
    Else
        queryString = "select distinct LS.[Route], LS.[SubRoute], LS.[Truck], Convert(VARCHAR(10), LS.[Date], 121) AS Date, LS.[DriverAssistantContract]" & _
                        ",((del.CT*100 )/ todel.TCT) as Score" & _
                        "from [Warehouse].[dbo].[LoadSheet] LS" & _
                        "left join (select [Truck],[Date],[Status], count([Status]) CT from  [Warehouse].[dbo].[LoadSheet]" & _
                        "WHERE  status='Delivered'" & _
                        "group by [Truck],[Date],[Status]) Del" & _
                        "on LS.truck=Del.truck and LS.[Date]=del.[Date]" & _
                        "left join (select [Truck],[Date], count([Truck]) TCT from  [Warehouse].[dbo].[LoadSheet]" & _
                        "group by [Truck],[Date]) todel" & _
                        "on LS.truck=toDel.truck and LS.[Date]=todel.[Date]" & _
                        "WHERE ls.[Date] = '2013-07-03'" & _
                        "AND ls.[Truck] = 'BX 39 LK GP'"
    End If

   Dim ds As DataSet = GetData(queryString)
    If (ds.Tables.Count > 0) Then
        gvDeliveredItems.DataSource = ds
        gvDeliveredItems.PageSize = (10)
        gvDeliveredItems.AllowPaging = True
        gvDeliveredItems.DataBind()
    End If
End Sub

    Function GetData(ByVal queryString As String) As DataSet
    Dim ds As New DataSet()
    Try
        Dim adapter As New SqlDataAdapter(queryString, SQLCon)
        adapter.Fill(ds)
    Catch ex As Exception
        MessageBox(ex.Message)
    End Try
    Return ds
End Function

编辑:

我第一次看到异常就在这一行

    Dim ds As DataSet = GetData(queryString)

在这一行上,例外情况也是如此:

    If (ds.Tables.Count > 0) Then

我以前的sql字符串工作完美而不会改变任何东西。我唯一改变的是它开始给我这个例外时的查询字符串

1 个答案:

答案 0 :(得分:3)

我建议在查询中添加更多空格,例如:

queryString = "select distinct LS.[Route], LS.[SubRoute], LS.[Truck], Convert(VARCHAR(10), LS.[Date], 121) AS Date, LS.[DriverAssistantContract]" & vbCrLf & _
   ",((del.CT*100 )/ todel.TCT) as Score" & vbCrLf & _
   "from [Warehouse].[dbo].[LoadSheet] LS" & vbCrLf & _

vbCrLf是一个VB主义。如果您愿意,可以使用Environment.NewLine

目前,此字符串连接中的字符串没有新行或空格,因此,例如,第二行和第三行连接在一起:

,((del.CT*100 )/ todel.TCT) as Scorefrom [Warehouse].[dbo].[LoadSheet] LS

大概不是你想要的。