Перейти к содержанию
Fire Monkey от А до Я

Павел

Пользователи
  • Постов

    4
  • Зарегистрирован

  • Посещение

Достижения Павел

  1. Делаю новый проект, забиваю тот же самый код и все работает! ........ Надо что то менять. Андрей, respect за лучший способ проверки. Всем спасибо.
  2. Платформа Windows, однако, я пользуюсь и для Android, разница только в мелочах. По поводу выгрузки одного поля, так сначала и было, это я уже после мучений из контекста выдрал, всяко пробовал, но полностью согласен лучше выгрузить 1 столбец, а не все 28. Сразу скажу, даже если выгружаю 1 столбец картина не меняется. И еще, в настройках у меня стоит FetchOption.Ubidirectional := True, а это значит, что ранее загруженные данные удаляются, а на их место записываются новые, но вот почему-то это и не происходит. Что касается поиска конкретной записи в БД - хорошая идея, попробую. Только вот если подряд 2000 запросов будет ...., ну все равно попробую. По Limit - это же ограничение, а значит не весь массив выгрузиться и значит необходимо запускать новые циклы. Не знаю, но по мне кажется лишним. По сравнению: в определенной папке лежат файлы, данные по файлам находятся в БД, в ней соответственно описание этих файлов (удобно для поиска и ...). Так вот, в отдельном потоке через определенное время данная папка проверяется на наличие новых файлов и сверятся с БД, чтобы таких файлов не было, при необходимости добавляет в БД, так вот пока записей было не много, все работало, теперь беда..... И беда в чем: 1. Почему то не работает цикл While, т.е. исходя из настроек следующая партия данные должна по требованию быть загружена автоматически. И как я уже определился, использования цикла for .. do в данном случае не подходит. 2. Даже когда ставлю FQuery.FetchAll, т.е. выгрузить все данные, все равно выгружается только по значению RowsetSize. Ранее RowsetSize у меня был 2000, но тормозило и код стал не исполняться.
  3. Использую БД 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)); .......
×
×
  • Создать...