Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2011, 20:13   #1
vladtiko
Новичок
Джуниор
 
Регистрация: 30.06.2011
Сообщений: 2
По умолчанию SQL поиск по нескольким столбцам в Delphi

Необходимо найти все данные с таблицы, которые подходят под указанные в эдитах величины с учетом допусков. С SQL не очень дружу. Помогите пожалуйста правильно написать выделенную строку.

Код:
case ComboBoxLBH.ItemIndex of
0: d:=0;
1: d:=50;
2: d:=100;
end;
if d=0 then begin
lms:=edit1.text;
bms:=edit2.text;
hms:=edit3.text;
lxs:=edit1.text;
bxs:=edit2.text;
hxs:=edit3.text;
end
else begin
l:=strtoint(edit1.text);
lm:=l-d;
lx:=l+d;
lms:=inttostr(lm);
lxs:=inttostr(lx);
b:=strtoint(edit2.text);
bm:=b-d;
bx:=b+d;
bms:=inttostr(bm);
bxs:=inttostr(bx);
h:=strtoint(edit3.text);
hm:=h-d;
hx:=h+d;
hms:=inttostr(hm);
hxs:=inttostr(hx);
end;

DataModule1.FindQuery.Active:=false;
DataModule1.FindQuery.SQL.Clear;
DataModule1.FindQuery.SQL.Add('SELECT * ') ;
DataModule1.FindQuery.SQL.Add('FROM Øòàíöôîðìû');
DataModule1.FindQuery.SQL.Add('WHERE L between (lms) and (lxs) and B between (bms) and (bxs) and H between (hms) and (hxs);
DataModule1.FindQuery.Active:=true;
FindResultForm.ShowModal;
end;

________
Чтобы отформатировать исходный текст не надо писать слово Код:
нужно просто использовать специальные теги
Это тег [CODE]..[/СODE] (при редактировании это кнопочка с решёточкой #)
Выделяете исходный код, нажимаете кнопочку, скрипт форума вставляет нужные теги...
Либо можно руками взять и написать нужные теги..

Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.06.2011 в 21:06.
vladtiko вне форума Ответить с цитированием
Старый 30.06.2011, 21:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Кстати, а где закрывающая кавычка при задании условия?!!!

Ну а по сути проблемы, СУБД (сервер, которому Вы поручаете выполнить Ваш запрос, разумеется не знает, что за такие слова вы понаписали: lms, lxs, bms и т.п.

поэтому Вам надо не имена, А ЗНАЧЕНИЯ передать в запрос.

это можно сделать двумя разными способами.

1) вставить значения прямо в текст запроса..
например,
Код:
.SQL.Add('WHERE L between '+IntToStr(lms)+' and '+IntToStr(lxs)+' and B between '+IntToStr(bms)+' and '.....
либо использовать параметрические запросы:
Код:
DataModule1.FindQuery.SQL.Add('WHERE L between (:lms) and (:lxs) and B between (:bms) and (:bxs) and H between (:hms) and (:hxs)');
DataModule1.FindQuery.Parameters.ParamByName('lms').Value := lms;
DataModule1.FindQuery.Parameters.ParamByName('lxs').Value :=lxs;
DataModule1.FindQuery.Parameters.ParamByName('bms').Value :=bms;
ну и т.д....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.06.2011, 22:21   #3
vladtiko
Новичок
Джуниор
 
Регистрация: 30.06.2011
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Кстати, а где закрывающая кавычка при задании условия?!!!

Ну а по сути проблемы, СУБД (сервер, которому Вы поручаете выполнить Ваш запрос, разумеется не знает, что за такие слова вы понаписали: lms, lxs, bms и т.п.

поэтому Вам надо не имена, А ЗНАЧЕНИЯ передать в запрос.

это можно сделать двумя разными способами.

1) вставить значения прямо в текст запроса..
например,
Код:
.SQL.Add('WHERE L between '+IntToStr(lms)+' and '+IntToStr(lxs)+' and B between '+IntToStr(bms)+' and '.....
Спасибо большое. Помогло
vladtiko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по столбцам Ded Motwey Microsoft Office Access 1 09.09.2010 17:00
Сортировка таблицы по нескольким столбцам KobolD Помощь студентам 0 21.06.2010 17:21
Sql запрос по нескольким полям Епгений БД в Delphi 6 20.06.2010 12:04
Суммирование по нескольким столбцам MaxxVer Microsoft Office Excel 5 08.02.2010 12:27
Нужна помощь по нескольким sql запросам Named SQL, базы данных 3 23.09.2008 13:56