powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фильтрация
6 сообщений из 6, страница 1 из 1
Фильтрация
    #32652863
Khor-Olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При загрузке формы высвечивается выборка. Remote View.
Первоначальную выборку надо фильтровать по многим условиям
Типа: или валюта, или диапазон дат, или банк, или государство и т.д.
Или все, или разная комбинация.

Задать в вьюере все параметры не могу
(могут быть не нужны в данный момент).

Есть что-то типа фильтрации первоначальной выборки?
...
Рейтинг: 0 / 0
Фильтрация
    #32652916
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, больная тема. Создание выборки по заранее неизвестному условию.

Есть 2 принципиальных способа решения:

1) Написание "универсальных" условий, что-то вроде:

WHERE MyDate BETWEEN ?fromDate AND ?toDate

Если условие по датам не нужны, то устанавливаешь параметры заведомо большие чем могут быть, ну что-то вроде:

fromDate={^1900-01-01}
toDate={3000-01-01}

Понятно, что в такой диапазон попадут абсолютно все записи.

То же самое повторяешь по всем возможным критериям отбора.

2) Отказаться от фиксированного Remote View и писать запрос напрямую через SQLExec()

3) Нечто среднее между 2 первыми способами. Делается Remote View по тем критериям, которые будут использованы с максимальной вероятностью и дадут минимальную выборку. Остальные критерии используются для наложения фильтра на результат выборки.

Ну, например, по датам скорее всего условия будут обязательны. Результат выборки будет относительно невелик (ну, допустим, выборка за месяц - тысяча записей). А все остальные критерии отбора используем уже для фильтрации полученной тысячи записей на клиентском месте.
...
Рейтинг: 0 / 0
Фильтрация
    #32652990
Khor-Olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ

Спасибо, что уделяете внимание.

1. SqlExec - пробовала. Условия срабатывают норм.
Но если надо удалить, откор. из сквозного запроса не получ.
считать ключевые поля. Да и Грид прописывать...
2. Закладывать поля по значениям больше?
Но надо фильтр и по сумме и часто по первым сколько-то символам
наименованиям. (Начинается Company а дальше типа не помню)

3. При всем этом надо итоговые суммы по каким-то полям( в зависимости
от фильтра)

На клиентском месте - это как? Через remote..?
...
Рейтинг: 0 / 0
Фильтрация
    #32653431
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Khor-Olga
1. SqlExec - пробовала. Условия срабатывают норм.
Но если надо удалить, откор. из сквозного запроса не получ.
считать ключевые поля. Да и Грид прописывать...
Ну да, программить придется значительно больше, но в общем ничего особо сложного.

Khor-Olga
2. Закладывать поля по значениям больше?
Но надо фильтр и по сумме и часто по первым сколько-то символам
наименованиям. (Начинается Company а дальше типа не помню)

Нет. Писать избыточное условие. Ну, например:

SELECT ...
WHERE MyData BETWEEN ?fromDate AND ?toDate
AND MyCurrency BETWEEN ?fromSum AND ?toSum

Если условие по дате не задано, то принудительно устанавливаю такие значения даты, при которых в выборку попадут все записи, но по суммам устанавливаю нужные значения. Что-то вроде

fromDate={^1900-01-01}
toDate={^3000-01-01}
fromSum=1
toSum=10
Requery("MyView")

Понятно, что при таких значениях в выборку попадут только записи со значением поля MyCurrecncy от 1 до 10, а условие по дате фактически проигнорировано, поскольку в этот диапазон дат укладываются все значения.

Khor-Olga
3. При всем этом надо итоговые суммы по каким-то полям( в зависимости
от фильтра)

На клиентском месте - это как? Через remote..?
Remote View по сути - это временная таблица и обращаться с ней можно как с таблицей, т.е накладывать фильтры тоже можно.

USE MyView
SET FILTER TO BETWEEN(MyCurrency,m.fromSum,m.toSum)

Т.е. в самом Remote View есть условия ТОЛЬКО по дате, а условие по суммам я накладываю на предварительно полученную выборку отобранную по датам. Но это имеет смысл только в том случае если эта предварительная выборка относительно невелика по размерам.
...
Рейтинг: 0 / 0
Фильтрация
    #32653957
Khor-Olga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ

>>USE MyView
>>SET FILTER TO BETWEEN(MyCurrency,m.fromSum,m.toSum)

Были в практике случаи, когда в выборке за месяц (4000) надо
было предоставить поиск где-то по 15 еще условиям.
Т.е. получается что в этом случае - только SQL Pass Through ?

И еще помимо фильтрации нужны итоговые суммы.
Это два запроса: на Select и Sum? Или есть уже какие-то
дополн. компоненты или библиотеки?
...
Рейтинг: 0 / 0
Фильтрация
    #32653977
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Khor-OlgaВладимирМ

>>USE MyView
>>SET FILTER TO BETWEEN(MyCurrency,m.fromSum,m.toSum)

Были в практике случаи, когда в выборке за месяц (4000) надо
было предоставить поиск где-то по 15 еще условиям.
Т.е. получается что в этом случае - только SQL Pass Through ?

Критичным является не количество записей, а объем в байтах скачиваемый с сервера. Т.е. если речь идет о 10 небольших полях, то и 4000 записей может быть отобрано очень быстро. Это надо просто проверить. Сколько времени потребуется для открытия такого View в выборке которого 4000 записей.

Кроме того, ограничение по датам я привел просто для примера. Можно в основном запросе поставить в обязательном порядке 3...4 наиболее часто употребимых условия, с тем расчетом, чтобы при их использовании конечная выборка была относительно невелика. А все прочие условия (если они будут) накладывать уже на результирующую выборку.

Khor-OlgaИ еще помимо фильтрации нужны итоговые суммы.
Это два запроса: на Select и Sum? Или есть уже какие-то
дополн. компоненты или библиотеки?

Да, после получения выборки надо будет делать еще одну выборку. Просто в FoxPro есть еще несколько команд для того же самого:

CALCULATE
SUM
TOTAL

По сути, они делают то же самое, что и Select-SQL с SUM. Однако у каждой из них есть свои особенности работы. Это тебе надо почитать Help и поэкспериментировать.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фильтрация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]