|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Можно ли загнать результат выборки и сортировки (SET FILTER и SET ORDER) в курсор? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 09:37 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
scan insert endscan ??? В принципе можно узнать выражение фильтра и индексного выражения и использовать их через макроподстановку в select`e Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 10:00 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Galyamov Rinat scan insert endscan ??? В принципе можно узнать выражение фильтра и индексного выражения и использовать их через макроподстановку в select`e можно примерчик? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 10:03 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
ImperousМожно ли загнать результат выборки и сортировки (SET FILTER и SET ORDER) в курсор? Set filter - это не выборка. Это установка правила "видимости" записей. Set order - это не сортировка. Это установка активного индекса. Отсортированность - побочный эффект. Это настроечные команды, что вроде бы должно быть хорошо видно по первому слову SET. Команда SET изменяет настройки фокса и ничего не делает с данными. Юзайте команду Select SQL и такие "интересные" вопросы отпадут сами по себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 10:04 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
ImperousМожно ли загнать результат выборки и сортировки (SET FILTER и SET ORDER) в курсор? Ну и где тут "выборка", где "сортировка" ? Скучно с вами, Imperous. Вы чего-нить поизящней придумывайте. Типа "Как курсор-адаптер загнать в XML, запаковать зипом и послать е-майлом". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 10:11 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
собственно суть того зачем оно надо - для того чтоб потом в нормальном селекте обработать полученные данные, закинуть в курсор и выкинуть курсор на печать. возможно я неправильно изначально спросил... но, имеется результат вот этих правил "видимости" и "индексности" и его надо обработать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 10:33 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Imperousпотом в нормальном селекте обработать полученные данные, закинуть в курсор и выкинуть курсор на печать. Что такое "нормальный селект"? И чем он отличается от "ненормального"? На печать можно выкинуть сразу результат вот этих правил "видимости" и "индексности" без селектов и курсоров. На select sql не действуют правила "видимости" и "индексности", это совершенно другой механизм, обеспечивающий сам по себе и видимость и сортированность. И эти механизмы при слабых знаниях и того, и другого, лучше не смешивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 10:39 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
проходящий.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.
Непонятный момент - это где взять этот результат от SET FILTER и SET ORDER ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 10:59 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Т.е. другими словами, после SET FILTER и SET ORDER, если бы было возможно сделать brow into cursor my_result, то это было бы самое оно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 11:04 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 11:11 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
проходящий. Чушь несете. Еще раз - тут нет выборки! Вы как смотрели свою tab1 или tab2(ту, для которой делали set filter и set order), так ее и смотрите. И никакой ерунды в виде browse into cursor не надо, достаточно просто browse. я знаю что есть browse, но в этом результате browse мне надо циферки поменять на буковки в одном поле, неужели не понятно???? и я знаю что такого browse into cursor нет, я всего лишь привел пример того что мне бы подошло ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 11:15 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
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 все поля, которые могут быть в индексе. С уважением, Алексей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 11:23 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
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 все поля, которые могут быть в индексе. С уважением, Алексей. спасибо, буду пробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 11:25 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Imperousя знаю что есть browse, но в этом результате browse мне надо циферки поменять на буковки в одном поле, неужели не понятно???? Интересно, по каким таким признакам это должно быть понятно? Короче, как я уже писАл, не надо смешивать эти два механизма. Лучше отказаться от set filter и сразу получать выборку с помощью select с ужным отбором и нужной сортировкой. Если таки от set filter не уйти, то просто copy to tabN сделает нужную выборку, к которой уже можно будет применить "нормальный" select. Но это танцы с бубном. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 11:26 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Aleksey-K, Это именно оно, пасиб! а с сортировкой уже как-то разберусь :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 12:50 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
проходящий., тоже попробую есть моменты в которых в моем случае без set filtra не обойтись ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 12:52 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Imperousпроходящий., тоже попробую есть моменты в которых в моем случае без set filtra не обойтись Это только так кажется... Эта команда только так, для "первого приближения"... Чем больше нарабатывается опыта и чем "массивнее" оказываются рабочие таблицы, тем менее хочется применять SET FILTER... Ибо "тормоза" становятся уже слишком заметными... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 13:09 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Imperousесть моменты в которых в моем случае без set filtra не обойтись Не верю! (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 13:18 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Imperousя знаю что есть browse, но в этом результате browse мне надо циферки поменять на буковки в одном поле, неужели не понятно???? Чем дальше в лес, тем толще партизаны... Вместо : Код: plaintext
достаточно подменить возвращаемое значение из AnyTable, чтобы "циферки поменять на буковки" : Код: plaintext
Здесь STR() приведена для примера. Вместо нее можно использовать и свою функцию. Если вам кажется, что без SET FILTER\SET ORDER ну никак нельзя, т.к. SELECT-SQL получается очень громоздким - поставьте сначала на исходную таблицу все нужные фильтры и ордера, скопируйте ее в таком виде во временную таблицу или курсор, а потом напускайте на этот курсор свой крутой SELECT...INNER JOIN. Кстати, вы вроде смело используете SELECT-SQL, но все-таки склоняетесь к какому-то противоестественному гибриду SQL и SET FILTER. Вы там поаккуратнее с INNER JOIN, что-то меня в душе беспокоит. Почитайте устав, может ваш консерваторский SET FILTER впишется в SELECT...WHERE. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 13:25 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Imperous, Это приблизительная реализация того, что первым делом предложил Ринат. Вообще, это более медленный способ, чем предложил Aleksey-K, но тоже имеет право на жизнь. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 13:39 |
|
Результат SET FILTER и SET ORDER в курсор?
|
|||
---|---|---|---|
#18+
Для справки: Команда COPY TO копирует данные из таблицы с учетом наложенных ограничений по SET FILTER и SET ORDER. Хотя, конечно, постоянная таблица на диске не очень хорошо. Их придеся потом удалять Ну, и опять же, соглашусь, что, по возможности, SET FILTER лучше не использовать. Слишком уж сложно сопровождать подобную конструкцию. Сложно модифицировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 20:52 |
|
|
start [/forum/topic.php?fid=41&msg=35835878&tid=1586729]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 339ms |
total: | 510ms |
0 / 0 |