cmd1.ExecuteScalar()
returnerer ikke et indrammet heltal. Tildel det til et objekt, og kig på det i debuggeren for at se, hvad det egentlig er.
Jeg gætter på, at det vil returnere en decimal eller en dobbelt, og du skal gøre:
Int32 result = (Int32)(double)cmd1.ExecuteScalar();
Eller:
Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
[EDIT som svar på et spørgsmål i kommentarerne nedenfor]
For at beholde decimalværdien skal du blot gøre dette:
Decimal result = (Decimal) cmd1.ExecuteScalar();
Hvis du havde brug for det, kunne du kaste decimalen til en dobbelt:
double result = (double)(Decimal) cmd1.ExectuteScalar();