2014-06-24 87 views
0

試圖執行下面的代碼,當我我得到錯誤,請幫我多部分標識符couldnot約束

If Convert.ToString(Session("userType")).ToLower() = "admin" Then 
     cmd.CommandText = "select sno, (SELECT UserName FROM UserDetails WHERE userid=Maintenanceinfo.userid) AS userid, (SELECT Category_Name FROM Maintenance_Category WHERE Category_Value=Maintenanceinfo.Category_Value) AS Category_Value, Maintenance, January, February, March, April, May, June, July, August, September, October, November, December from Maintenanceinfo where year = " & dt1 & " Order by Category_Value" 
ElseIf Convert.ToString(Session("userType")).ToLower() = "manager" Then 
     cmd.CommandText = "select sno, (SELECT UserName FROM UserDetails WHERE userid=a.userid) AS userid, (SELECT Category_Name FROM Maintenance_Category WHERE Category_Value=Maintenanceinfo.Category_Value) AS Category_Value, Maintenance, January, February, March, April, May, June, July, August, September, October, November, December from Maintenanceinfo a,UserDetails b where a.userid=b.userid and b.Managerid= " & Session("userId") & " and year = " & dt1 & " Order by Category_Value " 
Else 
     cmd.CommandText = "select sno, (SELECT UserName FROM UserDetails WHERE userid=Maintenanceinfo.userid) AS userid, (SELECT Category_Name FROM Maintenance_Category WHERE Category_Value=Maintenanceinfo.Category_Value) AS Category_Value, Maintenance, January, February, March, April, May, June, July, August, September, October, November, December from Maintenanceinfo with (nolock) where userid= " & Session("userId") & " and year = " & dt1 & " Order by Category_Value " 
End If 

產生的誤差是The multi-part identifier "Maintenanceinfo.Category_Value" could not be bound

感謝您的幫助

+0

確定列名拼寫正確嗎? –

回答

1

問題大概是與第二條語句一樣(儘管你確實應該花費一點努力來幫助我們計算出哪個單獨的SQL語句引發了這個問題)。

的SQL是:

select sno, (SELECT UserName FROM UserDetails WHERE userid=a.userid) AS userid, 
    (SELECT Category_Name FROM Maintenance_Category WHERE    
     Category_Value=Maintenanceinfo.Category_Value) AS Category_Value, 
    Maintenance, January, February, March, April, May, June, July, August, 
    September, October, November, December 
from Maintenanceinfo a,UserDetails b 
where a.userid=b.userid and b.Managerid= " & Session("userId") & 
    " and year = " & dt1 & " 
Order by Category_Value 

如果錯誤是由該子查詢造成的:

(SELECT Category_Name FROM Maintenance_Category WHERE    
     Category_Value=Maintenanceinfo.Category_Value) 

由於名稱Maintenanceinfo不在範圍內,在這一點上,因爲這個查詢,您已爲此表引入了一個別名 - a。所以,正確的查詢應該是:

select sno, b.UserName AS userid, 
    (SELECT Category_Name FROM Maintenance_Category WHERE    
     Category_Value=a.Category_Value) AS Category_Value, 
    Maintenance, January, February, March, April, May, June, July, August, 
    September, October, November, December 
from Maintenanceinfo a 
     inner join 
    UserDetails b 
     on 
      a.userid = b.userid 
where b.Managerid= " & Session("userId") & 
    " and year = " & dt1 & " 
Order by Category_Value 

我也切換到ANSI連接語法,而不是,FROM子句中 - 他們只去過在20年以上的標準...

我也刪除了不需要的子查詢,因爲您已經加入UserDetails表。

+0

非常感謝,非常感謝 – user3373775