Несоответствие типов данных в обходе критериев - PullRequest
1 голос
/ 14 марта 2011

Я запускаю запрос в Access, и хотя он предупреждает меня о пустых полях, он все равно может выполнить запрос и добавить строки.

Однако, когда я запускаю JET в VB.NET, он говорит "Несоответствие типов данных в выражении критерия ".

Есть ли способ для JET вести себя как Access (т.е. все еще выполнять запрос и добавлять строки)?

Я знаю, что могу преобразовать полеисправить тип в VB.NET и выполнить цикл, но у меня нет времени на это, потому что мне нужно делать это по многим различным запросам.

Спасибо за любую помощь

1 Ответ

0 голосов
/ 20 апреля 2011

Я бы начал смотреть на поля, для которых у вас есть критерии, а затем сделал бы оператор select в вашем запросе так, чтобы значения NULL были заменены на приемлемый тип (попробуйте IsNull или NZ), или сделал бы производную таблицу (подзапрос), которая удаляет пустые значения до обработки критериев.

Например

SELECT TextField, DateField, OtherField 
FROM Table 
WHERE TextField='something' And Datefield=#2/11/2011#

Вот производное табличное решение:

SELECT TextField, DateField, OtherField
FROM ( 
    SELECT TextField, DateField, OtherField 
    FROM Table 
    WHERE TextField Is Not Null And Datefield Is Not Null
     ) AS aTable
WHERE TextField='something' And Datefield=#2/11/2011#

По сути, вы могли бы сказать:

SELECT nz(Table.TextField,'') AS TextField...

Надеюсь, это поможет

...