Dobrý deň, narazil som na zvláštny problém a nemôžem zistiť, čo sa deje DataGridView
kontrola, ktorá je viazaná na a BindingSource
na môj formulár a tri CheckBox
ovládacie prvky, ktoré filtrujú hodnoty založené na hodnote vypnuté, ak je hodnota v stĺpci Null, NOT Null. Tretia CheckBox
spôsobuje problémy. Pokúšam sa skryť hodnoty, ak je hodnota v stĺpci rovná "RETEST PASSED", ale tiež spôsobí skrytie hodnôt Null. Tu je riadok kódu, kde som nastavil filter:
_bSource.Filter = "repair_action <> "RETEST PASSED"";
Vie niekto, prečo by filter skryl riadkys hodnotami Null, ako aj riadkami s hodnotou "RETEST PASSED"? V mojej hlave sa zdá logika zdravá. Vykladám ho ako "Ak hodnota v repair_action nezodpovedá" RETEST PASSED ", potom zobrazí riadok". Nie je to to, čo sa deje? "
Vopred ďakujem.
odpovede:
0 pre odpoveď č. 1Čo tak
_bSource.Filter = "repair_action Is Null Or repair_action <> "RETEST PASSED"";
HTH
0 pre odpoveď č. 2
Vysvetlenie
V klauzule SQL WHERE sa NULL nedá porovnať s žiadnou hodnotou pomocou operátorov porovnávania. "NULL = NULL" je nepravdivé. Null nie je hodnota. Preto akékoľvek porovnanie s Null poskytuje výsledok NEZNÁMÝ.
Riešenie
Pozri odpoveď poskytovanú spoločnosťou Luc Morin