DELPHI Урок 4 Поиск по БД, быстрый поиск по БД

preview_player
Показать описание
Данный урок посвящен созданию быстрого поиска по БД. На мой взгляд любая БД должна бить оснащена функцией поиска, но смотря на некоторый программы с поиском - мне хочется плакать и поэтому я решил искоренить зло и показать как можно при помощи стандартных средств сделать удобный поиск по БД.
Рекомендации по теме
Комментарии
Автор

Да вы, батенька, профи! Эта "хрень" называется одинарная кавычка!) Но вообще то уроки неплохие!

PitSobaka
Автор

Получилось, спасибо, долго не получалось, переписывала около 30 раз. И в бд все соединила и пробелы удалила, не выходила, хорошо, что в коменты залезла. Что бы не был пропущен оператор в самой базе нужно все написать на английском и без пробелов.

АлинаМашкова-пу
Автор

Спасибо вам огромное ! Тем кто не понимает смотрите с первого видео!!!

ДанилТокалов-чф
Автор

Спасибо за видео! Материал мне очень пригодился!

YuriiMokryi
Автор

Проблема в типе. Попробуйте сделать это но уже только текстовыми полями. Например Имя, Фамилия, Отчество, Чтобы было только тексты.. Или же когда создаете базу то опишите цифру как текстовый (Alpha). У меня получился.. Спасибо большое Автору за видео урок

unreal
Автор

А как можно прописать, если используется ADOTable? Что нужно писать после begin? Помогите пожалуйста :(

amerym
Автор

все в точности как у тебя но у меня ошибка "пропущен оператор" хотя я ничего не пропускал(((

heroG
Автор

Наверно врядли кто-то ответит, но почему то данная поисковая строка работает у меня на 2х из 3х форм, на 3й форме при попытке ввода текста в Edit вылетает неопознанная ошибка с указанием на Recordset.Open(Source, ActiveConnection, . Код проверил 100 раз, точно такой же, заново делал форму несколько раз. Ничего не помогает =(

MasterOfGophers
Автор

Здравствуйте подскажите в чём ошибка? Компилирование проходит, но как только начинаю забивать в поиске что-то, то вылазит такая ошибка
First chance exception at $76233EF2. Exception class EOleException with message 'Неопознанная ошибка'. Process Project1.exe (8036)

ShOkErKa
Автор

а как работает конструкция help1:=''%'+Edit1.Text+'%'; что даёт знак процента в апострофах до и после Edit?

КонстантинНиколаев-лц
Автор

procedure TForm1.Edit1Change(Sender: TObject);
var help1, help2 :string;
begin
help1 := '%'+form1.Edit1.Text+'%';
help2 := QuotedStr(help1);
With form1.ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select * from avisma where nam like'+help2+' or group like'+help2+' or otv like'+help2+' or xpe like'+help2+' order by nam');
open;
end;
end;


Выдаёт ошибку с пропуском оператора, ошибку найти не могу, таблица полностью на англ языке. Если косяк у меня в чём то подскажите пожалуйста

kuin
Автор

А как сделать это на двух связанных таблицах? Он находит все именая во всех категориях хотя должен только в выбранной категории имена находить?

rat
Автор

Помогите пожалуйста, работаю с interbase вроде бы все сделала, но не ищет вообще, нуль реакции
procedure TForm4.Edit1Change(Sender: TObject);
var h1, h2:string;
begin
h1:='%'+Form4.Edit1.Text+'%';
h2:=QuotedStr(h1);
with Form4.IBQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from OTVET_ZA_REMONT_KOMP_TEX where FIO like' + h2 + ' or DR like ' + h2 + ' or TABEL_NOMER_OTVET_S like ' + h2 + ' or DOLGNOST_DOLGNOST like ' + h2 + ' or KATEGORIYA like ' + h2 + ' order by FIO ');
Open;
end;

treanya
Автор

а как сделать поиск если в таблице 40 полей? все перечесоять?

Заробіток-йъ
Автор

Добрый день. Подскажите как сделать поиск по дате, где есть точки. Т. Е например 17.05.2020

ПавелЛ-пй
Автор

можно TForm1.Edit1.Text.. и все прочее без TForm1 ведь все в одном юните. Типа так: search := QuotedStr('%' + Edit1.Text + '%'); А search лучше передать, как параметр в := search, сделав SQL запрос параметризированным, типа ADOQuery1.SQLAdd('SELECT * FROM DB WHERE fam LIKE :parameter')

Oleksii_Makhno
Автор

У меня, автор, данные не отображаются.

МатвейИнчин-ыр
Автор

Виктор, добрый день! После того, как трижды перепроверил код и расставил все "лайки" и согласовал имена колонок - все заработало. Спасибо! Но у меня такой вопрос возник: как только начинаю пользоваться поисковиком тут же пропадает полоса прокрутки справа по всей таблице... Даже после того, как удаляю все из строки поиска, она все равно не работает. После перезапуска всей программы снова появляется ДО ТЕХ ПОР, пока не начинаю пользоваться поиском. Т.к. база данных состоит из 8к. записей, то это ОЧЕНЬ не удобно... В чем может быть проблема? Что посоветуете? Спасибо.

Sibarit_Minsk
Автор

Люди просто пишем без пробелов. На англ языке работает.
Также ошибка может быть с числами, тогда указываем в акселе тип не числовой, а текстовый.

СтаніславОлександрович-гб
Автор

procedure TForm2.Edit1Change(Sender: TObject);
var
j, k:string;
begin
j:='%'+Form2.Edit1.Text+'%';
k:=QuotedStr (j);
with Form2.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from Hitsi where Fullname like'+k+' or DateofBirth like'+k+' or Education like'+k+' or Position like'+k+' or Workexperience like'+k+' ORDER BY Fullname');
Open;
end;
end;
Ошибка - ADOQuery1: cannot perform this operation on a closed dataset
Помоги решить пожалуйста

hitsislove