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

welche Fehler? Bitte bearbeiten Sie die Frage, um den Fehler zu beschreiben. – shahkalpesh

+1

Sie haben keine Frage gestellt. Bitte fragen Sie einen. Wenn es sich bei Ihrem Problem um eine Ausnahme handelt, veröffentlichen Sie bitte die gesamte Ausnahme. Fangen Sie es, und dann schreiben ex.ToString() –

Antwort

1

Die SQL-Syntax ist falsch. Sie haben eine öffnende Klammer nach HAVING, die keine schließende Klammer enthält. Fügen Sie eine schließende Klammer hinzu oder entfernen Sie einfach die öffnende Klammer.

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

Danke Guffa, haben Sie meine Syntax korrigiert und es funktioniert. – Yves

5

Ihre Anfrage scheint nicht korrekt zu sein.

Am Anfang kann ich nicht verstehen, die Notwendigkeit der Gruppe von & Sie fehlen ein ")" gegen Ende der SQL.

1

Sie scheinen eine schließende Klammer am Ende Ihrer Abfrage zu fehlen. Würde nicht dass verursachen cmd.ExecuteScalar eine Ausnahme auslösen?

2

Sie verpassen eine Klammer, sondern auch Sie eine GROUP BY nicht brauchen und haben, können Sie nur einen zusätzlichen Teil Ihrer WHERE-Klausel haben.

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

Hallo Robin Day, Danke auch dir. Deine Syntax funktioniert auch bei mir. – Yves

Verwandte Themen