powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Результат SET FILTER и SET ORDER в курсор?
21 сообщений из 21, страница 1 из 1
Результат SET FILTER и SET ORDER в курсор?
    #35835818
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли загнать результат выборки и сортировки (SET FILTER и SET ORDER) в курсор?
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35835855
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scan
insert
endscan

???


В принципе можно узнать выражение фильтра и индексного выражения и
использовать их через макроподстановку в select`e


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35835864
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Galyamov Rinat
scan
insert
endscan

???


В принципе можно узнать выражение фильтра и индексного выражения и
использовать их через макроподстановку в select`e




можно примерчик?
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35835868
ImperousМожно ли загнать результат выборки и сортировки (SET FILTER и SET ORDER) в курсор?
Set filter - это не выборка. Это установка правила "видимости" записей.
Set order - это не сортировка. Это установка активного индекса. Отсортированность - побочный эффект.
Это настроечные команды, что вроде бы должно быть хорошо видно по первому слову SET. Команда SET изменяет настройки фокса и ничего не делает с данными.
Юзайте команду Select SQL и такие "интересные" вопросы отпадут сами по себе.
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35835878
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousМожно ли загнать результат выборки и сортировки (SET FILTER и SET ORDER) в курсор?

Ну и где тут "выборка", где "сортировка" ? Скучно с вами, Imperous. Вы чего-нить поизящней придумывайте. Типа "Как курсор-адаптер загнать в XML, запаковать зипом и послать е-майлом".
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35835943
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно суть того зачем оно надо - для того чтоб потом в нормальном селекте обработать полученные данные, закинуть в курсор и выкинуть курсор на печать.
возможно я неправильно изначально спросил... но, имеется результат вот этих правил "видимости" и "индексности" и его надо обработать
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35835964
Imperousпотом в нормальном селекте обработать полученные данные, закинуть в курсор и выкинуть курсор на печать.
Что такое "нормальный селект"? И чем он отличается от "ненормального"?
На печать можно выкинуть сразу результат вот этих правил "видимости" и "индексности" без селектов и курсоров.
На select sql не действуют правила "видимости" и "индексности", это совершенно другой механизм, обеспечивающий сам по себе и видимость и сортированность.
И эти механизмы при слабых знаниях и того, и другого, лучше не смешивать.
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836034
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Imperousпотом в нормальном селекте обработать полученные данные, закинуть в курсор и выкинуть курсор на печать.
Что такое "нормальный селект"? И чем он отличается от "ненормального"?
На печать можно выкинуть сразу результат вот этих правил "видимости" и "индексности" без селектов и курсоров.
На select sql не действуют правила "видимости" и "индексности", это совершенно другой механизм, обеспечивающий сам по себе и видимость и сортированность.
И эти механизмы при слабых знаниях и того, и другого, лучше не смешивать.

Хорошо, допустим есть таблица (tab1) из 20 записей, первое поле "ID" (int autoinc), последнее поле "N" (int, номер id из другой таблицы (tab2)), результат SET ORDER И SET FILTER нам отображает:
id ... N8...54...119...12...114...313...211...3
Если вот этот результат теперь например находится (я не знаю где он находится) в каком-то временном "my_sel".
И теперь я хочу сделать следующее (то, что я имел в виду под нормальный селект):
Код: plaintext
1.
2.
3.
4.
select my_sel.*, tab2.name;
from my_sel;
inner join tab2;
on my_sel.n = tab2.id;
into cursor my_result
И вот этот my_result я хочу отправить на печать.

Непонятный момент - это где взять этот результат от SET FILTER и SET ORDER
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836046
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. другими словами, после SET FILTER и SET ORDER, если бы было возможно сделать brow into cursor my_result, то это было бы самое оно
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836067
Imperousпроходящий.Imperousпотом в нормальном селекте обработать полученные данные, закинуть в курсор и выкинуть курсор на печать.
Что такое "нормальный селект"? И чем он отличается от "ненормального"?
На печать можно выкинуть сразу результат вот этих правил "видимости" и "индексности" без селектов и курсоров.
На select sql не действуют правила "видимости" и "индексности", это совершенно другой механизм, обеспечивающий сам по себе и видимость и сортированность.
И эти механизмы при слабых знаниях и того, и другого, лучше не смешивать.

Хорошо, допустим есть таблица (tab1) из 20 записей, первое поле "ID" (int autoinc), последнее поле "N" (int, номер id из другой таблицы (tab2)), результат SET ORDER И SET FILTER нам отображает:
id ... N8...54...119...12...114...313...211...3
Если вот этот результат теперь например находится (я не знаю где он находится) в каком-то временном "my_sel".

