Базы данных Access 2007, запрашивающие связанные таблицы Oracle 10g, возвращают некорректные наборы результатов при использовании предложения WHERE для фильтрации нежелательных записей. Как ни странно, некоторая фильтрация происходит, но ненадежно.
Я могу достоверно продемонстрировать / создать проблему следующим образом:
- Создание * новой * базы данных с помощью Access 2007.
- Создайте вторую * новую * базу данных с Access 2007, а затем "save-as" 2000.
- Создайте третью * новую * базу данных со старой версией Access.
- Выполните следующий запрос в каждой базе данных:
SELECT
STATUS,
ID,
LAST_NAME,
FIRST_NAME
FROM
Oracle10g_table
WHERE
STATUS="A"
- В обеих базах данных, созданных с помощью Access 2007, выполнение этого запроса даст вам набор результатов, в котором некоторые записей, где (STATUS = "A") = false были отфильтрованы, но не все из них.
- В базах данных, созданных с более ранними версиями доступа, предложение where фильтруется правильно, а набор результатов является правильным.
- STATUS - текстовое поле
- Таблица является «связанной» таблицей с базой данных Oracle10g
- Таблица содержит 68 тыс. Строк
- Я проверил тайм-аут в 60, 1000 и 0
Кто-нибудь сталкивался с этой проблемой?
Интересно, будет ли это новая «функция» доступа, которая также повлияет на 2010 год. Может ли это быть как-то связано с ODBC?
Спасибо за любую помощь,
- Дэйв
ПОДРОБНЕЕ ...
Я только что попробовал альтернативную форму запроса, используя HAVING вместо WHERE, и это сработало! Проблема в том, что кроме того, что это ничего не должно изменить (да - больше виртуальных таблиц, но не должно изменять конечный результат), мои конечные пользователи будут использовать визуальный конструктор запросов Access 2007, а не вводить SQL напрямую, что происходит по умолчанию любые критерии, которые они вводят в ГДЕ.