Показать сообщение отдельно
  #22  
Старый 16.07.2020, 20:17
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

1. Датасет закрывать отдельной командой (Adoquery1.close) не нужно, он автоматически закроется сам, как только начнёте его изменять (та же команда clear это и сделает).
2. Имя таблицы - "table" - выбрано неудачно, может оказаться ключевым словом! Назовите хотя бы MyTable. А лучше - чтобы название отображало суть. По этой же причине названия типа "Adoquery1" являются неудачными, т.к. ничего не говорят о том, что это за датасет. Вам же самому неудобно будет с этим работать. Даже если проект небольшой с несколькими датасетами - уже будет непонятка, постоянные воспоминания, что есть что. Лучше не лениться и сразу давать внятные имена, и не только датасетам, а всем компонентам, к которым обращаетесь программно.
3. Что-то я не увидел команды открытия датасета (Adoquery1.Open). Без этого никакого доступа к данным не будет.
4. Числа не нужно брать в кавычки! В этом случае выражение "1.2" воспринимается как строка, и сравнение "больше/меньше" теряет всякий смысл.
5. Непонятно, зачем в приведённом фрагменте первый if, если то же самое условие отрабатывается в запросе.
6. SQL-запрос будет выполняться, даже если в таблице нет ни одной записи. Главное, чтоб сам запрос не содержал синтаксических ошибок.
7. Непонятен смысл цикла в конце фрагмента. Зачем заносить в массив данные, которые есть в датасете, если можно их брать из датасета?
8. Также совершенно неверно всунуто преобразование типов в 10-й строке. Поле "cy" какого типа у Вас? Если Float, тогда и пишите adotable1.fieldbyname('cy').AsFloat. А подобные преобразования типов ни к чему, это прямой путь к багам, да и рискуете поймать исключение.
Ответить с цитированием