2015-03-13 4 views
-2

У меня есть одно приложение Delphi, которое подключается к MS-SqlServer-2008R2 через BDE + ODBC. Разработано с использованием Delphi 7.необычный счетчик записей в TQuery.Record count

Доступ к данным с использованием TDatabase, TTable, TQuery компонентов.

Адрес TDatabase указывает на псевдоним в BDE и другие компоненты, использующие функцию TDatabase.Databasename.

В таблице основных транзакций содержится более 300 000 записей.

в главном приложении Когда я запрашиваю таблицу, TQuery дает количество записей в размере 2,5 миллиона, но моя таблица имеет всего 300 тысяч записей. После того, как запрос открывается, приложение просто разбилось. в чем проблема?

Если я отлаживаю код, он дает "Memory Error" по адресу TQuery.Open. но при запуске приложения он не выдавал никаких ошибок, и просто приложение было разбито.

Я проверил использование памяти в диспетчере задач, прежде чем открыть запрос, это просто 20 MB, но после открытия запроса приложение использует более 700 MB memory.

Скопировал тот же запрос и запустил студию управления SQL-сервером и получил 45000 записей.

Опять только что создали еще одно маленькое приложение, с одной формы и одного TQuery, TDatabase и побежал запрос, он дает правильный подсчет 45000.

Почему это дает необычное количество записей в главном приложении?

+0

Пожалуйста, проверьте ваш запрос, должно быть что-то не так с JOINS –

+0

Существует так много возможных проблем, и вы не дали достаточной информации для того, чтобы кто-либо дал ответ. Вы подключаетесь к той же БД. Являются ли ваши настройки соединения одинаковыми. В SQL Server вы используете одну и ту же схему/пользователя? Вам действительно нужен BDE? Он официально устарел. –

+0

Пожалуйста, покажите свой запрос, чтобы мы могли начать копаться в нем. – AlexSC

ответ

2

Проверьте свойство компонента базы данных «Парамс». если какой-либо параметр задан с помощью RowSet Size = -1. если он там, то удалите его. Это и является причиной проблемы.