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

Поиск по БД, Delphi

03.01.2018, 20:59. Показов 4299. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код на поиск по полю Edit в БД
Не понимаю почему не ищет ничего. Просто игнорирует


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm3.Edit1Change(Sender: TObject);
var help1, help2: string;
begin
help1:='%'+Form3.Edit1.Text+'%';
help2:= QuotedStr(help1);
with Form3.ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('Select*from Заказы where [Код_продукции] like'+help2+'');
open;
end;
 
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.01.2018, 20:59
Ответы с готовыми решениями:

Delphi. Поиск суммы в базе данных (Delphi)
Здравствуйте. На Delphi нужно создать базу данных со столбцами Товар, Сумма за единицу и т.д.... Все столбцы заполнены, кроме...

Поиск в ADoquery, Delphi, поиск в базе данных
Доброго времени суток многоуважаемые пользователи данного сайта! Есть очень глупая проблема, с которой я, к сожалению, справиться не...

Delphi поиск
Снова здравствуйте . Можете помочь разобраться , не могу выполнить поиск . По данному коду ошибки не выдает и он вроде как верный , но...

33
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 21:16
Пробелы не забываем...
Delphi
1
SQL.Add('Select * from [Заказы] where [Код_продукции] like '+help2);
Добавлено через 2 минуты
Только какого типа это Ваше поле Код_продукции?
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 21:26  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Пробелы не забываем...
все равно не ищет

Добавлено через 4 минуты
Цитата Сообщение от D1973 Посмотреть сообщение
Только какого типа это Ваше поле Код_продукции?
в БД как числовой
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 21:28
Отлаживайте свой запрос в самой СУБД (Вы, кстати, ее и не озвучили). А когда будет в СУБД работать - текст запроса перенесете в Delphi...

Добавлено через 58 секунд
Цитата Сообщение от shilldik Посмотреть сообщение
в БД как числовой

А с какого перепугу там конструкция LIKE тогда? Она применима только к текстовым полям!
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 21:29  [ТС]
как тогда переделать для числового, не подскажите?
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 21:31
1. Убрать этот код из события OnChange Эдита, перевесить его на кнопку какую-нибудь...
2. Использовать обычные операторы сравнения: =, >=, <=
3. Убрать всякие лишние переменные...
Delphi
1
2
3
4
5
6
with ADOQuery1 do
begin
close;
SQL.Text := 'Select * from Заказы where [Код_продукции] = ' + Edit1.Text; 
open;
end;
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 21:35  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Использовать обычные операторы сравнения: =, >=, <=
то есть like заменить оператором?
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 21:40
Цитата Сообщение от shilldik Посмотреть сообщение
like заменить оператором?
Не просто заменить, но и исключить всякие кавычки и знаки процента в критерии поиска... Я примерный код по точному совпадению уже написал...
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 21:41  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Не просто заменить, но и исключить всякие кавычки и знаки процента в критерии поиска... Я примерный код по точному совпадению уже написал...
просто вы позже его добавили, сейчас пробую по нему.
пишет "несоответствие типов данных в выражении условия отбора"
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 22:01
Цитата Сообщение от shilldik Посмотреть сообщение
пишет "несоответствие типов данных в выражении условия отбора"
Я не вижу, что и как Вы там делаете, но у меня это отрабатывает... Может, я чего не так делаю?
Таблица БД
Название: Снимок.PNG
Просмотров: 129

Размер: 3.7 Кб
Код и результат
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 22:04  [ТС]
вот у меня как. не понимаю что не так
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm3.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
close;
SQL.Text := 'Select * from Çàêàçû where [Êîä_ïðîäóêöèè] = ' + Edit1.Text;
open;
end;
 
end;
Миниатюры
Поиск по БД, Delphi  
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 22:08
А код-то где?

Добавлено через 2 минуты
Хотя не надо... Уже по скрину видно, что нифига ни числовой у Вас тип поля "Код_продукции"... Вы уж там, для начала, определитесь точно, с каким типом оперируете, а потом вопрос задавайте.
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 22:10  [ТС]
как не числовой то?
Миниатюры
Поиск по БД, Delphi  
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 22:14
Вот обратите внимание на выравнивание в поле "Код заказа" (которое числовое) и "Код продукции" (которое непонятно какое)... Видите разницу?
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 22:16  [ТС]
прошу прощения. по невнимательности не ту базу открыла. в исходной, которая используется в программе Код продукции стоит как текстовой
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 22:29
Так, с одной проблемой разобрались, едем дальше...
Отбор по точному совпадению:
Delphi
1
ADOQuery1.SQL.Text := Format('Select * from Заказы where [Код_продукции] = "%s"', [Edit1.Text]);
Отбор по частичному совпадению по первым символам
Delphi
1
ADOQuery1.SQL.Text := Format('Select * from Заказы where [Код_продукции] LIKE "%s%%"', [Edit1.Text]);
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 22:31  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Видите разницу?
если честно-нет...

Добавлено через 2 минуты
Цитата Сообщение от D1973 Посмотреть сообщение
Отбор по частичному совпадению по первым символам
это по прежнему надо на кнопке прописывать? или на edit?
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 22:40
Цитата Сообщение от shilldik Посмотреть сообщение
если честно-нет
Для информации: выравнивание в ячейке таблицы числовых данных ведется по правому краю, текстовых - по левому. Это, конечно, легко переназначается (выравнивание в ячейке, в смысле), но, судя по скринам, Вы этого не делали...

Добавлено через 7 минут
Цитата Сообщение от shilldik Посмотреть сообщение
это по прежнему надо на кнопке прописывать?
На мой взгляд в событии OnChange вообще не рационально запрос вызывать: сколько символов вводите, столько раз запрос выполняется... Избыточно это, проще уж тогда фильтр накладывать на набор данных...
0
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 45
03.01.2018, 22:42  [ТС]
по-прежнему не ищет...
0
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,422
Записей в блоге: 3
03.01.2018, 22:45
Выкладывайте проект вместе с базой, утром посмотрю...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.01.2018, 22:45
Помогаю со студенческими работами здесь

Delphi 7 Поиск в БД
В общем ребят, суть задачи такая в окне программы строка ввода ( для поиска ) и окошко, куда будет выводиться информация, если таковая...

Поиск на Delphi
я сделала запрос на Delphi, select VRACHI. ID_VR, VRACHI.FAM, VRACHI.NAME, VRACHI.OTCH, Pacient.fam, pacient.name, pacient.otch,...

Поиск в файле в Delphi
Есть такой код. Как его изменить чтобы он открывал файл не OpenDialog а просто через команду и количество элемента который программа ищет...

Delphi БД запросы Поиск
Код procedure TForm1.Button13Click(Sender: TObject); begin try ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM Tab WHERE...

Delphi поиск по дате
Привет всем. Уже второй или третий час ломаю голову над тем, как с помощью запроса найти дату в таблице. (Таблица была создана в Database...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru