Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2010, 21:28   #1
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию Поиск в БД

Подскажите пожалуйста, как решить следующую проблему.
По нажатию кнопи выполняется поиск по БД с использованием следующего запроса
Код:
ssql:='SELECT * FROM vuz_bd';
begin
  Query1.Active:=false;
  Query1.SQL.Clear;
  Query1.SQL.Add(ssql);
  Query1.Active:=true;
  if not Query1.Locate('Sys_kod',Edit1.Text,[])
  then
  ShowMessage('Запись не найдена');
end;
Находится первая запись. Как сделать, чтобы при следующем нажатии находилась следующая?
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 09.03.2010, 09:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как сделать, чтобы при следующем нажатии находилась следующая?
Вынеси
Код:
ssql:='SELECT * FROM vuz_bd';
begin
  Query1.Active:=false;
  Query1.SQL.Clear;
  Query1.SQL.Add(ssql);
  Query1.Active:=true;
В другой обработчик (какой-нить скажем в OnCreate формы)
А в клике кнопки оставь только
Код:
 if not Query1.Locate('Sys_kod',Edit1.Text,[])
  then
  ShowMessage('Запись не найдена');
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.03.2010, 21:45   #3
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Спасибо, но не помогло.

К сожалению это тоже ищет только первую запись.
Может где-то необходимо что-то проверить или установить, чтобы
найти следующую.
Код:
procedure TForm1.Button3Click(Sender: TObject); 
  begin
  if Edit1.Text > '' then
  begin
  if not Query1.Locate('Sys_kod',Edit1.Text,[])
  then
  ShowMessage('Запись не найдена');
 end
end;
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Stilet; 11.03.2010 в 10:36.
Sweta вне форума Ответить с цитированием
Старый 11.03.2010, 10:37   #4
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Бегайте по кверине и сравнивайте со значением
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 11.03.2010, 10:44   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Света, вообше то Locate капризный метод.
Я обычно просто в цикле проходу по записям начиная от текущей и сравниваю нужное поле - так дешевле выходит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.03.2010, 11:43   #6
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Спасибо. Буду разбираться. Но теперь у меня следующий вопрос. Почему появляется ошибка по следующему запросу
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var s : AnsiString;
begin
if  CheckBox1.Checked then
  begin
  if Edit1.Text > '' then
  begin
  Query1.Active:=false;
  Query1.Active:=false;
  Query1.SQL.Clear;
  ssql:='SELECT * FROM vuz_bd';
  s := 'WHERE Sys_kod like ''' + '*'+ Edit1.Text + '*''' ;
  Query1.SQL.Add(ssql);
  Query1.SQL.add(s);
  Query1.Open;
  end
  end;
end;
Т.е мне необходимо, чтобы пользователь в Edit1 вводил цифру и по запросу выводились все записи содержащие данную цифру
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 11.03.2010, 11:55   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может вместо * нужно % ставить?
Ошибка то какая? Текст где?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.03.2010, 12:11   #8
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

% ставить нельзя, он относится к String, а у меня поле число.
Вложения
Тип файла: doc Doc2.doc (121.0 Кб, 20 просмотров)
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 11.03.2010, 16:42   #9
grom333
Форумчанин
 
Аватар для grom333
 
Регистрация: 21.10.2008
Сообщений: 337
По умолчанию

Мне понравился вот этот поиск, только он без баттонов, сразу с первого символа ищет.

Код:
procedure TForm1.RzEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

    with ADOQuery1 do begin
       Close;
       SQL.Clear;
       SQL.Add('SELECT DISTINCT Фамилия,Улица,дом,телефон FROM tab1');
       SQL.Add('WHERE Фамилия LIKE'+quotedstr(rzedit1.text+'%'));
       SQL.Add('ORDER BY Фамилия');
       Open;
end;
  end;
Лучше быть последним из львов, чем первым среди шакалов.
Мой чат
community on struggle with zoomics
grom333 вне форума Ответить с цитированием
Старый 18.03.2010, 15:18   #10
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Дело в том, что при поиске по символьным полям у меня вопроса не возникает, а вот по числовым..
Мне хотелось чтобы было аналогично как с символьными. Т.е ввожу в Edit к примеру 1, и после выполнения запрса у меня появляются данные
начинающиеся с 1. и т.д.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в БД Lomka БД в Delphi 1 24.11.2009 23:18
поиск spree Microsoft Office Excel 22 16.11.2009 15:08
Поиск-? Evgenii БД в Delphi 8 31.07.2009 16:27
поиск artemavd БД в Delphi 3 21.10.2008 17:39
Поиск Andr Microsoft Office Excel 2 18.07.2007 11:49