2009-07-06 9 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

Quelle Erreur? Veuillez modifier la question pour décrire l'erreur. – shahkalpesh

+1

Vous n'avez pas posé de question. S'il vous plaît demander un. En outre, si votre problème implique une exception, veuillez publier l'intégralité de l'exception. Attrapez-le, puis postez ex.ToString() –

Répondre

1

La syntaxe SQL est incorrecte. Vous avez une parenthèse ouvrante après HAVING qui n'a aucune parenthèse fermante. Ajoutez une parenthèse fermante ou supprimez simplement la parenthèse ouvrante.

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

Merci Guffa, vous avez corrigé ma syntaxe et ça marche. – Yves

5

Il semble que votre requête soit incorrecte.

Au début, je ne peux pas comprendre le besoin de groupe par & il vous manque un ")" vers la fin du SQL.

1

Vous semblez manquer une parenthèse fermante à la fin de votre requête. Est-ce que provoquer cmd.ExecuteScalar pour déclencher une exception?

2

Vous manquez un support, mais aussi, vous n'avez pas besoin d'un GROUP BY et un HAVING, vous pouvez simplement avoir une partie supplémentaire de votre clause 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

Salut Robin Day, Merci à vous aussi. Votre syntaxe fonctionne sur moi aussi. – Yves

Questions connexes