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

Не работает поиск по таблице

15.10.2017, 20:46. Показов 609. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот сам код и скрин прикрепил, в чем ошибка я уже не знаю
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
procedure TForm1.Button11Click(Sender: TObject);
begin
case ComboBox4.ItemIndex of
-1: MessageDlg('Выберите поле для поиска', mtInformation,[mbok],0);
0:begin
if (Edit3.Text='') then begin
DataModule2.DataSource1.DataSet.First;
MessageDlg('Введите значение в поле для поиска', mtInformation,[mbok],0);
exit;
end
else
begin
DataModule2.DataSource1.DataSet.First;
while (not DataModule2.DataSource1.DataSet.Eof) do
begin
if (Edit3.Text=(DataModule2.DataSource1.DataSet.Fields.Fields[2].Value))
then exit
else DataModule2.DataSource1.DataSet.next;
end;
MessageDlg('Поиск не дал результатов', mtInformation,[mbok],0);
DataModule2.DataSource1.DataSet.First;
end;
end;
1:begin
if (Edit3.Text='') then begin
DataModule2.DataSource1.DataSet.First;
MessageDlg('Введите значение в поле для поиска', mtInformation,[mbok],0);
exit;
end
else
begin
DataModule2.DataSource1.DataSet.First;
while (not DataModule2.DataSource1.DataSet.Eof) do
begin
if (Edit3.Text=(DataModule2.DataSource1.DataSet.Fields.Fields[3].Value))
then exit
else DataModule2.DataSource1.DataSet.next;
end;
MessageDlg('Поиск не дал результатов', mtInformation,[mbok],0);
DataModule2.DataSource1.DataSet.First;
end;
end;
2:begin
if (Edit3.Text='') then begin
DataModule2.DataSource1.DataSet.First;
MessageDlg('Введите значение в поле для поиска', mtInformation,[mbok],0);
exit;
end
else
begin
DataModule2.DataSource1.DataSet.First;
while (not DataModule2.DataSource1.DataSet.Eof) do
begin
if (Edit3.Text=(DataModule2.DataSource1.DataSet.Fields.Fields[4].Value))
then exit
else DataModule2.DataSource1.DataSet.next;
end;
MessageDlg('Поиск не дал результатов', mtInformation,[mbok],0);
DataModule2.DataSource1.DataSet.First;
end;
end;
3:begin
if (Edit3.Text='') then begin
DataModule2.DataSource1.DataSet.First;
MessageDlg('Введите значение в поле для поиска', mtInformation,[mbok],0);
exit;
end
else
begin
DataModule2.DataSource1.DataSet.First;
while (not DbGrid1.DataSource.DataSet.Eof) do
begin
if (Edit3.Text=(DataModule2.DataSource1.DataSet.Fields.Fields[5].Value))
then exit
else DataModule2.DataSource1.DataSet.next;
end;
MessageDlg('Поиск не дал результатов', mtInformation,[mbok],0);
DataModule2.DataSource1.DataSet.First;
end;
end;
4:begin
if (Edit3.Text='') then begin
DataModule2.DataSource1.DataSet.First;
MessageDlg('Введите значение в поле для поиска', mtInformation,[mbok],0);
exit;
end
else
begin
DataModule2.DataSource1.DataSet.First;
while (not DbGrid1.DataSource.DataSet.Eof) do
begin
if (Edit3.Text=(DataModule2.DataSource1.DataSet.Fields.Fields[6].Value))
then exit
else DataModule2.DataSource1.DataSet.next;
end;
MessageDlg('Поиск не дал результатов', mtInformation,[mbok],0);
DataModule2.DataSource1.DataSet.First;
end;
end;
5:begin
if (Edit3.Text='') then begin
DataModule2.DataSource1.DataSet.First;
MessageDlg('Введите значение в поле для поиска', mtInformation,[mbok],0);
exit;
end
else
begin
DataModule2.DataSource1.DataSet.First;
while (not DataModule2.DataSource1.DataSet.Eof) do
begin
if (Edit3.Text=(DataModule2.DataSource1.DataSet.Fields.Fields[1].Value))
then exit
else DataModule2.DataSource1.DataSet.next;
end;
MessageDlg('Поиск не дал результатов', mtInformation,[mbok],0);
DataModule2.DataSource1.DataSet.First;
end;
end;
end;
end;
Миниатюры
Не работает поиск по таблице  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2017, 20:46
Ответы с готовыми решениями:

