С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
1

Фильтрация

18.06.2013, 11:08. Показов 2542. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите с кодом для фильтрации базы.
1. Справа на фото идут Комбобоксы и эдиты, нужно сделать фильтрацию. Выбираем нужное, Нажимаем кнопку НАЙТИ ТУРЫ и в дбгриде влева выводится отфильтрованная база.
2.Есть два Комбобокса. При выборе разной страны, нужно чтобы список курортов в другом комбобоксе менялся...
Миниатюры
Фильтрация  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2013, 11:08
Ответы с готовыми решениями:

Фильтрация
Ребята, необходимо отфильтровывать данные, работает но не на 100%. Ввожу в edit фамилии, одни...

Фильтрация БД
Здравствуйте. Сразу скажу этот проект - задание в колледже. У меня есть 3 таблицы. На формах...

Фильтрация БД
Добрый вечер! Имеется 3 радиокнопки. При выборе 1 отображаются все. при выборе 2 - те у кого...

Фильтрация
Здравствуйте. Помогите разобраться. Есть форма, на ней компонент DBGrid, связанный с таблицей, одно...

20
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
18.06.2013, 11:38 2
Цитата Сообщение от poloten4ik94 Посмотреть сообщение
1. Справа на фото идут Комбобоксы и эдиты, нужно сделать фильтрацию. Выбираем нужное, Нажимаем кнопку НАЙТИ ТУРЫ и в дбгриде влева выводится отфильтрованная база.
В событии нажатия кнопки "НАЙТИ ТУРЫ" формируете SQL запрос, в котором в инструкции WHERE пишите указанные в компонентах условия (если указано в ComboBox/Edit условие - добавляем).
Цитата Сообщение от poloten4ik94 Посмотреть сообщение
2.Есть два Комбобокса. При выборе разной страны, нужно чтобы список курортов в другом комбобоксе менялся...
В событии OnChange первого ComboBox'а очищаете второй ComboBox, заполняете его соответствующими значениями и устанавливаете свойство ItemIndex равное 0. Удобнее первую запись всегда делать "<Не определено>", чтобы выбирались все записи из данной категории.
0
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
18.06.2013, 11:49  [ТС] 3
а с кодом помогите и запросами.. парочку примеров если не сложно
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
18.06.2013, 11:53 4
poloten4ik94, дайте структуру БД, помогу с кодом.
0
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
19.06.2013, 15:12  [ТС] 5
Суть программы:
Тур фирма
На первой форме Показана общая база данных Отелей, городов и т.д
Справа Фильтрация.
Что нужно сделать: При выборе страны (ComboBox1) Комбобокс 2 меняется на другие курорты, при выборе разных курортов, комбобокс 3 меняется на разные отели.
Далее мы выбираем параметры фильтрации, нажимаем найти туры и в Этом же DBgride (слева ) выводятся туры по фильтрации.
Далее выбираем один из выведенных туров нажимаем Бронь (появляется вторая форма)
На первом DB Gride выводится тур который мы выбрали на предыдущей форме, на второй мы вручную забиваем данные человека. Нажимаем оформить - выводится генерация отчета.
Админ панель сделаю сам.
Базу забиваем в Database Desktop
Вложения
Тип файла: rar alias1.rar (863.4 Кб, 34 просмотров)
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
19.06.2013, 15:36 6
poloten4ik94, намного удобнее было бы БД организовать файле mdb (MS Access). Все таблицы в одном месте - редактируются с помощью того же Access (а у вас их должно быть много, а именно, Страны, Курорты, Отели, Аэропорты). Доступ к данным и возможности манипуляции с ними на много лучше (в сравнении BDE с ADO). Мне для того, чтобы запустить вашу программу нужно добавлять алиас Hotels и кучу всего настраивать. Если вы собираетесь переносить это приложение на другой компьютер (например преподавателю), Вам необходимо избавиться от от этого. Я напишу приложение пример со своей базой.
0
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
19.06.2013, 18:44  [ТС] 7
хорошо я тогда начну писать и забивать базу данных на аксесе
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
19.06.2013, 18:46 8
poloten4ik94, завтра в первой половине дня покажу, что сделал - организовал все таблицы БД в Access и почти закончил работу с ними (добавление, редактирование и удаление).
0
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
20.06.2013, 12:54  [ТС] 9
блин завтро первой парой зачёт нужно сдавать уже((

Добавлено через 17 часов 26 минут
Ну что, когда покажешь ?
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
20.06.2013, 13:28 10
Цитата Сообщение от poloten4ik94 Посмотреть сообщение
Ну что, когда покажешь ?
Я уже думал, что не нужно. Не придумал главную таблицу, в которую заносятся данные о заказах (не знаю, какие столбцы Вам нужны). Работает добавление/редактирование/удаление стран. По аналогии можете сделать для всех остальных справочников. Так же, на вкладке поиска заполняются комбобоксы, как просили. По аналогии сделаете для отелей.
Вложения
Тип файла: zip T34.zip (829.7 Кб, 35 просмотров)
0
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
20.06.2013, 14:22  [ТС] 11
так а каким запросом можно.. при выборе в списке строки в DBgride после этого нажатии кнопки бронь, Переходит на форму 2 и в DbGrid 2 (на второй форме) висела эта строка. (
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
20.06.2013, 15:01 12
poloten4ik94, после нажатия кнопки "найти туры" в ваш DBGrid должны отображаться все выбранные отели. У каждого отеля есть поле Id_h, которое однозначно определяет сам отель. Вот от этого значения и отталкивайтесь при нажатии кнопки "забронировать".
1
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
21.06.2013, 04:42  [ТС] 13
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TFormEdit.BitBtn1Click(Sender: TObject);
begin
   case StrToIntDef(Label1.Caption,0) of
      1,2: begin
              if StrToIntDef(Label1.Caption,0)=1 then DataModule1.ADOCountry.Insert
              else DataModule1.ADOCountry.Edit;
              DataModule1.ADOCountry.FieldByName('Name_c').AsString:=Edit1.Text;
              DataModule1.ADOCountry.Post;
           end;
      3,4: begin
            if StrToIntDef(Label1.Caption,0)=1 then DataModule1.ADOAirport.Insert
              else DataModule1.ADOAirport.Edit;
              DataModule1.ADOAirport.FieldByName('Name_p').AsString:=Edit2.Text;
              DataModule1.ADOAirport.Post;
 
           end;
Вот так для другой кнопки (Добавление Аэропорта)?

Добавлено через 5 часов 36 минут
так косяк

Delphi
1
2
3
4
5
6
7
8
  with Form1 do begin
    adoquery1.Close;
    adoQuery1.SQL.clear;
   adoquery1.SQL.add('select * from Таблица1 where (Таблица1.Страна) LIKE "'+ form1.combobox1.text+'%"');
   adoquery1.SQL.Add('and Таблица1.город LIKE "'+combobox2.Text+'%"');
   adoquery1.SQL.Add('and Таблица1.Отель LIKE "'+combobox3.Text+'%"');
   adoquery1.SQL.Add('and Таблица1.Звезды LIKE "'+combobox4.Text+'%"');
   adoquery1.Open;
пишет что параметр Таблица1.Страна не имеет значения по умолчанию что не так

Добавлено через 5 минут
Добавил кавычки заработало, теперь вылазит ошибка в инструкции Insert Into

Добавлено через 22 минуты
сори тупанул не там писал код, все работает только один косяк, как мне сделать чтобы фильтровалось не только выбрав все комбобоксы но и если я выбираю только один. Если выбираю один то показывает пустоту в базе.
И как ещё добавить фильтрацию Edit-ов.
у меня в фильтре есть ещё Ценовая катигория (Стоимость (от)-(до) ) - как для них дописать код?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Button1Click(Sender: TObject);
begin
  adoquery1.Close;
    adoQuery1.SQL.clear;
   adoquery1.SQL.add('select * from Таблица1 where (Таблица1.Страна) LIKE "'+ form1.combobox1.text+'%"');
   adoquery1.SQL.Add('and Таблица1.Город LIKE "'+combobox2.Text+'%"');
   adoquery1.SQL.Add('and Таблица1.Отель LIKE "'+combobox3.Text+'%"');
  adoquery1.SQL.Add('and Таблица1.Звезды LIKE "'+combobox7.Text+'%"');
    adoquery1.SQL.Add('and Таблица1.Питание LIKE "'+combobox8.Text+'%"');
     adoquery1.SQL.Add('and Таблица1.Авиокомпания LIKE "'+combobox4.Text+'%"');
     adoquery1.SQL.Add('and Таблица1.Аэропорт LIKE "'+combobox5.Text+'%"');
   adoquery1.Open;
   ADOQuery1.Active:=false;
ADOQuery1.Active:=true;
 
 
end;
 
end.
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
21.06.2013, 10:09 14
Цитата Сообщение от poloten4ik94 Посмотреть сообщение
как мне сделать чтобы фильтровалось не только выбрав все комбобоксы но и если я выбираю только один
@poloten4ik94, Вам необходимо конструировать запрос в зависимости от выбора в Комбобоксах - если что-то выбрано, то добавляем в условие, если ничего не выбрано, то не добавляем.
Delphi
1
2
3
4
5
6
...
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from Таблица1 where (Таблица1.Страна) LIKE "'+ form1.ComboBox1.text+'%"');
if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Город LIKE "'+ComboBox2.Text+'%"');
...
Цитата Сообщение от poloten4ik94 Посмотреть сообщение
у меня в фильтре есть ещё Ценовая катигория (Стоимость (от)-(до) ) - как для них дописать код?
Удобнее использовать параметры
Delphi
1
2
3
4
5
6
7
...
ADOQuery1.SQL.Add('and Таблица1.[Поле с ценой] between :p1 and :p2');
ADOQuery1.Parameters.Refresh;
ADOQuery1.Parameters[0].Value:=//подставляете значения типа real
ADOQuery1.Parameters[1].Value:=//подставляете значения типа real
ADOQuery1.Open;
...
1
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
21.06.2013, 10:49  [ТС] 15
так ?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
with Form1 do begin
  adoquery1.Close;
    adoQuery1.SQL.clear;
   adoquery1.SQL.add('select * from Таблица1 where (Таблица1.Страна) LIKE "'+ form1.combobox1.text+'%"');
 if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Город LIKE "'+ComboBox2.Text+'%"');
if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Отель LIKE "'+ComboBox2.Text+'%"');
 if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Звезды LIKE "'+ComboBox2.Text+'%"');;
if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Питание LIKE "'+ComboBox2.Text+'%"');
if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Авиокомпания LIKE "'+ComboBox2.Text+'%"');
if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Аэропорт LIKE "'+ComboBox2.Text+'%"');
   adoquery1.Open;
   ADOQuery1.Active:=false;
ADOQuery1.Active:=true;
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
21.06.2013, 10:53 16
Цитата Сообщение от poloten4ik94 Посмотреть сообщение
так ?
Нет. Почему вы везде к ComboBox2 (у вас в нем только Города храняться) обращаетесь, если выше вы показывали разные ComboBox'ы?

Добавлено через 56 секунд
adoquery1.Open и ADOQuery1.Active:=true одно и то же.
1
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
21.06.2013, 11:05  [ТС] 17
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
with Form1 do begin
  adoquery1.Close;
    adoQuery1.SQL.clear;
   adoquery1.SQL.add('select * from Таблица1 where (Таблица1.Страна) LIKE "'+ form1.combobox1.text+'%"');
 if ComboBox2.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Город LIKE "'+ComboBox2.Text+'%"');
if ComboBox3.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Отель LIKE "'+ComboBox3.Text+'%"');
 if ComboBox7.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Звезды LIKE "'+ComboBox7.Text+'%"');;
if ComboBox8.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Питание LIKE "'+ComboBox8.Text+'%"');
if ComboBox4.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Авиокомпания LIKE "'+ComboBox4.Text+'%"');
if ComboBox5.ItemIndex>0 then ADOQuery1.SQL.Add('and Таблица1.Аэропорт LIKE "'+ComboBox5.Text+'%"');
   ADOQuery1.Active:=false;
ADOQuery1.Active:=true;
Добавлено через 57 секунд
работает только страна
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
21.06.2013, 11:08 18
@poloten4ik94, выложите приложение. Отсюда не видно ничего, откуда у вас берутся данные и как берутся.
1
6 / 6 / 1
Регистрация: 01.12.2011
Сообщений: 113
21.06.2013, 11:14  [ТС] 19
@Waddonator,
Слушай помоги там доклипать, разбирался по твоей программе, пытался сделать чтобы комбобоксы менялись при смене города.. невкакую. И фильтрацию доделать. Сейчас еду на учебу часа через полтора зайду... Выручай 4 парой кровь из носа сдавать нужно
Вложения
Тип файла: rar Семин КР1.rar (927.0 Кб, 10 просмотров)
0
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
21.06.2013, 12:34 20
держи
Вложения
Тип файла: zip Семин КР1.zip (1.12 Мб, 27 просмотров)
1
21.06.2013, 12:34
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2013, 12:34
Помогаю со студенческими работами здесь

Фильтрация в БД
Добрый вечер!.

Фильтрация
Добрый вечер!!! Помогите пожалуйста ...делаю фильтр для инвентаризационного номера ...Пишу...

фильтрация
Добрый день. Подскажите мне, пожалуйста, несколько вопросов по фильтрации. База данных выполнена...

Фильтрация!!!
Здравствуйте))) Обращаюсь к Вам с вопросом, хочу сделать фильтрацию по специальности, специальность...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru