Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сортировка в гриде при имеющихся комбах / 17 сообщений из 17, страница 1 из 1
18.02.2009, 15:57
    #35825109
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Имеем таблицу tab1
f1f2f3163256321444

Имеем таблицу tab2
f1f21"Вася"2"Жора"3"Яна"4"Маша"5"Катя"6"Леша"

Имею грид (на основании таблицы tab1 которая в enveronment) в котором 3 поля:
tab1.f1 tab1.f2 = tab2.f1 tab1.f3
Хочу в этом гриде сделать сортировку по ИМЕНАМ, т.е. не так:
поле1поле2 поле31 Леша 32 Катя 63 Жора 14 Маша 4
а вот так:
поле1поле2 поле33 Жора 12 Катя 61 Леша 34 Маша 4
Как такое вымучить?
...
Рейтинг: 0 / 0
18.02.2009, 16:41
    #35825237
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Выводите в гриде результат запроса, а не таблицу с relation
С уважением, Алексей
...
Рейтинг: 0 / 0
18.02.2009, 16:58
    #35825290
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
нет, не хочу курсор
...
Рейтинг: 0 / 0
18.02.2009, 17:38
    #35825456
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
> нет, не хочу курсор

О, Великий Нехочуха.


Записи в подчиненной таблице выводятся в порядке, определенным порядком
следования записей в родительской таблице.

Как добъешься обратного - сообщи.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.02.2009, 17:48
    #35825482
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
вот собственно поэтому и спрсил, мало ли мож кто умный знает :)
но курсор мне не нужен
...
Рейтинг: 0 / 0
18.02.2009, 21:12
    #35825814
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Так поменяй местами главную и подчиненную таблицу! Т.е. сделай Relation не от tab1 к tab2, а наоборот, от tab2 к tab1. Соответственно, укажи у Grid в качестве RecordSource = "tab2"
...
Рейтинг: 0 / 0
18.02.2009, 21:31
    #35825841
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
2 Imperous

огласите еще один раз причины,
по которым Вы не можете создавать временные отборы в родные курсоры?

Ваша задача решается простым отбором с объединением (добавлением избыточной колонки)
и сортировкой именно по избыточной колонке.
...
Рейтинг: 0 / 0
18.02.2009, 21:34
    #35825843
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
ВладимирМТак поменяй местами главную и подчиненную таблицу! Т.е. сделай Relation не от tab1 к tab2, а наоборот, от tab2 к tab1. Соответственно, укажи у Grid в качестве RecordSource = "tab2"
нет, такой вариант не подойдет - tab1 - в любом случае главная, и в ней насамом деле много полей и я хочу чтоб по всем этим полям можно было так сортировать
...
Рейтинг: 0 / 0
19.02.2009, 08:25
    #35826211
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Ну ну. Сиди и хоти.

PS а ведь можно было бы селать одним запросом и временными индексами по
каждому полю, по которому надо сортировать.

Или по каждой сортировке делать свою выборку. Это зависит от объема выборки
и интенсивности пересортировок.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
19.02.2009, 11:13
    #35826595
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Galyamov Rinat
Ну ну. Сиди и хоти.

PS а ведь можно было бы селать одним запросом и временными индексами по
каждому полю, по которому надо сортировать.

Или по каждой сортировке делать свою выборку. Это зависит от объема выборки
и интенсивности пересортировок.

можно пример?
...
Рейтинг: 0 / 0
19.02.2009, 11:42
    #35826713
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Imperousможно пример?
Ну например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
IF !USED('outdata')
     CREATE CURSOR outdata (f1 I, f2 C( 40 ), f3 I)
*-- Если захотите менять сортировку динамически
     INDEX IN f1 TAG TAG1
     INDEX IN f2 TAG TAG2
     INDEX IN f3 TAG TAG3
     SET ORDER TO
ENDIF
ZAP IN outdata
THISFORM.MyGrid.RecordSource = ""
INSERT INTO outdata ;
SELECT t1.f1, t2.f2, t1.f3 ;
FROM tab1 t1 inner join tab2 t2 on t1.f2 = t2.f1 ;
ORDER BY  2 
WITH THISFORM.MyGrid
     .RecordSource = "outdata"
     .Column1.ControlSource = "outdata.f1"
     .Column2.ControlSource = "outdata.f2"
     .Column3.ControlSource = "outdata.f3"
