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

 



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.07.2017, 19:44
lmn lmn вне форума
Прохожий
 
Регистрация: 06.07.2017
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Поиск по Базе Данных!

Доброго времени суток!
Вот это взял с Вашего форума (ссылка: "http://www.delphisources.ru/forum/showthread.php?t=13110") указваю ссылку т.к. тема закрыта. Всё компилится, но работает не так хорошо.
Код:
procedure TForm1.Button7Click(Sender: TObject);
begin
  If not DBGrid1.DataSource.DataSet.Locate('Имя', Edit1.Text, [])
  then ShowMessage('ТаLкой записи в Базе Данных Нет!');
end;

Я решил добавить сюда loPartialKey для более удобного поиска и получил следующее:

procedure TForm1.Button7Click(Sender: TObject);
begin
  If not DBGrid1.DataSource.DataSet.Locate('Имя', Edit1.Text, [loPartialKey])
  then ShowMessage('Такой записи в Базе Данных Нет!');
end;
Админ: Пользуемся тегами при оформлении кода!

Но у меня остался не решенным вопрос в продолжение темы. А вопрос такой: При нахождении одинаковых записей в БД и повторном нажатии кнопки "Поиск", поиск не продолжается. То есть, если много записей с одинаковым именем, то при нажатии на кнопку "Поиск" повторно, курсор остаётся на первой найденной записи. Ещё поиск из данного примера ищет не по всему полю. Если кто сталкивался с подобными проблемами и решил их, то пожалуйста помогите. За ранее Благодарен!

Последний раз редактировалось lmn, 07.07.2017 в 21:47.
Ответить с цитированием
  #2  
Старый 06.07.2017, 22:26
Аватар для lmikle
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 6,952
Репутация: 49086
По умолчанию

Ну да, т.к. Locate каждый раз ничинает искать с начала, находит ту же запись и останавливается. Тут придется таки писать поиск "ручками".
Ответить с цитированием
  #3  
Старый 07.07.2017, 09:51
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,391
Версия Delphi: 7, XE5
Репутация: 59585
По умолчанию

Сортирнуть по локейтному полю или заюзать фильтр...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 07.07.2017, 11:59
lmn lmn вне форума
Прохожий
 
Регистрация: 06.07.2017
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ну да, т.к. Locate каждый раз ничинает искать с начала, находит ту же запись и останавливается. Тут придется таки писать поиск "ручками".
Как это сделать?
Ответить с цитированием
  #5  
Старый 07.07.2017, 12:06
lmn lmn вне форума
Прохожий
 
Регистрация: 06.07.2017
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Сортирнуть по локейтному полю или заюзать фильтр...
В этом случае фигня получится. Как продолжится поиск? Да и бутор далёкий от темы просьба не писать!

Последний раз редактировалось lmn, 07.07.2017 в 12:15.
Ответить с цитированием
  #6  
Старый 07.07.2017, 15:34
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 126
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Код:
var
 flg: bool = true;
procedure TfrmMain.Button7Click(Sender: TObject);
begin
 with DBGrid1.DataSource.DataSet do
  begin
   if flg then First else Next;
   while not eof do
    begin
     if FieldByName('Имя').AsString = Edit1.Text then
      begin
       flg:= false;
       break;
      end;
     Next;
     if (eof) and (flg) then
      begin
       First;
       ShowMessage('Такой записи в Базе Данных Нет!');
       break;
      end;
    end;
  end;
end;
__________________
Помогаю платно.
Помогаю иногда бесплатно.
Ответить с цитированием
  #7  
Старый 07.07.2017, 21:56
lmn lmn вне форума
Прохожий
 
Регистрация: 06.07.2017
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от @Rafa3L
Код:
var
 flg: bool = true;
procedure TfrmMain.Button7Click(Sender: TObject);
begin
 with DBGrid1.DataSource.DataSet do
  begin
   if flg then First else Next;
   while not eof do
    begin
     if FieldByName('Имя').AsString = Edit1.Text then
      begin
       flg:= false;
       break;
      end;
     Next;
     if (eof) and (flg) then
      begin
       First;
       ShowMessage('Такой записи в Базе Данных Нет!');
       break;
      end;
    end;
  end;
end;

Это вообще хня полнейшая!

Последний раз редактировалось lmn, 07.07.2017 в 22:02.
Ответить с цитированием
  #8  
Старый 08.07.2017, 11:15
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,499
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от lmn
Это вообще хня полнейшая!
Ты разгадал сакральный смысл этого аккаунта.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #9  
Старый 08.07.2017, 19:01
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,391
Версия Delphi: 7, XE5
Репутация: 59585
По умолчанию

Цитата:
Сообщение от lmn
с подобными проблемами и решил их, то пожалуйста помогите.
Вообще не проблема. Тем более эта программа не нужна, есть другие работающие.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ



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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2017

ВКонтакте   Facebook   Twitter