Ustawienie zero jako null ?

0

Mam drobny problem z kontrolą wprowadzanych danych - VS2008 , C# , MySQL.
Podczas kontroli danych wprowadzanych m.in. w DGV, wartość null jest rozpoznawana automatycznie i w przypadku, gdy jest ustawiona restrykcja dla null, generowany jest błąd wraz z odpowiednim komunikatem, a komórka z powrotem wraca w tryb edycji.
Chciałbym w ten sam sposób kontrolować wartość zerową (jako odpowiednik null) - czy jest to możliwe ?

0

Taki mały przykład:

            int? value = null;
            Console.WriteLine(value);
            value = 0;
            Console.WriteLine(value);

Nie testowałem tego, ale wydaje mi się że taka deklaracja int-a, pozwoli wygenerować taki sam błąd, jeśli będzie null-em.

0

Problem dotyczy operacji w DataGridView na danych z MySQL, gdzie nie ma jawnej deklaracji typu.
Próbowałem znaleźć rozwiązanie we właściwościach DGV dla danej komórki, w DataSet oraz w samym MySQL, ale jak na razie poległem z problemem.

Spodziewałem się, że wskazanie 0,00 jako Null value w CellStyle Builder -> Format String Dialog, powinno rozwiązać problem, ale żadnych efektów nie przyniosło.

Najprostsze co przychodzi mi do głowy, to obsługa zdarzenia np. CellValueChanged i "ręczna" kontrola wprowadzanych wartości, ale cały czas mam wrażenie, że jest to zaimplementowane w standardowej obsłudze DGV.

Po kilku próbach :
Trochę na około i nie w 100% zgodnie z oczekiwaniami, ale ... obsługując zdarzenie CellValueChanged dla wybranych kolumn, gdy wartość komórki wynosi zero, ustawiam wartość tej komórki na null.

0

z zerem automatycznie Ci nie wyjdzie, poniewaz zero jest normalna wartoscia, prawidlowa w sensie kolumny z danymi. nie ma po stronie serwera baz sql czegos takiego jak "NOT ZERO" w analogii do "NOT NULL" :) mechamizn testujacy nie jest odpowiedzialny za poprawnosc danych, a za ich spojnosc - klucze obce musza na cos istniejacego wskazywac, primarykeye musza byc nie-puste, etc

to, co Ty bys chcial uzyskac, to walidacja wartosci prowadzonych na formatce. od tego sa inne mechanizmy. sprawdz np czy nie ma aby eventa CellValueChanging albo blahValidating -- one sluza do wpinania sie w odpowiedni moment, sprawdzania czy wartosc jest ok i ew. jej odrzucania - np. zworceniem false, ustawieniem e.cancel=true czy tez rzuceniem wyjatku, zalezy w ktorej kontrolce..

0

Dzieki za pomoc - posprawdzam ewewntualne możliwości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1