Чушь несете. Еще раз - тут нет выборки! Вы как смотрели свою tab1 или tab2(ту, для которой делали set filter и set order), так ее и смотрите. И никакой ерунды в виде browse into cursor не надо, достаточно просто browse.
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836078
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.
Чушь несете. Еще раз - тут нет выборки! Вы как смотрели свою tab1 или tab2(ту, для которой делали set filter и set order), так ее и смотрите. И никакой ерунды в виде browse into cursor не надо, достаточно просто browse.
я знаю что есть browse, но в этом результате browse мне надо циферки поменять на буковки в одном поле, неужели не понятно????
и я знаю что такого browse into cursor нет, я всего лишь привел пример того что мне бы подошло
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836100
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImperousТ.е. другими словами, после SET FILTER и SET ORDER, если бы было возможно сделать brow into cursor my_result, то это было бы самое оно
1. Фильтрация:
m.lcWHere = FILTER('my_sel') или FILTER('tab2')
select my_sel.*, tab2.name;
from my_sel;
inner join tab2;
on my_sel.n = tab2.id;
into cursor my_result READWRITE NOFILTER ;
WHERE &lcWHere
2. Сортировка:
Определяете текущий TAG у требуемой таблицы и подставляете его в функцию KEY ( lcIndex = KEY(...) )
В курсоре my_result создаете индекс INDEX ON &lcIndex TAG Tag1
Обязательно включите в SELECT все поля, которые могут быть в индексе.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836107
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-KImperousТ.е. другими словами, после SET FILTER и SET ORDER, если бы было возможно сделать brow into cursor my_result, то это было бы самое оно
1. Фильтрация:
m.lcWHere = FILTER('my_sel') или FILTER('tab2')
select my_sel.*, tab2.name;
from my_sel;
inner join tab2;
on my_sel.n = tab2.id;
into cursor my_result READWRITE NOFILTER ;
WHERE &lcWHere
2. Сортировка:
Определяете текущий TAG у требуемой таблицы и подставляете его в функцию KEY ( lcIndex = KEY(...) )
В курсоре my_result создаете индекс INDEX ON &lcIndex TAG Tag1
Обязательно включите в SELECT все поля, которые могут быть в индексе.
С уважением, Алексей.

спасибо, буду пробовать
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836110
Imperousя знаю что есть browse, но в этом результате browse мне надо циферки поменять на буковки в одном поле, неужели не понятно????
Интересно, по каким таким признакам это должно быть понятно?
Короче, как я уже писАл, не надо смешивать эти два механизма. Лучше отказаться от set filter и сразу получать выборку с помощью select с ужным отбором и нужной сортировкой.
Если таки от set filter не уйти, то просто copy to tabN сделает нужную выборку, к которой уже можно будет применить "нормальный" select. Но это танцы с бубном.
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836410
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K,
Это именно оно, пасиб!
а с сортировкой уже как-то разберусь :)
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836419
Imperous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.,
тоже попробую
есть моменты в которых в моем случае без set filtra не обойтись
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836471
Imperousпроходящий.,
тоже попробую
есть моменты в которых в моем случае без set filtra не обойтись
Это только так кажется... Эта команда только так, для "первого приближения"...
Чем больше нарабатывается опыта и чем "массивнее" оказываются рабочие таблицы, тем менее хочется применять SET FILTER... Ибо "тормоза" становятся уже слишком заметными...
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836492
Imperousесть моменты в которых в моем случае без set filtra не обойтись
Не верю! (с)
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836513
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperousя знаю что есть browse, но в этом результате browse мне надо циферки поменять на буковки в одном поле, неужели не понятно????

Чем дальше в лес, тем толще партизаны... Вместо :

Код: plaintext
SELECT AnyPole FROM AnyTable INTO CURSOR AnyCursor

достаточно подменить возвращаемое значение из AnyTable, чтобы "циферки поменять на буковки" :

Код: plaintext
SELECT STR(AnyPole) FROM AnyTable INTO CURSOR AnyCursor

Здесь STR() приведена для примера. Вместо нее можно использовать и свою функцию.
Если вам кажется, что без SET FILTER\SET ORDER ну никак нельзя, т.к. SELECT-SQL получается очень громоздким - поставьте сначала на исходную таблицу все нужные фильтры и ордера, скопируйте ее в таком виде во временную таблицу или курсор, а потом напускайте на этот курсор свой крутой SELECT...INNER JOIN.
Кстати, вы вроде смело используете SELECT-SQL, но все-таки склоняетесь к какому-то противоестественному гибриду SQL и SET FILTER. Вы там поаккуратнее с INNER JOIN, что-то меня в душе беспокоит. Почитайте устав, может ваш консерваторский SET FILTER впишется в SELECT...WHERE.
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35836552
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imperous,

Это приблизительная реализация того, что первым делом предложил Ринат.
Вообще, это более медленный способ, чем предложил Aleksey-K, но тоже имеет право на жизнь.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CLOSE TABLES ALL
*-* (IGEL) Заполняем курсор
CREATE CURSOR CurTest (Flt L, Ord I)
FOR m.i =  100  TO  1  STEP - 1 
	INSERT INTO CurTest VALUES ((MOD(m.i,  2 )= 0 ), m.i)
NEXT m.i
INDEX ON Ord TO SYS( 2015 )
SET ORDER TO  1 
SET FILTER TO Flt
*-* (IGEL) Создаем аналог курсора
AFIELDS(laFlds, "CurTest")
CREATE CURSOR CurTest2 FROM ARRAY laFlds
*-* (IGEL) Заливаем данные из первого курсора во второй.
SELECT CurTest
SCAN
	SCATTER MEMVAR
	INSERT INTO CurTest2 FROM MEMVAR
ENDSCAN
...
Рейтинг: 0 / 0
Результат SET FILTER и SET ORDER в курсор?
    #35837817
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для справки:

Команда COPY TO копирует данные из таблицы с учетом наложенных ограничений по SET FILTER и SET ORDER. Хотя, конечно, постоянная таблица на диске не очень хорошо. Их придеся потом удалять

Ну, и опять же, соглашусь, что, по возможности, SET FILTER лучше не использовать. Слишком уж сложно сопровождать подобную конструкцию. Сложно модифицировать.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Результат SET FILTER и SET ORDER в курсор?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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