|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
И то, и другое можно использовать. Попадание в диапазон - всего два условия (если >= началу диапазона AND если <= концу диапазона), так что вполне можно использовать фильтрацию, это будет проще. Только не забудьте о приведении запятой к точке в числах.
|
#2
|
|||
|
|||
Попробую через sql
При работе с Adoquery1 , содержимое таблицы можно увидеть только по созданию формы? Последний раз редактировалось Maks19, 10.07.2020 в 14:08. |
#3
|
||||
|
||||
Для того, чтобы увидеть содержимое датасета (Query или Table), необходимо через DataSource подключить компонент визуализации (DBGrid, например). Разумеется, первое, что должно быть создано, - это форма.
|
#4
|
|||
|
|||
Я имел в виду ,что данные таблицы не видно если не запустить форму это при query в отличие от table. Так ли это?
|
#5
|
||||
|
||||
Данные датасетов, если они созданы и активированы, видны из любой точки приложения, даже если формы, на которых они расположены, не видны. Тут главное - что датасеты есть и активированы, а где конкретно лежат - не важно. Вот, например, из моей программы, пример такого доступа:
Код:
GlobalTempatesFilter := fm_templates.q_KeyWords.Filter; GlobalTempatesFiltered := fm_templates.q_KeyWords.Filtered; // получение данных (свойств датасета) из другого окна. ...... fm_templates.q_KeyWords.Filter := 'Naimen LIKE "%' + trim(eCopyNameOfKomp.SelText) + '%"'; // Фильтрация датасета q_KeyWords, расположенного в другом окне. fm_templates.q_KeyWords.Filtered := true; Последний раз редактировалось Guaho, 11.07.2020 в 22:54. |
#6
|
|||
|
|||
Не понятно ,как работает код?
Код:
lambda =1.3 If (lambda>1.2) and (lambda<1.6) then begin Adoquery1.close; Adoquery1.sql.clear; Adoquery1.sql.add('select lambda from table); Adoquerty1.sql.add(where lambda>"1.2" and lambda<"1.6" '); for i:=0 to 8 do begin c[i ]:=strtofloat(adotable1.fieldbyname('cy').asstring); end; |
#7
|
||||
|
||||
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. А подобные преобразования типов ни к чему, это прямой путь к багам, да и рискуете поймать исключение. Последний раз редактировалось Guaho, 16.07.2020 в 20:28. |