cmd1.ExecuteScalar()
nevrací celé číslo v rámečku. Přiřaďte jej k objektu a podívejte se na něj v debuggeru, abyste viděli, co to skutečně je.
Hádám, že to bude vracet desetinné nebo dvojité a vy musíte udělat:
Int32 result = (Int32)(double)cmd1.ExecuteScalar();
Nebo:
Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();
[UPRAVIT v odpovědi na otázku v komentářích níže]
Chcete-li zachovat desetinnou hodnotu, postupujte takto:
Decimal result = (Decimal) cmd1.ExecuteScalar();
Pokud byste potřebovali, mohli byste desetinnou čárku přehodit na dvojnásobek:
double result = (double)(Decimal) cmd1.ExectuteScalar();