Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
7 / 7 / 5
Регистрация: 08.11.2011
Сообщений: 59

Поиск в БД всех записей, удовлетворяющих условию.

25.02.2012, 20:09. Показов 2574. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание звучит так:
Организуйте поиск сотрудников в таблице, чья дата рождения меньше выбранной в DateTimePicker2.
Предоставьте возможность пользователю перемещаться на первую, последнюю, следующую и предыдущую запись, удовлетворяющую условию.
Основной напряг в том, что я не понимаю, как найти несколько записей. Ведь метод Locate находит только одну запись. А мне нужно найти несколько и перемещаться между ними кнопочками. Как это лучше сделать?
=============
Сейчас так подумал, может попробовать через filterrecord?
Изображения
 
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2012, 20:09
Ответы с готовыми решениями:

Вывести количество записей, удовлетворяющих условию
Добрый день! Прохожу задания на сайте http://www.sql-ex.ru. Никак не могу пройти 28-е задание: Используя таблицу Product, определить...

Вывести количество записей удовлетворяющих условию
SqlConnection sqlcon = new SqlConnection(connect); sqlcon.Open(); SqlCommand sqlcom = sqlcon.CreateCommand(); ...

Подчет количества записей,удовлетворяющих условию, в процедуре
Добрый день. Пишу функцию, которая возвращает количество записей в tablename, в которых columnname равняется recdefinition. ...

9
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
26.02.2012, 02:11
Запросом выбирай нужные данные:-)
0
7 / 7 / 5
Регистрация: 08.11.2011
Сообщений: 59
26.02.2012, 18:28  [ТС]
perepe4a, нет)

