|
|
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Леди и джентельмены! Помогите, пожалуйста, разобраться. Пример: Таблица Person: nIdPers, cFam, cFName, cSName, nBorn, nIdPunkt. Один из тэгов, требующихся для просмотра этой таблицы гриде: STR(nIdPunkt)+RTRIM(cFam)+' '+RTRIM(cFName)+' '+RTRIM(cSName) (требуется в гриде) Таблица Punkt: nIdPunkt,cPunkt,cTypePunkt. Связь: SET RELATION TO Person.nIdPunkt INTO Punkt В гриде с ордером, указанном выше, прописала в один из столбцов источником cPunkt. Теперь получается такая картина в гриде: "ЯКОВКА Д" с nIdPunkt=25 стоит раньше, чем "ДМИТРИЕВКА С" с nIdPunkt=97 (все правильно: 97>25). А нужном бы, чтобы все же в алфавитном порядке населенные пункты были. Как поступить? Благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 12:31:25 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
>Как поступить? Добавит еще один индекс по наименованию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 13:02:40 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Можно проиндексировать - если надо - по нужному полю связанной таблицы. Кстати, маленькое замечание - в индексах, используя STR() - лучше указывать, сколько знаков, тогда индекс получается короче и работает быстрее, например STR(nIdPunkt,5), иначе считается, что используется 12 знаков (вроде столько, точно не помню). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 13:07:50 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
CrispyМожно проиндексировать - если надо - по нужному полю связанной таблицы. Т.е. индекс дожен выглядеть так: RTRIM(Punkt.cPunkt)+RTRIM(cFam)+' '+RTRIM(cFName)+' '+RTRIM(cSName) (требуется в гриде) ?! Если нет, то пусть умные господа фоксисты опять изголяются по поводу моего умственного развития и моей профнепригодности, мне уже все равно. Я просто не понимаю, что вы имеете под "проиндексировать по нужному полю связанной таблицы". Извините. CrispyКстати, маленькое замечание - в STR()... Про STR() я знаю. Выражение, число символов до 10, десятичные знаки. В топике написала просто кратко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 13:30:44 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Вот RTRIM() в ордере это лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 13:33:57 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Лисонька...Как поступить?... 1. RTRIM() я бы неиспользавал в индексе. 2. Как указал Crispy STR() использовать с конкретным количеством знаков. 3. И вообще перейти от прямых таблиц к Local View или запросам. И использовать SELECTы типа: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 13:42:06 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
С самого начала: В Grid отображаются поля из 2 связанных таблиц: Person и Punkt Person - главная, Punkt - подчиненная Необходимо, чтобы в пределах одного и того же значения кода главной таблицы (Person.nIdPunkt) записи подчиненной таблицы отображались в определенном порядке. В твоей постановке задачи несколько ошибок 1. Если главный индекс подчиненной таблицы начинаяется с STR(nIdPunkt)+..., то связь надо организовывать также по символьной строке, но ни в коем случае не по числовому значению. Т.е. должно быть Код: plaintext 2. Если связь имеет вид один-ко-многим, и обе таблицы одновременно отображаются в одном GRID, то необходима дополнительная команда SET SKIP TO Punkt для обеспечения этой связи. 3. Если тебе необходимо упорядочить записи подчиненной таблицы вне зависимости от значения кода главной, то необходимо изменить саму связь. Т.е. поменять местами главную и подчиненную таблицу. В противном случае ничего не получится. Действия примерно такие: Код: plaintext 1. 2. 3. 4. 5. Хотя, как указал Владимир СА , проще сделать Local View или прямую выборку через Select-SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 14:32:35 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Лисонька...умные господа фоксисты опять изголяются по поводу моего умственного развития и моей профнепригодности... Забыла поставить кавычки? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 14:37:22 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Владимир СА И вообще перейти от прямых таблиц к Local View или запросам. И использовать SELECTы типа ВладимирМ проще сделать Local View или прямую выборку через Select-SQL Благодарю. Да, значит все-таки запрос. Я думала про это, но не стала развивать эту тему, т.к. посчитала делать выборку не рациональным. У меня форма с гридом, под ним Optiongroup. Пользователь выбирает нужную Optionи и в гриде меняется ордер. Я посчитала, что, если записей будет под 100 тыс., выборка займет немалое время. А почему RTRIM в индексе нельзя использовать - это фатально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 14:38:59 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Komissar Лисонька...умные господа фоксисты опять изголяются по поводу моего умственного развития и моей профнепригодности... Забыла поставить кавычки? :) Скорее правильнее было бы написать "высокого о себе мнения господа фоксисты" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 14:41:33 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Лисонька... У меня форма с гридом, под ним Optiongroup. Пользователь выбирает нужную Optionи и в гриде меняется ордер... Я понимаю, что Optiongroup сделано для отображения порядка сортировки. Если это так, то лучше использовать в Header-ах колонок Grid-а свойство Picture и отображать соответствующие картинки, типа как на на приложенном файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 15:09:05 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Лисонька..."высокого о себе мнения господа фоксисты" Те, которые "они" - на самом деле вовсе не фоксисты! Прост студенты-переучки с тяжелым детством! Настоящие фоксисты - удивительно доброжелательные и потрясающе скромные в самооценке люди! Владимир СА правильно предлагает тебе насчет Local View и Header'ов... 1. Нет на свете пользователя, которому было бы под силу пролистать в гриде 100 тыс. записей и осмыслить увиденное! 2. Удобнее - больше свободного места! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 15:36:44 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Владимир САлучше использовать в Header-ах колонок Grid-а свойство Picture и отображать соответствующие картинки, типа как на на приложенном файле. Уложу детей - попробую. А вот на счет приложенного файла - это сам пикчер или все-таки отдельный файл, потому что "приложенного" для скачивания как раз не наблюдаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 15:56:46 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
2 Лисонька : Код: plaintext 1. 2. 3. 4. 5. 6. Иванов Иосиф Абрамович :) из-за этого будет стоять ниже, чем Иванова Марья Ивановна . (не совсем кстати понял, что за кавычки в выражении индекса? там видимо между ними должны стоять пробелы? - чтобы сортировка вышла правильной) Успехов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 16:16:51 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Кстати, с TRIM-ами еще и похуже случаи бывают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 16:19:43 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Показала форму моей мадам шефу в двух вариантах: с Optiongroupe и с кликом на Headere. Ей все же понравилось первое, а я думаю, что второй вариант лучше, нагляднее (после клика весь отсортированный Column выделяется другим цветом). Теперь такой вопрос: что рациональнее - каждый раз делать новый запрос с нужной сортировкой SELECT ... FROM ... ORDER BY... или сделать запрос один раз, расставить индексы (INDEX ON ... TAG tag1 OF idxX, INDEX ON ... TAG tag2 OF idxX ADDITIVE), а потом выбирать нужный? Благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2005, 15:03:22 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
Лисонька...Теперь такой вопрос: что рациональнее - каждый раз делать новый запрос с нужной сортировкой SELECT ... FROM ... ORDER BY... или сделать запрос один раз, расставить индексы (INDEX ON ... TAG tag1 OF idxX, INDEX ON ... TAG tag2 OF idxX ADDITIVE), а потом выбирать нужный?... Первый вариант ответа неплох при многопользовательской среде. Но я лично пока использую второй вариант. Но всегда имеет место кнопка на форме переопределить данные (в многопользовательской среде). Но это лично мой выбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2005, 15:25:50 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
ЛисонькаТеперь такой вопрос: что рациональнее - каждый раз делать новый запрос с нужной сортировкой SELECT ... FROM ... ORDER BY... или сделать запрос один раз, расставить индексы (INDEX ON ... TAG tag1 OF idxX, INDEX ON ... TAG tag2 OF idxX ADDITIVE), а потом выбирать нужный? Благодарю Зависит от конкретной ситуации. Определяющим здесь является скорость. Что будет выполняться быстрее: Новая выборка с новым ORDER BY или создание индекса? Правда, это только в том случае, если данные этой выборки не предполагается редактировать. Только просмотр. Если еще нужно редактирование, тогда лучше сразу построить ВСЕ индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2005, 20:08:37 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
ВладимирМПравда, это только в том случае, если данные этой выборки не предполагается редактировать. Только просмотр. Если еще нужно редактирование, тогда лучше сразу построить ВСЕ индексы. Нет, выборка в гриде служит в данной форме только для просмотра. А что, разве выполнение команды SET ORDER TO ... для готовых индексов занимает так же много времени в большой таблице, как и SELECT ... ORDER BY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2005, 20:47:30 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
ЛисонькаНет, выборка в гриде служит в данной форме только для просмотра. Извините за настойчивость - неужели стоИт задача просмотра 100 тыс. записей? ЛисонькаА что, разве выполнение команды SET ORDER TO ... для готовых индексов занимает так же много времени в большой таблице, как и SELECT ... ORDER BY? Конечно нет! С чего ВЫ взяли? Почему такой вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2005, 02:30:28 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
ЛисонькаА что, разве выполнение команды SET ORDER TO ... для готовых индексов занимает так же много времени в большой таблице, как и SELECT ... ORDER BY? Нет, конечно. Сравнение идет между Select-SQL и INDEX ON. Сам процесс индксирования относительно медленный. А переключение между уже созданными индексами происходит практически мгновенно. Но сам факт создания и сопровождения временных индексов требует некоторой дополнительной работы и осторожности. Динамический Select-SQL с изменяемым ORDER BY в этом смысле гораздо проще в реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2005, 16:44:36 |
|
||
|
Не могу установить алфавитный порядок
|
|||
|---|---|---|---|
|
#18+
KomissarКонечно нет! С чего ВЫ взяли? Почему такой вопрос? Это я ответила ВладимируМ. А 100 тыс. записей через грид - ну, преувеличила, но тысяч 50 точно. А с простым просмотром через грид не я себя заморочила - моя шеф хочет, чтобы эта программа в точности копировала старую на FPD (давно стертую и забытую всеми) и напоминала еще какую-то, накатанную на Access и служащую для нее эталоном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2005, 22:41:48 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33271365&tid=1593451]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 207ms |
| total: | 501ms |

| 0 / 0 |
