1

コードをデバッグしているときに、次のような内部例外が見つかりました。

インデックス付きプロパティを評価するには、プロパティを修飾する必要があり、ユーザーが引数を明示的に指定する必要があります。

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文字列は、何も変更せずに完璧に機能します。私が変更したのは、この例外が発生し始めたときのクエリ文字列だけでした

4

1 に答える 1

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 & _

vbCrLfVBイズムです。必要に応じて、使用できますEnvironment.NewLine

現時点では、この文字列連結による文字列内に新しい行やスペースはありません。たとえば、2 行目と 3 行目は次のように結合されます。

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

おそらく、これはあなたが望んでいたものではありません。

于 2013-07-03T09:14:26.777 に答える