ENDWITH
А вот если надо сортировку менять динамически по выбору соответствующего столбца грида, то можно в событие Click каждого Header столбца добавить код такого вида:
Код: plaintext
1.
2.
3.
Header1.Click:
SET ORDER TO TAG1
Header2.Click:
SET ORDER TO TAG2
Ну и так далее..
Конечно, надо бы еще и картинку менять в Header, показывающий, что именно по этой колонке сортируются данные, предусмотреть смену порядка сортировка (SET ORDER TO ... или SET ORDER TO ... DESCENDING) при повторном нажатии на колоку с уже отсортированными данными и т.п.
Вариантов массу. Проще всего создать свой класс Header (а также Column и Grid :) ) и всю функциональность по работе с сортировками перенести в него. Тогда сможете использовать данную функциональность многократно.
С уважением, Алексей.
...
Рейтинг: 0 / 0
19.02.2009, 11:49
    #35826743
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
2Aleksey-K

авторВаша задача решается простым отбором с объединением (добавлением избыточной колонки)
и сортировкой именно по избыточной колонке.

автор работает с непредподготовленными отборами
и не желает их создавать, однако считает, что придумать и решить
ставящиеся перед собой хотелки не изменя подхода к работе
с данными - это более правильное решение.
...
Рейтинг: 0 / 0
20.02.2009, 05:08
    #35828706
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Вот этот кусок я бы сделал не так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
IF !USED('outdata')
     CREATE CURSOR outdata (f1 I, f2 C( 40 ), f3 I)
*-- Если захотите менять сортировку динамически
     INDEX IN f1 TAG TAG1
     INDEX IN f2 TAG TAG2
     INDEX IN f3 TAG TAG3
     SET ORDER TO
ENDIF

Во первых создать курсор и потом его заполнять - это больше кода, чем просто
Код: plaintext
1.
select ... from ... into cursor
По необходимости можно добавить директиву READWRITE

Во вторых индексировать надо уже заполненный курсор - это отработает быстрее, чем заполнять индексированный курсор/таблицу, т.к. при вставке каждой записи будет пересчитываться и записываться индекс на новую строку. Тогда как индексация заполненного файла позволяет писать индексный файл большими пакетами.

и вот это
Код: plaintext
1.
     INDEX IN f1 TAG TAG1

я так понимаю, должно выглядеть вот так:
Код: plaintext
1.
     INDEX ON f1 TAG TAG1
При таком создании индекса, он будет удален самим фоксом, при закрытии курсора.
...
Рейтинг: 0 / 0
20.02.2009, 07:43
    #35828771
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Galyamov RinatВот этот кусок я бы сделал не так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
IF !USED('outdata')
     CREATE CURSOR outdata (f1 I, f2 C( 40 ), f3 I)
*-- Если захотите менять сортировку динамически
     INDEX IN f1 TAG TAG1
     INDEX IN f2 TAG TAG2
     INDEX IN f3 TAG TAG3
     SET ORDER TO
ENDIF

Во первых создать курсор и потом его заполнять - это больше кода, чем просто
Код: plaintext
1.
select ... from ... into cursor
По необходимости можно добавить директиву READWRITE
.
Угу.. и потерять при этом текущую сортировку (возможно композитную), установленную пользователем. А имеено из-за ней весь топик..
С уважением, Алексей.
...
Рейтинг: 0 / 0
24.02.2009, 10:19
    #35833421
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Не совсем понял, про какую сортировку идет речь, но при вот таком подходе мы
ее не потеряем?

INSERT INTO outdata ;
SELECT t1.f1, t2.f2, t1.f3 ;
FROM tab1 t1 inner join tab2 t2 on t1.f2 = t2.f1


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
24.02.2009, 10:37
    #35833464
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
Galyamov Rinat
Не совсем понял, про какую сортировку идет речь, но при вот таком подходе мы
ее не потеряем?

INSERT INTO outdata ;
SELECT t1.f1, t2.f2, t1.f3 ;
FROM tab1 t1 inner join tab2 t2 on t1.f2 = t2.f1



Конечно нет! Активный тэг индекса при ZAP и при INSERT .. SELECT не меняется, а при SELECT .. INTO курсор создается заново со всеми вытекающими последствиями.
С уважением, Алексей.
...
Рейтинг: 0 / 0
24.02.2009, 12:28
    #35833857
Galyamov Rinat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка в гриде при имеющихся комбах
> Не совсем понял, про какую сортировку идет речь, но при вот
> таком подходе мы
> ее не потеряем?
>
> INSERT INTO outdata ;
> SELECT t1.f1, t2.f2, t1.f3 ;
> FROM tab1 t1 inner join tab2 t2 on t1.f2 = t2.f1
>
>
>
>
> Конечно нет! Активный тэг индекса при ZAP и при INSERT .. SELECT не
> меняется, а при SELECT .. INTO курсор создается заново со всеми
> вытекающими последствиями.



Чего-то совсем ничего не понимаю. Активный индекс на outdata ?
Так мы его еще не установили. мы только подготавливаем данные к отображению.

А вот на активный индекс на источнике нам глубоко фиолетово, т.к. порядок
сортировки будет установлен set order или сразу в select ... order by . Ы?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сортировка в гриде при имеющихся комбах / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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