Не работает поиск по таблице: Fatal error: Call to undefined function get_post() in
Доброго времени суток, пытаюсь сделать поиск по таблице, критерий поиска - данные которые будут указаны в форме поиска. При совпадении...

Поиск по части наименования в таблице и перевод курсора в соответствующую область в другой таблице
Добрый день. Есть файл, в нем на листе Label_base вызывается по кнопке форма. Далее задуман такой алгоритм: - юзер вводит в...

Поиск записей в одной таблице, где значения ключевого поля не совпадают с полем в другой таблице
Имеется Access XP, надо создать запрос для поиска записей в таблице ТОВАРЫ,где значения ключевого поля (Артикул) не совпадают со значениями...

3
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
15.10.2017, 22:42
Без всего проекта (вместе с файлом базы) ответа не найти.
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
16.10.2017, 05:22
1. Поиск по базе осуществляется SQL-запросами. Это стандарт де-юре и де-факто... Если Вас ломает от одного звучания слова SQL - то работа с БД - это не для Вас.
2. Даже если оставить SQL в покое, для поиска в наборах данных есть методы Locate() и LookUp(), а не простой перебор, который при достаточном объеме данных займет неоправданно много времени.
3. А если у Вас будет 20 возможных полей для поиска, то что? Вы так и будете один и тот же код писать во всех этих 20-ти вариантах?
4. Что касается Вашей ошибки:
Вы делаете
Delphi
1
if Edit3.Text = (DataModule2.DataSource1.DataSet.Fields.Fields[4].Value) ...
т.е. сравниваете Edit3.Text (значение типа String) с данными, полученными из БД. Безо всякого приведения типов... И какой там, в базе, тип данных - ХЗ! На этом-то программа и спотыкается...
5. Хорошо, предположим, что эта конструкция даже отработала... Но что должно произойти? Вы пишете:
Цитата Сообщение от TheDarkFox Посмотреть сообщение
if (Edit3.Text=(DataModule2.DataSource1.Dat aSet.Fields.Fields[1].Value))
then exit
совпадение нашлось и вы тут же выходите из процедуры. И что дальше?
Цитата Сообщение от TheDarkFox Посмотреть сообщение
DataSource1.DataSet.Fields.Fields[4]
Вообще, кто учит писать такую чушь? У вас есть таблица БД, в этой таблице есть поля, у полей есть имена. Вот и обращайтесь к конкретному полю набора данных по имени: гораздо наглядней и понятней... Я бы еще понял, если бы Вы в цикле поля перебирали, так ведь нет... БД Ваша, что мешает посмотреть наименование полей? Нет же, будем ломиться по номеру поля...
0
5984 / 4559 / 1095
Регистрация: 29.08.2013
Сообщений: 28,197
Записей в блоге: 3
16.10.2017, 07:49
привязывай таблицу к Query и в Query.SQL пишешь

Delphi
1
2
query.sql.text:='select a,b,c from T where '+Combobox.Text+' like ''%' + edit1.text + '%''' ;
query.open;
в Combobox названия полей, в Edit - то что ты ищешь
Так же можно в эдите на KeyPress повесить этот код, тогда по мере набирания текста данные будут фильтроваться (но если таблица большая могут быть подвисания)
Если нужен "четкий" поиск - убираешь % из строки

вот и все - теперь ты знаешь SQL
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2017, 07:49
Помогаю со студенческими работами здесь

Поиск значения в таблице StringGrid (в неупорядоченной таблице)
Здравствуйте! Очень нужна помощь! Есть таблица StringGrid1 с данными( номер, ФИО, возраст, образование и т.п.). Нужно организовать поиск...

Поиск по таблице
ребят у меня такая задача мне нужно создать несколько таблиц(создал) и сделать так что бы при вводе определённого кода находил и выводил...

Поиск по таблице
Добрый день. Делаю сайт с онлайн-подбором тура и застряла на следующей задаче: через phpadmin создала 4 таблицы:...

Поиск по таблице в БД
Добрый вечер всем! Передо мной стоит задача, мне нужно проверит существует ли в таблице user и в поле login вледующая информация например,...

Поиск по таблице
Добрый день, Форумчане. С новым годом. Помогите пожалуйста с вопросом: У меня есть две таблицы: id, Фамилия, имя, Отчество, idCountry и ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
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, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru