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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 13:30   #1
Aндрей
Пользователь
 
Регистрация: 15.02.2009
Сообщений: 33
По умолчанию Поиск в таблице бд

Имеется таблица в базе данных с разными полями, необходимо в ней организовать поиск данных по какому-то из этих полей. Например, в таблице есть столбец "Кол-во", содержащий строки 5, 2, 50, 2, 2 и т.д. Допустим если искать по этому столбцу строки с 2, при нажатии на копку поиск , он находит первую строку с 2, если эта строка с двойкой не удовлетворяет, то продолжить поиск таким образом, что при повторном нажатии кнопки "Поиск" он нашел строку со след 2 и т.д. если строк с двойками больше нет, то выдал сообщение “не найдено”.
Поиогите пожалуйста это реализовать. В принципе я сделал поиск с пом Locate, FIND KEY, FIND_NEAREST, он находит строку с первой двойкой, но при повторном нажатии на кн "Locate"
он все-равно находит эту же строку..

Вот мой поиск с пом Locate:
Код:
procedure TBooks.Button1Click(Sender: TObject);
var
finder:string;
begin
case
combobox1.ItemIndex of
0:finder:='B_NAME';
1:finder:='B_DATE';
2:finder:='B_KOL';
3:finder:='B_N_KOL';
4:finder:='Avtor';
5:finder:='ganr';
6:finder:='IZDAT';
end;
dm.BOOK.Locate(finder,edit1.Text,[loPartialKey])

end;
Изображения
Тип файла: jpg 2.jpg (32.8 Кб, 107 просмотров)

Последний раз редактировалось Stilet; 27.04.2009 в 09:10.
Aндрей вне форума Ответить с цитированием
Старый 27.04.2009, 04:27   #2
EvKont
Пользователь
 
Регистрация: 06.01.2009
Сообщений: 26
По умолчанию

Использование курсоров в базе данных помогает двигаться по строкам таблицы. Попробуй используя его в цикле от первой до последней записи сравнивать свою 2 с содержимым записи

Код:
Form1.ADOTable.First;

WHILE NOT ADOTable.Eof DO
      BEGIN
      IF ADOTable.FieldByName('Кол-во').AsString = '2' THEN
      ShowMessage('Найдено');
      ADOTable.Next;
      END;
      ShowMessage('Конец');

Последний раз редактировалось Stilet; 27.04.2009 в 09:10.
EvKont вне форума Ответить с цитированием
Старый 27.04.2009, 09:13   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Aндрей
Перед тем как Locate вызвать попробуй перескочить на следующую запись, чтоб он не считал текущую запись (которую сам и нашел)
Код:
if (not dm.BOOK.eof) and (not dm.BOOK.Bof)  then dm.BOOK.next;
dm.BOOK.Locate(finder,edit1.Text,[loPartialKey])
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слова в таблице (datagridview) kommunist Общие вопросы .NET 4 11.04.2010 20:38
Поиск значения в таблице solo7_77 Microsoft Office Excel 3 15.11.2008 01:26
поиск в таблице puma Помощь студентам 3 22.04.2008 23:56
Поиск в таблице БД фЁдОр БД в Delphi 13 14.11.2007 10:05
Поиск в таблице Voffka БД в Delphi 1 08.05.2007 01:16