Поведение при выполнении запроса, описанного в первом посте, зависит от OLE DB, и мы не можем на это повлиять.
Значение TMSQuery.Options.UniqueRecords установлено в True для возможности получать мета-информацию для корректной автогенерации запросов на изменение данных.
Вы можете устанавливать UniqueRecords в False только для SQL запросов, которые начинаются с конструкции WITH.
TMSQuery.Open портит память
Re: TMSQuery.Open портит память
Хотелось бы уточнить ещё один момент: если я использую TMSQuеry только для получения данных, без необходимости редактирования (устанавливаю свойство ReadOnly := True), то нет никакого смысла в UniqueRecords = True? И для отключения лишних действий будет даже лучше отключать UniqueRecords для только читающих наборов данных (независимо от наличия конструкции WITH)?
Вообще странная ситуация с WITH. У меня редактируемые наборы данных с WITH (все, что я проверял) - работают нормально. А вот набор данных с WITH и ReadOnly = True, где никакого редактирования и не планировалось, приводит к ситуации из первого поста.
Вообще странная ситуация с WITH. У меня редактируемые наборы данных с WITH (все, что я проверял) - работают нормально. А вот набор данных с WITH и ReadOnly = True, где никакого редактирования и не планировалось, приводит к ситуации из первого поста.
Re: TMSQuery.Open портит память
Да, если вы используете рекордсет только для чтения, то нет особого смысла устанавливать UniqueRecords в True.