Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Поиск в БД

Автор: BAEVIK 1.06.2009 5:03

Есть БД PARADOX нада сделать так чтобы когда водиш любое слова в edit оно его искала в таблице в колонке Название и потом выводила результат поиска ! Если кто знает подскажите !

Автор: Client 1.06.2009 13:23

Table1.IndexName:='';// имя индексного файла (по полю название)
if table1.FindKey([edit1.Text]) then begin
...
end
else ShowMessage('не найдено!');

Автор: BAEVIK 2.06.2009 4:36

Спасибо вот теперь такой вопрос как сделать так чтобы когда нашло выводила всю строку в DBGRID и если нашло не раз водимае слово то выводила все строчки в которых есть это слова ! Помогите пожалуйсто если не трудно просто мне это для курсача нада я всё сделал тока с поискам не как не могу додуматься !

Автор: Client 2.06.2009 22:25

Попробуй сделать фильтрацию

Автор: BAEVIK 3.06.2009 1:49

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

Автор: Client 3.06.2009 1:54

procedure TForm3.Button8Click(Sender: TObject);
var
s:string;
begin
s:=Edit1.Text;
if CheckBox1.Checked then // это ПОЛНОЕ СОВПАДЕНИЕ ИЛИ ЧАСТИЧНОЕ
edit1.Text:='Adres='+chr(39)+edit1.Text+chr(39) //адрес это мое поле было
else edit1.Text:='Adres='+chr(39)+edit1.Text+'*'+chr(39);
table1.Filtered:=True;
Table1.Filter:=edit1.Text;
edit1.Text:=s;
end;
Это пример из моей проги по фильтрации по полю АДРЕС
Для фильтрации по нескольким полям сам не знаю как сделать(
Что не понятно?

Автор: BAEVIK 3.06.2009 3:16

Цитата(Client @ 2.06.2009 21:54) *

procedure TForm3.Button8Click(Sender: TObject);
var
s:string;
begin
s:=Edit1.Text;
if CheckBox1.Checked then // это ПОЛНОЕ СОВПАДЕНИЕ ИЛИ ЧАСТИЧНОЕ
edit1.Text:='Adres='+chr(39)+edit1.Text+chr(39) //адрес это мое поле было
else edit1.Text:='Adres='+chr(39)+edit1.Text+'*'+chr(39);
table1.Filtered:=True;
Table1.Filter:=edit1.Text;
edit1.Text:=s;
end;
Это пример из моей проги по фильтрации по полю АДРЕС
Для фильтрации по нескольким полям сам не знаю как сделать(
Что не понятно?

Спасибо,Попробую сделать!

Автор: BAEVIK 3.06.2009 4:40

ДА чёт я делал не фига не получилась, может поможете я код вставил на кнопку всё проходит вроде без ошибак но когда вожу слова или букву кидает ошибку и всё ! Я вот за архивировал курсач помагите если можете и пожалуйсто если не трудно напишите в чём ошибка !

Автор: Client 3.06.2009 15:42

Ни одной строки кода твоего не видно,чтоб говорить

Цитата
ДА чёт я делал не фига не получилась

Автор: BAEVIK 3.06.2009 17:05

Вот я так попробывал сделать !

procedure TForm3.Button1Click(Sender: TObject); 
var s:string;
begin Table1.IndexName:='Name';// имя индексного файла (по полю название)
if table1.FindKey([edit1.Text]) then begin
s:=Edit1.Text;
if CheckBox1.Checked then // это ПОЛНОЕ СОВПАДЕНИЕ ИЛИ ЧАСТИЧНОЕ edit1.Text:='Name='+chr(39)+edit1.Text+chr(39) //name это мое поле было
else edit1.Text:='Name='+chr(39)+edit1.Text+'*'+chr(39);
table1.Filtered:=True;
Table1.Filter:=edit1.Text;
edit1.Text:=s; end; end;

Когда запускаю всё без ошибак но потом когда в едит вожу букву то вот такое получаеться на скринах сматри !
Прикрепленное изображениеПрикрепленное изображение

Автор: Client 3.06.2009 17:21

Table1.IndexName:='Name';// имя индексного файла (по полю название)
Это я пример привел. Для фильтрации не нужен индексный файл
procedure TForm3.Button1Click(Sender: TObject); 
var s:string;
begin
edit1.Text:='Name='+chr(39)+edit1.Text+chr(39) //ВМЕСТО NAME= пишешь СВОЕ ПОЛЕ и знак =
table1.Filtered:=True;
Table1.Filter:=edit1.Text;
edit1.Text:=s;
end;

На скрине не видно чтоб дбгрид был привязан к таблице

Автор: BAEVIK 3.06.2009 17:26

Цитата(Client @ 3.06.2009 13:21) *

Table1.IndexName:='Name';// имя индексного файла (по полю название)
Это я пример привел. Для фильтрации не нужен индексный файл
procedure TForm3.Button1Click(Sender: TObject); 
var s:string;
begin
edit1.Text:='Name='+chr(39)+edit1.Text+chr(39) //ВМЕСТО NAME= пишешь СВОЕ ПОЛЕ и знак =
table1.Filtered:=True;
Table1.Filter:=edit1.Text;
edit1.Text:=s;
end;

На скрине не видно чтоб дбгрид был привязан к таблице


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

Добавлено через 11 мин.
Всё проходит без ошибак только вот один вопрост не чево не показывает ? Нада писать полностью название я писал одно слова !

Автор: Client 3.06.2009 19:34

Поиск идет по слову целиком, а не по части слова. Для этого и нужна была *

Автор: BAEVIK 4.06.2009 3:52

Поиск может идёт но не чево не показывает на скринах показана 1 скрин это типа запуск проги 2 скрин это вот слова которое ищём 3 скрин это что получается после нажатия на кнопку поиска !
1)Прикрепленное изображение
2)Прикрепленное изображение
3)Прикрепленное изображение
А это текс который вставлен на кнопку поиска !


procedure TForm3.Button1Click(Sender: TObject);
var
s:string;
begin
edit1.Text:='Name='+chr(39)+edit1.Text+chr(39); //адрес это мое поле было
Table1.Filtered:=True;
Table1.Filter:=edit1.Text;
edit1.Text:=s;
end;

Автор: BAEVIK 6.06.2009 3:08

Что не кто не знает (((( unsure.gif