Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.07.2020, 18:18
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

И то, и другое можно использовать. Попадание в диапазон - всего два условия (если >= началу диапазона AND если <= концу диапазона), так что вполне можно использовать фильтрацию, это будет проще. Только не забудьте о приведении запятой к точке в числах.
Ответить с цитированием
  #2  
Старый 10.07.2020, 10:57
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 119
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Попробую через sql
При работе с Adoquery1 , содержимое таблицы можно увидеть только по созданию формы?

Последний раз редактировалось Maks19, 10.07.2020 в 14:08.
Ответить с цитированием
  #3  
Старый 10.07.2020, 20:15
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Для того, чтобы увидеть содержимое датасета (Query или Table), необходимо через DataSource подключить компонент визуализации (DBGrid, например). Разумеется, первое, что должно быть создано, - это форма.
Ответить с цитированием
  #4  
Старый 11.07.2020, 08:56
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 119
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Я имел в виду ,что данные таблицы не видно если не запустить форму это при query в отличие от table. Так ли это?
Ответить с цитированием
  #5  
Старый 11.07.2020, 22:51
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Данные датасетов, если они созданы и активированы, видны из любой точки приложения, даже если формы, на которых они расположены, не видны. Тут главное - что датасеты есть и активированы, а где конкретно лежат - не важно. Вот, например, из моей программы, пример такого доступа:
Код:
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  
Старый 16.07.2020, 17:31
Maks19 Maks19 вне форума
Начинающий
 
Регистрация: 19.06.2019
Сообщения: 119
Версия Delphi: Delphi7
Репутация: 10
Хорошо

Не понятно ,как работает код?

Код:
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;
Даже если в таблице в поле lambda нет записей >1.2 и <1.6 то все равно происходит sql запрос. Или не так нужно делать?
Ответить с цитированием
  #7  
Старый 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. А подобные преобразования типов ни к чему, это прямой путь к багам, да и рискуете поймать исключение.

Последний раз редактировалось Guaho, 16.07.2020 в 20:28.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter