Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.08.2010, 19:25
IGONZO IGONZO вне форума
Прохожий
 
Регистрация: 02.08.2010
Сообщения: 3
Репутация: 10
По умолчанию как сделать поиск по dbgrid с помощю ado?

помогите плиз новичку как сделать поиск по dbgrid с помощю ado
а то меня точно выпрут из вуза
Ответить с цитированием
  #2  
Старый 02.08.2010, 20:14
windaws windaws вне форума
Начинающий
 
Регистрация: 28.08.2009
Сообщения: 116
Репутация: 10
По умолчанию

Цитата:
Сообщение от IGONZO
помогите плиз новичку как сделать поиск по dbgrid с помощю ado
а то меня точно выпрут из вуза
уже за это выпирают =) IF хоть небольшое представление есть THEN думаю в коде разберешься ELSE выпрут из универа
Код:
procedure TPokupateli.Edit1Change(Sender: TObject);
begin
if (edit1.text<>'') then
begin
dm.org_table.Filter:='(Название LIKE '''+edit1.Text+'%'')';
dm.org_table.Filtered:=true;
end
else
dm.org_table.Filtered:=false;
end;

dm - модуль данных, если таблица находится на форме то можно не указывать
org_table - Название таблицы
Название - поле по которому будет осуществляться фильтрация.
Ответить с цитированием
  #3  
Старый 02.08.2010, 20:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,025
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Windaws, это фильтрация.
Если поиск, то нужно либо пользовать Locate, либо руками по источнику данных и проверять:
Код:
procedure TForm1.Findrecord(AFieldName, AFieldValue : String; AReset : Boolean);
begion
  ADOQuery1.DisableControls; // Не помню, может надо у TDataSource вызывать.
  Try
     If AReset Then ADOQuery1.First Else ADOQuery1.Next;
      While Not ADOQuery1.EOF Do
         Begin
           If ADOQuery1.FieldByName(AFieldName).AsString = AFieldValue 
             Then Exit;
           ADOQuery1.Next;
         End;
     ShowMessage('Ничего не найдено...');
  Finally
    ADOQuery1.EnableControls;
  End;
end;

Код только на точное сравнение и не разбирает типы данных - это только пример.
Ответить с цитированием
  #4  
Старый 05.08.2010, 22:06
IGONZO IGONZO вне форума
Прохожий
 
Регистрация: 02.08.2010
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от windaws
уже за это выпирают =) IF хоть небольшое представление есть THEN думаю в коде разберешься ELSE выпрут из универа
Код:
procedure TPokupateli.Edit1Change(Sender: TObject);
begin
if (edit1.text<>'') then
begin
dm.org_table.Filter:='(Название LIKE '''+edit1.Text+'%'')';
dm.org_table.Filtered:=true;
end
else
dm.org_table.Filtered:=false;
end;

dm - модуль данных, если таблица находится на форме то можно не указывать
org_table - Название таблицы
Название - поле по которому будет осуществляться фильтрация.




TPokupateli это что ???
и к чему его привязать

'(Название LIKE '''+edit1.Text+'%'')';


название в смысле базы или таблицы в базе у мну их три
Ответить с цитированием
  #5  
Старый 05.08.2010, 22:21
IGONZO IGONZO вне форума
Прохожий
 
Регистрация: 02.08.2010
Сообщения: 3
Репутация: 10
По умолчанию




не могу понять чего он ругается
помогите плиз
Ответить с цитированием
  #6  
Старый 08.08.2010, 00:37
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от IGONZO



не могу понять чего он ругается
помогите плиз
Я сейчас сижу и втыкаю в Delphi по 10 часов в день и безумно жалею о том, что когда то выбрал не ту профессию.
Ответить с цитированием
  #7  
Старый 08.08.2010, 00:50
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Windaws, это фильтрация.
Если поиск, то нужно либо пользовать Locate, либо руками по источнику данных и проверять:
Код:
procedure TPokupateli.Edit1Change(Sender: TObject);
begin
if (edit1.text<>'') then
begin
dm.org_table.Filter:='(Название LIKE '''+edit1.Text+'%'')';
dm.org_table.Filtered:=true;
end
else
dm.org_table.Filtered:=false;
end;

Код только на точное сравнение и не разбирает типы данных - это только пример.

Задам Вам втсречный вопрос, сейчас нет под рукой делфи, а как сделать поиск по всем полям? Указать '' или оставить полне пустным вместо "Название" ?

Последний раз редактировалось gebs, 08.08.2010 в 00:53.
Ответить с цитированием
  #8  
Старый 08.08.2010, 01:18
gebs gebs вне форума
Прохожий
 
Регистрация: 03.08.2010
Сообщения: 48
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Windaws, это фильтрация.
Если поиск, то нужно либо пользовать Locate, либо руками по источнику данных и проверять:
Код:
procedure TForm1.Findrecord(AFieldName, AFieldValue : String; AReset : Boolean);
begion
  ADOQuery1.DisableControls; // Не помню, может надо у TDataSource вызывать.
  Try
     If AReset Then ADOQuery1.First Else ADOQuery1.Next;
      While Not ADOQuery1.EOF Do
         Begin
           If ADOQuery1.FieldByName(AFieldName).AsString = AFieldValue 
             Then Exit;
           ADOQuery1.Next;
         End;
     ShowMessage('Ничего не найдено...');
  Finally
    ADOQuery1.EnableControls;
  End;
end;

Код только на точное сравнение и не разбирает типы данных - это только пример.

Задам Вам втсречный вопрос, сейчас нет под рукой делфи, а как сделать поиск по всем полям? Указать '' или оставить полне пустным вместо "Название" ?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter