Cześć, wpadłem na dziwny problem i nie mogę zrozumieć, co się dzieje. Mam DataGridView
kontrola, która jest powiązana z a BindingSource
na mojej formie i trzech CheckBox
kontroluje, czy wartości filtru są wyłączone, jeśli wartość w kolumnie ma wartość Null, NIE NULL. Trzeci CheckBox
powoduje problemy. Próbuję ukryć wartości, jeśli wartość w kolumnie jest równa „PRZYWRÓĆ PASSED”, ale spowoduje to również ukrycie wartości Null. Oto wiersz kodu, w którym ustawiłem filtr:
_bSource.Filter = "repair_action <> "RETEST PASSED"";
Czy ktoś wie, dlaczego Filtr ukrywałby wierszez wartościami Null oraz wierszami o wartości „PRZYWRÓCIĆ PRZEKROCZONE”? W mojej głowie logika wydaje się rozsądna. Zinterpretowałem to jako „Jeśli wartość w naprawie awarii nie równa się„ PRZYWRÓCIĆ PRZEKONANE ”, to wyświetl wiersz”. Czy to nie jest to, co się dzieje?
Z góry dziękuję.
Odpowiedzi:
0 dla odpowiedzi № 1Co powiesz na
_bSource.Filter = "repair_action Is Null Or repair_action <> "RETEST PASSED"";
HTH
0 dla odpowiedzi nr 2
Wyjaśnienie
W klauzuli SQL WHERE NULL nie można porównywać z żadną wartością za pomocą operatorów porównania. „NULL = NULL” jest fałszywe. Null nie jest wartością. Dlatego każde porównanie z wartością Null zapewnia wynik NIEZNANY.
Rozwiązanie
Zapoznaj się z odpowiedzią Luc Morin