2010-11-27 7 views
0

にスローされます私はこのようなクエリを持っている.... cmbYearList.SelectedItem.Text + "' AND '12/31/" + cmbYearList.SelectedItem.Text + "'"クエリで割り当てエラーがクエリ

selectLeaveDetails = 
    "SELECT UL.[PK_ID],UD.FIRST_NAME + ' ' + UD.LAST_NAME AS REQUESTBY," + 
    "UL.[DATE_FROM] AS FROMDATE,UL.[DATE_TO] AS TODATE," + 
    "UL.LEAVE_REQUEST_ON AS REQUESTON," + 
    "REPLACE(UL.LEAVE_REQUEST_NOTES, '\n', '<br />') AS REQUESTNOTES," + 
    "STATUS=CASE " + 
    " WHEN UL.[LEAVE_STATUS] = '1' THEN 'ACTIVE' " + 
    " WHEN UL.[LEAVE_STATUS] = '-1' THEN 'CANCELLED' " + 
    " WHEN UL.[LEAVE_STATUS] = '2' THEN 'REPLACED' END," + 
    "UL.LEAVE_RESPONSE_ON AS RESPONSEON," + 
    "ULL.FIRST_NAME + ' ' + ULL.LAST_NAME AS RESPONSEBY," + 
    "UL.[LEAVE_RESPONSE_NOTES] AS RESPONSENOTES,UL.FK_LEAVE_REQUESTER " + 
    "FROM (M_USER_LEAVES UL " + 
    "INNER JOIN M_LEADERLED MLL ON MLL.LED_ID = MUD.PK_ID WHERE MLL.LEADER_ID = '" + Session["UserID"].ToString() ****" +**** 
    "LEFT JOIN M_USER_DETAILS UD ON UD.PK_ID = UL.FK_LEAVE_REQUESTER) " + 
    "LEFT JOIN M_USER_DETAILS ULL ON ULL.PK_ID = UL.FK_LEAVE_RESPONSE_BY " + 
    " WHERE UL.DATE_FROM BETWEEN '01/01/" + cmbYearList.SelectedItem.Text + "' AND '12/31/" + cmbYearList.SelectedItem.Text + "'" + 
    " AND UD.ACTIVE=1"; 

...だけ代入、インクリメント、デクリメントエラーが

を投げている人は助けることができます私?

+0

いくつかの点:クエリを連結しているので、SQLインジェクションのために自分自身を開いています - しないでください!代わりにパラメータ化されたクエリを使用します。また、日付形式に "01/01/..."と "12/31/..."を使用すると、コードはSQL Serverの言語設定に依存します.ISI-8601形式を使用する代わりに、「YYYYMMDD」 - **常に**あなたの言語/地域の設定に関係なく動作します –

答えて

1

あなたのFROM句が何とかかなりアップマングルされています

FROM (M_USER_LEAVES UL 
     INNER JOIN M_LEADERLED MLL ON MLL.LED_ID = MUD.PK_ID 
     WHERE MLL.LEADER_ID = 'XXXX" 
     LEFT JOIN M_USER_DETAILS UD ON UD.PK_ID = UL.FK_LEAVE_REQUESTER) 

あなたはLEFT JOIN続いINNER JOIN、その後、WHERE句を、持っている....これは正確に何です.....かなり奇妙に思えますあなたはここでやろうとしている?なぜこれをサブクエリに入れる必要があるのですか?INNER JOINLEFT JOINのテーブルを1つのステートメントに入れて、必要なWHEREの制約を定義できませんか?

また、ここであなたのWHERE句が開い単一引用符と終了二重引用符を取得 - 動作しません......

WHERE MLL.LEADER_ID = 'XXXX" 
        *** *** 

あなたのSQLクエリは、SQLでの作業を取得する必要がありますまずServer Management Studioを起動し、それをC#コードに転送します。