Wracając na IsNull przecinku „0,00”

głosy
1

Witam mam tej kwerendy, które chciałbym wrócić „0,00” INSEAD „0”

Kiedy próbowałem napisać to tak:

string sqlcom = SELECT (ISNULL(s_prijmy, 0,00)), * FROM zajezd WHERE akce >= ' + txt_od.Text + 'AND akce <=' + txt_do.Text + ' AND rocnik=' + klientClass.Rocnik() + ';

Daje mi następujący wyjątek:

System.InvalidCastException: Określony oddanych nie jest prawidłowy. w System.Data.SqlClient.SqlBuffer.get_Decimal ()

Mogę zapytać, w jaki sposób można to naprawić?

Dzięki w adavance.

Przyszłe wykorzystanie tej „0,00” powinien być następujący:

this.chart1.Series[Příjmy].Points.AddXY(myreader.GetString(myreader.GetOrdinal(akce)), myreader.GetDecimal(34).ToString()); // the 34th column
Utwórz 05/09/2013 o 08:44
użytkownik
W innych językach...                            


6 odpowiedzi

głosy
3

Zmieni ,się .w zapytaniu.

ISNULL(s_prijmy, 0.00)

Chciałbym również zwrócić uwagę, że

GetDecimal(34) 

dostaje kolumnę 35th, jak to jest od zera ...

Posługiwać się:

GetDecimal(33) 

w kolumnie 34.

sprawdź tutaj

Odpowiedział 05/09/2013 o 08:45
źródło użytkownik

głosy
1

Spróbuj w ten sposób:

string sqlcom = "SELECT cast(ISNULL(s_prijmy, 0) as decimal(8,2)), * FROM zajezd WHERE akce >= '" + txt_od.Text + "'AND akce <='" + txt_do.Text + "' AND rocnik='" + klientClass.Rocnik() + "'";
Odpowiedział 05/09/2013 o 08:46
źródło użytkownik

głosy
2

0,00nie jest po przecinku. Spróbuj 0.00rzucić go do przecinku w zapytaniu. I nie zapomniał umieścić 0.00w pojedynczych cudzysłowach '', jeśli s_prijmyjest typem varchar.

Spróbuj tego

string sqlcom = "SELECT (ISNULL(s_prijmy, '0.00')), * FROM zajezd WHERE akce >= '" + txt_od.Text + "'AND akce <='" + txt_do.Text + "' AND rocnik='" + klientClass.Rocnik() + "'";

I tak jak już powiedział, że należy spróbować użyć kwerendy parametryczne.

Odpowiedział 05/09/2013 o 08:47
źródło użytkownik

głosy
2

Jaki typ danych jest s_prijmy? jeśli jest to ciąg znaków, a chcesz wrócić ciąg „0.00”, a następnie zrobić

 ISNULL(s_prijmy, '0.00')

Jeśli jest numeryczna, a chcesz wrócić liczbę w formacie 0.00, a następnie wykonaj

ISNULL(s_prijmy, cast(0 as decimal(3,2)))

jeśli s_prijmy ma większą precyzję, że 2, np przecinku (4,3), a następnie dostaniesz 0.000

Odpowiedział 05/09/2013 o 08:52
źródło użytkownik

głosy
1

Można formatować dane, gdy ją wyświetlić.

wybrać dane, jak to jest

string sqlcom = "SELECT s_prijmy, .........

następnie

var value = myreader.GetString(myreader.GetOrdinal("s_prijmy"));

value =  string.IsNullOrEmpty(value)?"0,00":value;

Teraz można użyć powyżej wartości Points.AddXY

Odpowiedział 05/09/2013 o 08:55
źródło użytkownik

głosy
1

Musisz poprawić swoją prezentację na stronie klienta. Spójrz na toString String publicznych (format string) . Także tutaj i tutaj .

Odpowiedział 05/09/2013 o 08:58
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more