2009-07-06 2 views
-6
public static int AwaitingApprovals() 
{ 
    int numApprovals = 0; 
    string sql = "SELECT COUNT(Type) AS OpenforApproval FROM dbo.LeaveRequest 
        WHERE Type IN (2, 3, 4, 5, 6, 8, 13, 14, 16, 22) 
        GROUP BY MgtApproval HAVING (MgtApproval IS NULL"; 
    //"SELECT COUNT(EffectiveDate) AS OpenforApproval FROM LeaveRequest 
    // GROUP BY TimeStampApproval HAVING (TimeStampApproval IS NULL)"; 

    using (cn = new SqlConnection(ConnectionString())) 
    { 
     cn.Open(); 
     using (cmd = new SqlCommand(sql, cn)) 
     { 
      cmd.CommandType = CommandType.Text; 
      numApprovals = (int)cmd.ExecuteScalar(); 
     } 
    } 

    return numApprovals; 
} 
+3

어떤 오류입니까? 질문을 편집하여 오류를 설명하십시오. – shahkalpesh

+1

질문하지 않았습니다. 부탁드립니다. 또한 문제에 예외가 포함되는 경우 전체 예외를 게시하십시오. 그것을 잡아 먹은 다음 ex.ToString()을 게시하십시오 –

답변

1

SQL 구문이 잘못되었습니다. 닫는 괄호가없는 HAVING 뒤에 여는 괄호가 있습니다. 닫는 괄호를 추가하거나 여는 괄호 만 제거하십시오.

string sql = 
    "SELECT COUNT(Type) AS OpenforApproval " + 
    "FROM dbo.LeaveRequest " + 
    "WHERE Type IN (2, 3, 4, 5, 6, 8, 13, 14, 16, 22) " + 
    "GROUP BY MgtApproval " + 
    "HAVING MgtApproval IS NULL"; 
+0

Guffa, 고맙습니다 내 구문을 수정했습니다. – Yves

5

검색어가 잘못되었습니다.

처음에는 그룹의 필요성을 & 님이 이해할 수 없으므로 SQL 끝 부분에 ")"이 누락되었습니다.

1

쿼리 문의 끝에 닫는 괄호가 누락 된 것처럼 보입니다. cmd.ExecuteScalar 예외를 발생시키지 않을까요?

2

브래킷이 누락되었지만 GROUP BY 및 HAVING이 필요하지 않은 경우 WHERE 절의 일부만 추가하면됩니다.

string sql = "SELECT COUNT(Type) AS OpenforApproval FROM dbo.LeaveRequest WHERE Type IN (2, 3, 4, 5, 6, 8, 13, 14, 16, 22) AND MgtApproval IS NULL"; 
+0

안녕 Robin Day, 감사합니다. 귀하의 구문은 저에게도 적용됩니다. – Yves

관련 문제