Использую БД SQLite, количество записей перевалило за 2000. Понадобилось перебрать все записи и сравнить с каждую запись с другим массивом данных.
Загрузить все данные, а это 2000 с лишним записей сразу не позволяет система, просто ничего не происходит (процедура не исполняется). Поэтому свойство FetchOption.RowsetSize установил 500, свойство FetchOption.Mode установлено в fmOnDemand, т.е.когда обрабатывается порция данных по документации должна быть получена следующая порция данных и так до конца. Однако, на практике при такой конструкции при получении данных, количество данных (RecordCount) приравнивается к св-ву RowsetSize и выводит только 500 записей, а цикл While почему-то не работает, просто ничего не происходит.
Как вывести полный объем данных?
var
DBArray: TStringList;
FQuery: TMySQLiteQuery;
........
SQL := 'SELECT * FROM FileStore';
FQuery.SelectQuery(SQL);
//while (not FQuery.Eof) do
for j := 0 to FQuery.RecordCount - 1 do
begin
AData := FQuery.Fields.FieldByName('FileName').AsString;
DBArray.Append(AData);
FQuery.Next;
end;
ShowMessage(IntToStr(DBArray.Count));
Вопрос
Павел
Использую БД SQLite, количество записей перевалило за 2000. Понадобилось перебрать все записи и сравнить с каждую запись с другим массивом данных.
Загрузить все данные, а это 2000 с лишним записей сразу не позволяет система, просто ничего не происходит (процедура не исполняется). Поэтому свойство FetchOption.RowsetSize установил 500, свойство FetchOption.Mode установлено в fmOnDemand, т.е.когда обрабатывается порция данных по документации должна быть получена следующая порция данных и так до конца. Однако, на практике при такой конструкции при получении данных, количество данных (RecordCount) приравнивается к св-ву RowsetSize и выводит только 500 записей, а цикл While почему-то не работает, просто ничего не происходит.
Как вывести полный объем данных?
var
DBArray: TStringList;
FQuery: TMySQLiteQuery;
........
SQL := 'SELECT * FROM FileStore';
FQuery.SelectQuery(SQL);
//while (not FQuery.Eof) do
for j := 0 to FQuery.RecordCount - 1 do
begin
AData := FQuery.Fields.FieldByName('FileName').AsString;
DBArray.Append(AData);
FQuery.Next;
end;
ShowMessage(IntToStr(DBArray.Count));
.......
Ссылка на комментарий
5 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.