Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/46: Рейтинг темы: голосов - 46, средняя оценка - 4.89
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220

Фильтрация через Combobox

14.05.2010, 10:03. Показов 8986. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, помогите пожалуйста решить следующую задачу. Есть поле со списком должностей например: менеджер, бухгалтер, финансист. Нужно чтобы при выборе одной из должностей в ComboBox, в DBGrid выводились сотрудники только этой должности(т.е происходила филтрация). Компоненты база Access, ADOConnection, ADOTable, DataSourse.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2010, 10:03
Ответы с готовыми решениями:

Фильтрация через ComboBox
Подскажите пожалуйста. Проблема в том, что когда открываешь программу и делаешь фильтрацию, то все получается. Но когда делаешь это...

Как сделать несколько фильтрация(поиск) через ComboBox?
Доброго времени суток. Хотел бы узнать как сделать фильтрацию, либо поиск по 2 Combobox? В моем случае это программа с Специальность...

Фильтрация БД с combobox
Делаю фильтрацию по этому видео уроку https://www.youtube.com/watchv=FeNlT4gtCg0&index=7&list=PLzTKGcAZiYWI6v7mYiFR-rOtKJ_Bq5LuA ...

14
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
14.05.2010, 10:32
черех SQL-запрос.
Выложите базу - сформируем
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
14.05.2010, 10:40
Вот примерчик со стандартной демо базой:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 337
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object DBLookupComboBox1: TDBLookupComboBox
    Left = 482
    Top = 13
    Width = 145
    Height = 21
    KeyField = 'EmpNo'
    ListField = 'FirstName'
    ListSource = DataSource1
    TabOrder = 0
  end
  object DBGrid1: TDBGrid
    Left = 8
    Top = 40
    Width = 619
    Height = 289
    DataSource = DataSource2
    TabOrder = 1
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'Tahoma'
    TitleFont.Style = []
  end
  object ADOConnection1: TADOConnection
    Connected = True
    ConnectionString = 
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\dbdemos.mdb;Pers' +
      'ist Security Info=False'
    LoginPrompt = False
    Mode = cmShareDenyNone
    Provider = 'Microsoft.Jet.OLEDB.4.0'
    Left = 48
    Top = 16
  end
  object ADOQuery1: TADOQuery
    Active = True
    Connection = ADOConnection1
    CursorType = ctStatic
    Parameters = <>
    SQL.Strings = (
      'select * from Employee')
    Left = 136
    Top = 16
  end
  object DataSource1: TDataSource
    DataSet = ADOQuery1
    Left = 136
    Top = 64
  end
  object ADOQuery2: TADOQuery
    Active = True
    Connection = ADOConnection1
    CursorType = ctStatic
    DataSource = DataSource1
    Parameters = <
      item
        Name = 'EmpNo'
        Attributes = [paNullable]
        DataType = ftInteger
        NumericScale = 255
        Precision = 255
        Value = 2
      end>
    SQL.Strings = (
      'select * from Orders where EmpNo=:EmpNo')
    Left = 216
    Top = 16
  end
  object DataSource2: TDataSource
    DataSet = ADOQuery2
    Left = 216
    Top = 64
  end
end
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
27
28
29
30
31
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, DBCtrls;
 
type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBLookupComboBox1: TDBLookupComboBox;
    DBGrid1: TDBGrid;
    ADOQuery2: TADOQuery;
    DataSource2: TDataSource;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
end.
0
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220
14.05.2010, 10:50  [ТС]
Я знаю какой будет текст запроса(таблица всего одна), но не знаю как связать ComboBox и AdoQuery.... Всмысле как это прописать чтобы при выборе в определенного значения в Combobox он ссылался на ранее записанный мной запрос
0
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220
14.05.2010, 11:08  [ТС]
Вот база
Вложения
Тип файла: rar на отправку.rar (328.7 Кб, 214 просмотров)
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
14.05.2010, 11:16
Цитата Сообщение от Mogul-kan Посмотреть сообщение
Я знаю какой будет текст запроса(таблица всего одна), но не знаю как связать ComboBox и AdoQuery.... Всмысле как это прописать чтобы при выборе в определенного значения в Combobox он ссылался на ранее записанный мной запрос
TComboBox имеет событие OnChange - создайте обработчик на него.
Если юзер что-то выберет в комбике - сработает обработчик.
В нем вы должны либо наложить фильтр в самом датасете, либо закрыть запрос, переписать SQL с наложением внутреннего фильтра, и открыть запрос вновь.
0
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
14.05.2010, 11:18
1. запрос для заполнения комбобокса (можно при прорисовке формы или еще где)
SQL
1
2
3
4
SELECT Kadr.Должность
FROM Kadr
GROUP BY Kadr.Должность
ORDER BY Kadr.Должность;
2-ой запрос по OnChange для комбобокса
SQL
1
2
3
4
SELECT Kadr.Фамилия, Kadr.Имя, Kadr.Отчество, Kadr.Должность
FROM Kadr
WHERE (((Kadr.Должность)="'+form1.combobox1.text+'"))
ORDER BY Kadr.Фамилия, Kadr.Имя, Kadr.Отчество;
Добавлено через 52 секунды
это 2 разных объекта TADOQuery (ADOQuery1 и ADOQuery2)
0
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220
14.05.2010, 11:21  [ТС]
2-ой запрос по OnChange для комбобокса, это понятно.... а первый запрос на фому под каким событием прописать?
0
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
14.05.2010, 11:22
да хоть OnPaint)
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
14.05.2010, 11:23
Нафига использовать ComboBox если есть уже готовый DBLookupComboBox. Вы хоть пример мой смотрели? Там вообще ничего писать не надо, все работает автоматом.
ПС: ComboBox или DBComboBox принято использовать в случае создания динамического или экзотического списка, когда их из БД взять нельзя. В противном случае это ошибка.
0
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
14.05.2010, 11:27
DBLookupComboBox имеет дурную привычку делать сначала поле с текстом пустым...
а ComboBox можно указать
Delphi
1
form1.ComboBox1.itesm.itemindex:=1
или
Delphi
1
form1.ComboBox1.text:='Бухгалтер'
и он сразу обработает свой обработчик. Это просто удобно

Добавлено через 1 минуту
в DBLookupComboBox нельзя добавить пункт "Показать всех", а в ComboBox1 моно
0
23 / 23 / 9
Регистрация: 24.04.2010
Сообщений: 220
14.05.2010, 11:28  [ТС]
Ну чтож.... пойду попробую
0
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
14.05.2010, 11:31
Цитата Сообщение от Андрей Борисови Посмотреть сообщение
DBLookupComboBox имеет дурную привычку делать сначала поле с текстом пустым...
а ComboBox можно указать
Delphi
1
form1.ComboBox1.itesm.itemindex:=1
или
Delphi
1
form1.ComboBox1.text:='Бухгалтер'
и он сразу обработает свой обработчик. Это просто удобно
Конечно будет пустым, ведь таблица приемник не задана и следовательно найти текущую запись автоматом нельзя, но кто мешает обработать эту ситуацию? Это всяко лучше, чем гонять данные из базы в память и обратно, да еще обработчики свои писать.
0
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
14.05.2010, 11:36
Цитата Сообщение от Страдалецъ Посмотреть сообщение
но кто мешает обработать эту ситуацию?
ни кто. вот мы и обработали её в ComboBox1.


Добавлено через 1 минуту
шучу. Просто я привык пользоваться ComboBox-ами. т.к. доп. визуальные компоненты на них не замудряюся. А использовать на красивой форме некрасивый стандартный DBLookupComboBox - не стильно
1
Тимуровец
 Аватар для Страдалецъ
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
14.05.2010, 11:45
Ну видимо это вопрос привычки, а чтобы небыло пустым значение делается просто:
Delphi
1
2
3
4
procedure TForm1.FormActivate(Sender: TObject);
begin
 DBLookupComboBox1.KeyValue := DBLookupComboBox1.ListSource.DataSet.Fields[0].AsInteger
end;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.05.2010, 11:45
Помогаю со студенческими работами здесь

Фильтрация в Combobox-е
Доброго времени суток. Подскажите пожалуйста есть ли возможность реализовать такую вещь? Есть combobox, например с фамилиями, можно ли...

Фильтрация с combobox
Всем приветик! Возникла проблемка..надеюсь что поможете решить Есть dGrid и combobox, который осуществляет фильтрацию по...

ComboBox и фильтрация записей
Здравствуйте, покажите пожалуйста, как сделать фильтрацию в зависимости от комбобокса. Т.е. например по фамилии, имени, отчеству Это...

Фильтрация ComboBox + RadioButton
У меня есть 7 RadioButton для выбора дня недели, по выбору фильтруются таблица procedure TForm1.RadioButton1Click(Sender: TObject); ...

Фильтрация с использованием ComboBox и CheckBox.
Помогите сделать фильтрацию с использованием ComboBox и CheckBox - Delphi БД


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru