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

1. Я ж написал, что сравнение "больше/меньше" для типа String не имеет смысла. SQL-запрос (или фильтрация датасета, без разницы) выполнится, но на выходе получите фигню, т.е. не то, что запрашивали. Вам нужно преобразовать тип поля с числами во Float, и далее с этим полем работать, как с числовым.
2. Как взять данные из датасета? Да это было уже:
Код:
MyQuery.FieldByName('NameOfMyField').AsFloat;
Будет взято значение из текущей записи. Изменить положение курсора, указывающего на запись, можно методами датасета First. Prior, Next, Last.
3. Ну, во-первых, если стоит задача "если 0,7<lambda<1,2 то произвести интерполяцию с записями (для тех записей чьи lambda равны 0,7 и тех чьи 1,2 )", то ничего не выйдет, потому что первое условие исключает второе, т.к. отсекает значения на краях диапазона. Надо так: "если 0,7 <= lambda <= 1,2".
Во-вторых, я не уверен, что правильно Вас понимаю. Ведь оба условия вообще-то сводятся к одному - нужно найти записи, у которых lambda = 0,7 или lambda = 1,2. В первом условии тоже фигурирует lambda, но оно относится к этой самой таблице или к другой? Если к этой самой, то первое условие не нужно, достаточно второго. Вы, конечно, можете сделать запрос с двумя условиями, но результат будет тот же самый, если оставить только второе.
Если же это разные таблицы, тогда надо смотреть структуру, как там оно у Вас сделано, какой тип связи между таблицами (как раз по названию темы)))). Быть может, понадобится вложенный SQL-запрос, но не факт.
Ответить с цитированием