|
0 / 0 / 0
Регистрация: 25.01.2022
Сообщений: 12
|
||||||
Проблема с фильтрацией в базе данных11.04.2022, 14:36. Показов 664. Ответов 14
Метки нет (Все метки)
Добрый день. Прошу помощи в настройках фильтрации. Суть проблемы. Имеется база созданная в MS ACCESS 2003. Разработано приложение в Delhpi 10. На главной форме к компоненту DBGrig1 привязана таблица которая имеет 3 подстановочных поля. При попытке настроить фильтр первая запись меняет свои данные остальные фильтруются нормально. Да фильтрация идет по подстановочным полям. Код фильтра
0
|
||||||
| 11.04.2022, 14:36 | |
|
Ответы с готовыми решениями:
14
Проблема с фильтрацией данных в DataGridView Проблема с фильтрацией Django проблема с фильтрацией MAC адресов |
|
|
|
| 11.04.2022, 15:48 | |
|
давайте по азам вдарим
данные - в датасетах на кой леший вам какой-то там лукап комбобокс? тем более KeyValue должно по смыслу содержать именно поле датасета "на другой форме" все уже гораздо правильнее - SQL запросы. теперь давайте узнаем, что значит поместить запрос в DBGrid и что вам помешало связать Query и DBGrid а Table и DBGrid - не помешало???
0
|
|
|
0 / 0 / 0
Регистрация: 25.01.2022
Сообщений: 12
|
||
| 11.04.2022, 16:21 [ТС] | ||
|
В DBLookupComboBox происходит выбор данных по которым надо фильтровать данные в сетке DBGrid.
Когда я связываю Query и DBGrid на главной форме то на форме не заполняется все столбцы. Я предполагаю что из за того что в таблице которая связана с DBGrid имеются подстановочные поля. Добавлено через 14 минут
0
|
||
|
0 / 0 / 0
Регистрация: 25.01.2022
Сообщений: 12
|
|
| 11.04.2022, 16:43 [ТС] | |
|
Это результат выполнения фильтрации первая строка(запись) меняется в зависимости от выбраной модели. Вторая - выполнение запроса.
0
|
|
|
|
||
| 11.04.2022, 20:40 | ||
|
в DBLookupCombo происходит замена значения поля в привязанном датасете на код из справочника при этом пользователь видит не код, а другое поле из справочника программе абсолютно все равно, что там видит пользователь и вам как программисту в целом тоже у вас не показано, на каком датасете сидит DBLC, но подозреваю, что на том же самом что происходит в результате - вы меняете значение в привязанном поле текущей записи и плюс еще делаете фильтр по этому же измененному полю мне кажется какое-то из действий тут лишнее. DBLC ну совсем не для этого. вот тут Связанные таблицы - в ComboBox и CheckListBox код по заполнению обычного комбо из справочника. Текст идет на экран, ID - в свойство Object, откуда его при необходимости (при выборе строки в КБ) достаем и ДЕЛАЕМ SQL ЗАПРОС. Который, хоть верно, хоть неверно высказывайся, дает точно такой же датасет, как ваш Table-компонент. Соответственно абсолютно так же привязывается к гриду. Перестаньте уже беспокоить призраки 90-х с однопользовательскими базами и таблицами, которые надо сначала полностью сказать в память, а потом делать по ним фильтр. Сейчас за такой подход можно больно получить по голове.
0
|
||
|
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
|
||||||
| 11.04.2022, 22:40 | ||||||
|
Можно использовать в качестве фильтра DBLookupComboBox настроив только свойства List, но при условии, что его датасетом будет запрос вида:
0
|
||||||
|
0 / 0 / 0
Регистрация: 25.01.2022
Сообщений: 12
|
||||
| 11.04.2022, 23:05 [ТС] | ||||
|
Добавлено через 3 минуты
0
|
||||
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
|
|
| 12.04.2022, 02:19 | |
|
0
|
|
|
Модератор
|
|||
| 12.04.2022, 02:32 | |||
Они там тоже перестроиться не могут, все во временах перестройки сидят...
0
|
|||
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
|
||
| 12.04.2022, 02:39 | ||
|
Мудрость она накапливается! Если знания есть.
0
|
||
|
0 / 0 / 0
Регистрация: 25.01.2022
Сообщений: 12
|
|||||
| 12.04.2022, 06:38 [ТС] | |||||
|
Добавлено через 2 минуты
0
|
|||||
|
Модератор
|
|||
| 12.04.2022, 06:48 | |||
|
А вообще, разговор без проекта и БД - просто беспредметен и скатывается в обыкновенные препирательства. Добавлено через 3 минуты
0
|
|||
|
0 / 0 / 0
Регистрация: 25.01.2022
Сообщений: 12
|
|||
| 12.04.2022, 08:28 [ТС] | |||
|
0
|
|||
|
Модератор
|
||||
| 12.04.2022, 09:44 | ||||
![]() Совсем другое дело SQL-запрос: в нем Вы сами задаете критерии отбора, что именно Вы хотите увидеть. В итоге - Вы получаете минимальный набор данных, но данные в нем только те, которые Вам нужны в текущий момент. Поэтому идея фильтра при таком подходе к формированию НД просто теряет смысл...
0
|
||||
|
|
|
| 12.04.2022, 09:59 | |
|
не нужно делать фильтр
нужно понять концепцию 1) Датасет- это набор данных, полученный в результате запроса. Не таблица в базе. Чтобы изменить что-то в базе, нужно сделать другой запрос - на изменение, вставку, удаление и т.д. 2) Никакой волшебной связи между таблицей БД и датасетом нет. Если тихонько просто удалить всю базу - датасету все равно. 3) Одни и те же данные могут быть запрошены в несколько датасетов. При этом они никак не будут связаны между собой и сами не обновятся при изменениях (см п.2) 4) Несколько DB-компонентов могут быть привязаны к одному датасету. При этом в них синхронно обновляются данные, в том числе, когда мы меняем текущую запись датасета, перемещаясь по нему вперед-назад, или вносим изменения в данные в каком-либо поле. 5) У каждой записи обычно есть идентификатор, ключ, позволяющий однозначно найти эту запись в таблице Если у нас есть датасет, в котором мы стоим на какой-то записи, то достаточно запомнить ее ключ, обычно это поле с названием ID и чтобы работать именно с этой записью, мы просто указываем ее ID 6) из пункта 4 и 5 вытекает следствие если вы кликаете по гриду - откройте форму, заполните ее данными из ЭТОЙ ЖЕ ЗАПИСИ ЭТОГО ЖЕ ДАТАСЕТА измените данные в полях формы. В 2022 рекомендую формы делать из обычных - не-DB-компонентов. После того как форма закрылась, формируем ДРУГОЙ запрос - UPDATE. Желательно с параметрами, это в 100 раз удобнее. Выполняем запрос. После этого как сказано выше, данные в БД уже изменились, а в гриде - нет Поэтому нужно запомнить ID текущей записи датасета, к которому привязан грид, закрыть и заново открыть этот датасет, чтобы новые данные из БД пришли. После чего командой Locate перейти к той записи, на которой вы стояли раньше, используя поиск по ранее сохраненному ID. про DB-компоненты про формы про запросы Концепция обновления данных
1
|
|
| 12.04.2022, 09:59 | |
|
Помогаю со студенческими работами здесь
15
Проблема с подключение к базе данных Проблема с изображениями в базе данных
Проблема с датой в базе данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|