Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 12

SQL-запрос по таблице

24.05.2011, 16:49. Показов 2830. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!) Заранее спасибо, что даже открыли эту тему) в общем у меня SQL-запросы... есть база данных. есть таблицы, заполненные, есть полуготовое приложение.. вот вопросы
1) в едит вводишь значение и чтобы по нажатию кнопки отфильтровалось по столбцу Cost_of_day (при создании таблицы этот столбец имел денежный тип) так, чтобы число введенное там, вывело все записи, меньшие заданного числа. вот примерно что надумал.. с типами данных неувязочка
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm2.Button1Click(Sender: TObject);
 
begin
 with Query1 do
  begin
   close;
   sql.Clear;
   sql.Add('select * from auto where cost_of_day<=:cost_of_day');
   Prepare;
   Params[0].asstring:=Edit1.text;
   paramByName('cost_of_day').value:=strtofloat(edit1.text);
     open;
Edit1.Clear;
 
end;
в общем этот запрос не работает..
2) нужно вывести записи таблицы в ДБ-Грид, отфильтровав по фамилии.. опять-таки вводя в едит фамилию или первые символы таблицы по нажатию кнопки. Вот кое-что есть.. но срабатывает только когда полностью введешь фамилию.. надо чтобы даже по первым символам срабатывало:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm2.Button3Click(Sender: TObject);
begin
 with Query1 do
  begin
   close;
   sql.Clear;
   sql.Add('select * from client where FIO=:FIO);
   Prepare;
   Params[0].asString:=Edit2.text+%';
   open;
  end;
end;
Ребята, помогите кто чем может... пожалуйста...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2011, 16:49
Ответы с готовыми решениями:

SQL запрос по фрагменту строки сохраненной в таблице SQL
Прошу помощи. Есть SQL таблица-1, в ней есть столбец по имени Model_Vagona с типом данных ntext Есть SQL таблица-2, в ней есть столбец...

SQL запрос IN в текстовой таблице
Помогите решить проблему с SQL запросом, tp текстовая таблица ,выдает ошибку. Прошу помощи как правильно написать код begin ...

SQL запрос на создание записи в таблице
Имеется 4 таблицы - Авторы, Книги, Читатели, Выдачи. При нажатии на кнопку ВЫДАТЬ книгу, в таблицу Выдачи должны переноситься: Фамилия...

8
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
24.05.2011, 16:58
= - это точный поиск.

Если хочешь, чтобы искало по началу слова, то
SQL
1
WHERE fld1 LIKE 'Abc%'
% - шаблонный символ, означает "0 или несколько любых символов"
0
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 12
24.05.2011, 17:03  [ТС]
ну как бы я насчет LIKE знал, но просто понимаешь у меня запрос вводится с ЭДИТА в приложении и нажимается на кнопочку.. я не могу понять как это реализовать...
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
24.05.2011, 17:33
> Params[0].asstring:=Edit1.text;
> paramByName('cost_of_day').value:=strtof loat(edit1.text);

Во-первых солите дважды одну и ту же кастрюлю (т.е. либо первое либо второе, два не надо).
Во-вторых, чтобы избежать AV (в первом случае от jet, во втором от дельфи), проверяйте что у Вас в эдите ДО того, как мостите это в параметр
В-третьих, prepare для одиночных запросов не нужен. Он полезен для серийных однотипных запросов, в которых текст не меняется, а меняются только значения параметров

В-третьих, маска like ВСЯ берется в кавычки:

sql.Add('select * from client where FIO LIKE :FIO);
Params[0].asString:= QuotedStr(Edit2.text+'%');

Добавлено через 5 минут
Для более "правильного" поиска, адекватно реагирующего на указание в аргументе поиска то ли контекстного, то ли полнотекстового совпадения надо бы писать так:

if Pos('%',Edit1.Text)>1 then
sql.Add('select * from client where FIO LIKE :FIO);
else
sql.Add('select * from client where FIO LIKE=:FIO);
Params[0].asString:= QuotedStr(Edit2.text);

В этом случае пользователь сам указывает маску с помощью знаков '%', например такую
%Александр%Иванов% (Чобы выбрались все Александры Ивановичи и Александры Инвановны)
либо жестко задает поиск: Иванов Александр Иванович

Добавлено через 59 секунд
Пардон, был невнимателен:
Вместо
sql.Add('select * from client where FIO LIKE=:FIO);
надо
sql.Add('select * from client where FIO=:FIO);
1
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 12
24.05.2011, 17:40  [ТС]
странно но запрос все равно не срабатывает.. вообще в этой строке компилятор выдает ошибку:
sql.Add('select * from client where FIO=:FIO);
приходится закрывать апостроф... но тем не менее запрос не работает
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
24.05.2011, 18:00
Кино и немцы
sql.Add('select * from client where FIO=:FIO)';

Могли бы и сами заметить

Добавлено через 49 секунд
sql.Add('select * from client where FIO=:FIO');

0
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 12
24.05.2011, 18:07  [ТС]
MsGuns, я ж как бы и сказал что апостроф приходится ставить!) но тем не менее запрос не работает! вот я про что...
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
24.05.2011, 18:27
Какой запрос, там их 2. Тот что с Like ?

Поставьте перед Open
ShowMessage(Query1.SQL.Text)

и то, что Вам покажут на экране выложите сюда

Добавлено через 1 минуту
Лучше всего вместе с mdb базы.
Сдаецца мне, что кто-то из нас дурак
0
1 / 1 / 0
Регистрация: 07.12.2010
Сообщений: 12
25.05.2011, 11:42  [ТС]
В общем, помучался еще чутка. Всё, теперь запросы срабатывают.. вот первый (кстати не работал первый запрос потому, что таблица по которой был поиск называлась AUTO.. оказывается нельзя так называть таблицу.. странно..)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm2.Button1Click(Sender: TObject);
var m:real;
begin
m:=strtoint(edit1.text);
with Query1 do
  begin
   close;
   sql.Clear;
   sql.Add('select * from auto1 where cost_of_day<=:cost_of_day');
   Prepare;
   ParamByName('cost_of_day').value:=m;
   open;
   Edit1.Clear;
   end;
end;
Вот второй.. чтобы выводил по первым символам

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm2.Button3Click(Sender: TObject);
begin
    with Query2 do
    begin
    close;
    sql.Clear;
    sql.Add('select * from client where FIO like:"FIO%"');
    Params[0].asString:= Edit2.Text+'%';
    open;
    end;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2011, 11:42
Помогаю со студенческими работами здесь

Delphi SQL запрос поиск в таблице по дате
Все добрый вечер! Нужна помощь. Создал SQL запрос, который позволяет при вводе в поле Edit и нажатии на кнопку находить записи в таблице....

SQL запрос, работающий в MS SQL Menegment'e не работает в делфи
Требуется выполнить запрос по нажатию кнопки, запрос сначала написал в Microsoft SQL Managment, где и написал свою БД, там запрос работает,...

SQL и ComboBox в Delphi. Нужно чтобы при выборе специальности в комбобоксе это значение вносилось в SQL запрос
procedure TForm3.Button2Click(Sender: TObject); begin try ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT Абитуриент.фамилия,...

Запрос к таблице не работает
подскажите пожалуйста где я ошибся? procedure TForm1.Button2Click(Sender: TObject); var i,j,i1,j1:Integer; begin ...

Поиск по таблице через SQL
как в делфи при подключении Acess сделать поиск по таблице через SQL


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru