|
|
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
Приветствую! Первый опыт работы с БД в Delphi, простите если вопрос глупый. БД MS Access, Delphi 10.3 Rio. В Delphi работаю через через ADO. В таблице хранятся числовые значения. Нужно сделать: 1) Фильтрацию по значениям (ОТ и ДО) определенного поля. Механика: в ComboBox выбирается поле, в Edit-ы вводятся пороговые значения, нажимается кнопка Применить. 2) Сортировку по возрастанию/убыванию определенного поля. Механика: в ComboBox-ах выбираются поле и возрастание/убывание, нажимается кнопка Сортировать. Есть также кнопки Сбросить фильтр и Сбросить сортировку. По отдельности каждая из функций работает, но независимо друг от друга. То есть нажатие кнопки затирает старый SELECT запрос к таблице в ADOQuery.Text и выполняет новый. Хочется, чтобы независимо от порядка выполнения функций, запрос применялся к прошлому результату. То есть сначала отфильтровать, потом отфильтрованное отсортировать или наоборот, исходное отображение отсортировать, потом отфильтровать. Мне представляется, что запрос должен идти не с самой таблице в БД, а к результату прошлого запроса, но как к нему обратиться без вложенных запросов я не знаю. Подскажите, пожалуйста, каким путем это можно реализовать. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 21:37 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
skolpin сначала отфильтровать, потом отфильтрованное отсортировать или наоборот, исходное отображение отсортировать, потом отфильтровать. А одновременно фильтровать и сортировать не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 22:03 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
skolpin запрос должен идти не с самой таблице в БД, а к результату прошлого запроса, но как к нему обратиться без вложенных запросов я не знаю. Всякий раз создавай новый запрос. С новыми условиями фильтрации и сортировки. Например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 22:05 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
northener А одновременно фильтровать и сортировать не подходит? ъъъъъ Всякий раз создавай новый запрос. С новыми условиями фильтрации и сортировки. Например. Видимо, речь об одном и том же. Тогда отпадает смысл в двух отдельных кнопках, так даже проще. Спасибо, рассмотрю такой вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 22:15 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
skolpin запрос применялся к прошлому результату. Я ставлю доллар, что ничего из того что вы озвучили вам на самом деле не надо, просто вы не слишком грамотно построили архитектуру приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 22:17 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
Gluck99 Это как? У вас телега впереди лошади. Учился с Visual FoxPro, там была такая сущность как курсор, то есть временная таблица в памяти. Думал сделать что-то подобное тут, чтобы результат фильтрации падал в курсор, а к курсору, как к результату прошлой операции применялась сортировка (или наоборот). Возможно, такой подход устарел вместе с FoxPro или я плохо искал, но подобного в ADO в Delphi не нашел. Gluck99 просто вы не слишком грамотно построили архитектуру приложения. Очень может быть. Я не волшебник, я только учусь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 22:39 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
skolpin Gluck99 Это как? У вас телега впереди лошади. Учился с Visual FoxPro, там была такая сущность как курсор, то есть временная таблица в памяти. Думал сделать что-то подобное тут, чтобы результат фильтрации падал в курсор, а к курсору, как к результату прошлой операции применялась сортировка (или наоборот). Возможно, такой подход устарел вместе с FoxPro или я плохо искал, но подобного в ADO в Delphi не нашел. Gluck99 просто вы не слишком грамотно построили архитектуру приложения. Очень может быть. Я не волшебник, я только учусь :) если таблица относительно небольшая, то можешь зачитать ее на клиента и воспользоваться стандартными Filter и Sort. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 22:41 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
Gerasimenko если таблица относительно небольшая, то можешь зачитать ее на клиента и воспользоваться стандартными Filter и Sort. Задачка учебная, приложение и БД локальные. Спасибо за наводку с Filter и Sort - только начал разбираться в ADO и не знал про эти методы ADOQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2020, 22:50 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, объединил все идеи. Сделал одну кнопку на фильтрацию и сортировку, по которой сначала создается запрос с условиями фильтрации, а потом в зависимости от выбранного поля сортировки меняется ADOQuery.Sort. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2020, 13:28 |
|
||
|
SELECT FROM из результата запроса
|
|||
|---|---|---|---|
|
#18+
skolpin Всем спасибо, объединил все идеи. Сделал одну кнопку на фильтрацию и сортировку, по которой сначала создается запрос с условиями фильтрации, а потом в зависимости от выбранного поля сортировки меняется ADOQuery.Sort. был когда-то такой компонент xQuery ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 05:49 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=46&tid=2038371]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 324ms |

| 0 / 0 |
