我有一個相當長的SQL語句組合給我一個3行結果,我想在Telerik Ticker中使用。據我所見,Telerik Ticker只接受Linq或Entity數據源。LinqDataSource與複雜的SQL
所以我有一個代碼爲DataSourceID = "LinqDataSource1"
其中有一個OnSelecting
事件。
我的代碼背後都有...
Protected Sub LinqDataSource1_Selecting(sender As Object, e As LinqDataSourceSelectEventArgs) Handles LinqDataSource1.Selecting
Dim db As New TestDataContext
Dim tickerquery As New StringBuilder
tickerquery.Append("DECLARE @ALL_Total int ")
tickerquery.Append("DECLARE @ABC_Total int ")
tickerquery.Append("DECLARE @XYZ_Total int ")
tickerquery.Append("DECLARE @ALL_TypeA int ")
tickerquery.Append("DECLARE @ABC_TypeA int ")
tickerquery.Append("DECLARE @XYZ_TypeA int ")
tickerquery.Append("DECLARE @ALL_TypeB int ")
tickerquery.Append("DECLARE @ABC_TypeB int ")
tickerquery.Append("DECLARE @XYZ_TypeB int ")
tickerquery.Append("DECLARE @ALL_TypeC int ")
tickerquery.Append("DECLARE @ABC_TypeC int ")
tickerquery.Append("DECLARE @XYZ_TypeC int ")
tickerquery.Append("DECLARE @ALL_TypeD int ")
tickerquery.Append("DECLARE @ABC_TypeD int ")
tickerquery.Append("DECLARE @XYZ_TypeD int ")
tickerquery.Append("DECLARE @ALL_TypeE int ")
tickerquery.Append("DECLARE @ABC_TypeE int ")
tickerquery.Append("DECLARE @XYZ_TypeE int ")
tickerquery.Append("DECLARE @ALL_Title nvarchar(3) ")
tickerquery.Append("DECLARE @ABC_Title nvarchar(3) ")
tickerquery.Append("DECLARE @XYZ_Title nvarchar(3) ")
tickerquery.Append("SET @ALL_Title = 'ALL' ")
tickerquery.Append("SET @ABC_Title = 'ABC' ")
tickerquery.Append("SET @XYZ_Title = 'XYZ' ")
tickerquery.Append("DECLARE @Count_Tbl table (Title nvarchar(3), Total int, TypeA int, TypeB int, TypeC int, TypeD int, TypeE int) ")
tickerquery.Append("SELECT @ALL_Total = (SELECT Count(ProdID) FROM Products) ")
tickerquery.Append("SELECT @ABC_Total = (SELECT Count(ProdID) FROM Products WHERE Category = 'ABC') ")
tickerquery.Append("SELECT @XYZ_Total = (SELECT Count(ProdID) FROM Products WHERE Category = 'XYZ') ")
tickerquery.Append("SELECT @ALL_TypeA = (SELECT Count(ProdID) FROM Products WHERE Productstatus = 'TypeA') ")
tickerquery.Append("SELECT @ABC_TypeA = (SELECT Count(ProdID) FROM Products WHERE Category = 'ABC' AND Productstatus = 'TypeA') ")
tickerquery.Append("SELECT @XYZ_TypeA = (SELECT Count(ProdID) FROM Products WHERE Category = 'XYZ' AND Productstatus = 'TypeA') ")
tickerquery.Append("SELECT @ALL_TypeB = (SELECT Count(ProdID) FROM Products WHERE Productstatus = 'TypeB') ")
tickerquery.Append("SELECT @ABC_TypeB = (SELECT Count(ProdID) FROM Products WHERE Category = 'ABC' AND Productstatus = 'TypeB') ")
tickerquery.Append("SELECT @XYZ_TypeB = (SELECT Count(ProdID) FROM Products WHERE Category = 'XYZ' AND Productstatus = 'TypeB') ")
tickerquery.Append("SELECT @ALL_TypeC = (SELECT Count(ProdID) FROM Products WHERE Productstatus = 'TypeC') ")
tickerquery.Append("SELECT @ABC_TypeC = (SELECT Count(ProdID) FROM Products WHERE Category = 'ABC' AND Productstatus = 'TypeC') ")
tickerquery.Append("SELECT @XYZ_TypeC = (SELECT Count(ProdID) FROM Products WHERE Category = 'XYZ' AND Productstatus = 'TypeC') ")
tickerquery.Append("SELECT @ALL_TypeD = (SELECT Count(ProdID) FROM Products WHERE Productstatus = 'TypeD') ")
tickerquery.Append("SELECT @ABC_TypeD = (SELECT Count(ProdID) FROM Products WHERE Category = 'ABC' AND Productstatus = 'TypeD') ")
tickerquery.Append("SELECT @XYZ_TypeD = (SELECT Count(ProdID) FROM Products WHERE Category = 'XYZ' AND Productstatus = 'TypeD') ")
tickerquery.Append("SELECT @ALL_TypeE = (SELECT Count(ProdID) FROM Products WHERE Productstatus <> 'TypeD') ")
tickerquery.Append("SELECT @ABC_TypeE = (SELECT Count(ProdID) FROM Products WHERE Category = 'ABC' AND Productstatus = 'TypeE') ")
tickerquery.Append("SELECT @XYZ_TypeE = (SELECT Count(ProdID) FROM Products WHERE Category = 'XYZ' AND Productstatus = 'TypeE') ")
tickerquery.Append("INSERT INTO @Count_Tbl (Title, Total, TypeA, TypeB, TypeC, TypeD, TypeE SELECT @ALL_Title, @ALL_Total, @ALL_TypeA, @ALL_TypeB, @ALL_TypeC, @ALL_Decomm, @ALL_Running ")
tickerquery.Append("INSERT INTO @Count_Tbl (Title, Total, TypeA, TypeB, TypeC, TypeD, TypeE SELECT @ABC_Title, @ABC_Total, @ABC_TypeA, @ABC_TypeB, @ABC_TypeC, @ABC_Decomm, @ABC_Running ")
tickerquery.Append("INSERT INTO @Count_Tbl (Title, Total, TypeA, TypeB, TypeC, TypeD, TypeE SELECT @XYZ_Title, @XYZ_Total, @XYZ_TypeA, @XYZ_TypeB, @XYZ_TypeC, @XYZ_Decomm, @XYZ_Running ")
tickerquery.Append("SELECT Title, Total, TypeA, TypeB, TypeC, TypeD, TypeE FROM @Count_Tbl")
Dim results As IEnumerable(Of ProductCount) = _
db.ExecuteQuery(Of ProductCount) _
(tickerquery.ToString)
e.Result = results
End Sub
我得到的錯誤是
Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near the keyword 'SELECT'.
Incorrect syntax near the keyword 'SELECT'. at the tickerquery.ToString line
有沒有得到結果,使他們能夠綁定到北京時間的另一種方式?
嗨,我明白了有些變量沒有聲明:ALL_Decomm,ABC_Decomm,XYZ_Decomm,ALL_Running,ABC_Running,XYZ_Running –
@jyparask謝謝......我已經改變了變量的名稱,使它們更容易閱讀(所有長度相同)並錯過了一些。全部糾正。正如我所提到的,SQL是可以的,因爲我已經在SQL Manager中運行了這些語句,並且得到了所需的3行返回。 – Mych
您可以嘗試在SSMS中運行tickerquery.ToString()的結果。有一個斷點,並在即時窗口中寫入?tickerquery.ToString()。將結果放入SM中並運行。你得到的錯誤似乎與SQL解析器,所以更好看看結果。 –