Я уже сам придумал.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm2.DateTimePicker2Change(Sender: TObject);
begin
datamodule2.table2.filter := 'B_Data < '''+datetostr (datetimepicker2.date)+'''';
datamodule2.table2.filtered := true;
datamodule2.table2.filtered := false;
end;
 
procedure TForm2.Button5Click(Sender: TObject);
begin
datamodule2.Table2.findprior;
end;
 
procedure TForm2.Button4Click(Sender: TObject);
begin
datamodule2.Table2.findnext;
end;
 
procedure TForm2.Button3Click(Sender: TObject);
begin
datamodule2.Table2.findlast;
end;
 
procedure TForm2.Button2Click(Sender: TObject);
begin
datamodule2.Table2.FindFirst;
end;
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
26.02.2012, 22:34
Цитата Сообщение от R45H Посмотреть сообщение
Я уже сам придумал.
Delphi
1
2
datamodule2.table2.filtered := true;
datamodule2.table2.filtered := false;
и что, этот код работает как ожидается?
0
39 / 71 / 10
Регистрация: 03.02.2012
Сообщений: 362
27.02.2012, 00:41
Конкат параметров не лучшаямидея с точки зрения sql иньекций:-)
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
27.02.2012, 06:37
Delphi
1
datetostr (datetimepicker2.date)
Это называется трепещите пользователи.
Дорогой ТС а вы в курсе что региональные настройки бывают разные.
И что дата может быть не только в виде 01.01.2010, но и в формате 2010-01-01 и 01/01/2010, да и и еще более экзотично выглядеть. И пользователю который привык видеть дату таким чудным образом абсолютно пофиг что ваша программа не сможет ее обработать и как следствие свалится с ошибкой. Пользователь скажет бага и все не работает. И о том какой вы прогер.
Так же присоединяюсь к вопросу arni, вы уверены в этих строках?
И дорогой ТС вы в курсе что делает ваш код вообще?
И на сколько он соотносится с заявленной темой "Поиск в БД всех записей, удовлетворяющих условию"?

perepe4a, конкат в этом коде не самое страшное.
Вот эта часть не менее жуткая
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm2.Button5Click(Sender: TObject);
begin
datamodule2.Table2.findprior;
end;
 
procedure TForm2.Button4Click(Sender: TObject);
begin
datamodule2.Table2.findnext;
end;
 
procedure TForm2.Button3Click(Sender: TObject);
begin
datamodule2.Table2.findlast;
end;
 
procedure TForm2.Button2Click(Sender: TObject);
begin
datamodule2.Table2.FindFirst;
end;
Чем не устроил DBNavigator?
Ну да ладно. Можно использовать свойство Tag и кострукцию Case и код станет компактней. При этом на кнопки вешается лишь одна процедура а не плодится под каждой кнопкой новая с одним оператором.
Ну если вам не за строчки кода платят. Если так, то да, чем больше написал тем больше получил.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.02.2012, 14:02
Delphi
1
Я уже сам придумал.
Вы, товарищ, муть голубую придумали.
Главным образом потому что перепутали божий дар с яишницей, а именно поиск и фильтрацию. Это РАЗНЫЕ вещи и подменять одно другим - вводить пользователя в заблуждение.
Вам посоветовали правильную вещь в [2], но слово "запрос" Вам, наверное, не понравилось.
А зря, ибо это пожалуй лучшее решение данной проблемы.
0
7 / 7 / 5
Регистрация: 08.11.2011
Сообщений: 59
27.02.2012, 19:47  [ТС]
Цитата Сообщение от arni Посмотреть сообщение
и что, этот код работает как ожидается?
Да =)

------------
Блин, ребят, отвечаю всем сразу.

Мне пофиг на региональные настройки.

Да я в курсе, что делает этот код. С помощью кнопок он перемещает указатель в таблице по тем строкам, которые удовлетворяют условию. Мне нужно было через FilterRecord делать, но от этого кода эффект на вид такой же.

Про DbNavigator я знаю, но прогу эту пишу не для себя, а в задании надо было реализовать именно с помощью кнопочек.

О компактности кода буду чуть позже заморачиваться. Когда полностью освоюсь в теме Баз Данных.

Использование запросов в этой задаче не предусматривается.

Поиск и фильтрацию я примерно различаю. Просто при фильтрации все левые записи исчезают, а поиск находит только одну конкретную запись. А здесь я как бы сделал поиск через фильтрацию ^_^

Ну в общем неважно, я работу уже сделал и сдал.
И да, повторюсь. Код и вправду работает
Я сам удивился)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
27.02.2012, 20:31
Delphi
1
Про DbNavigator я знаю, но прогу эту пишу не для себя, а в задании надо было реализовать именно с помощью кнопочек.
Правильный чел писал задание, уважаю. А за нафигатор я бы сразу отрывал прогеру пальцы (за повторный юз - так еще кое что, чтобы не плодил себе подобных)
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
28.02.2012, 03:34
MsGuns,
Цитата Сообщение от MsGuns Посмотреть сообщение
А за нафигатор я бы сразу отрывал прогеру пальцы
Да я не против кнопок я против такого уродского кода.
Если код выглядел так
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm2.Button5Click(Sender: TObject);
begin
   case (Sender As TButton).Tag of
       0:AdoQuery.First;
       1:AdoQuery.Prior;
       2:AdoQuery.Next;
       3:AdoQuery.Last;
   end;
end;
И всем кнопкам участвующим в этом бедламе проставить одну и туже процедуру Button5Click.
я бы и не стал бы заострять на этом внимание
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2012, 03:34
Помогаю со студенческими работами здесь

Запрос: вывод количества записей, удовлетворяющих определенному условию
Всем добрый вечер! SELECT clientfio, Count(pris) FROM clients, posesh ...

Поле суммы значений полей записей, удовлетворяющих условию
Привет всем! Столкнулся с проблемой, в access я начинающий. Есть 2 таблицы. В одной содержатся поля со значениями: Дата, Персона, Сумма...

Как в полях StringGrid проверить сколько записей удовлетворяющих определенному условию?
Здравствуйте! Такая проблема, работа в StringGrid, нужно в поле Имя найти все записи с , например, именем Сергей. Как это реализовать? ...

Поиск элементов, [не] удовлетворяющих условию
Помогите плиз с 14. Я вообще не знаю, как его делать. Очень прошу.

Найти размеры всех прямоугольников, удовлетворяющих условию
задачи на си: 1) найти размеры всех прямоугольников, площадь которых равна заданному натуральному числу S и стороны которых выражены...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru