Автор | Сообщение |
|
| постоянный участник
|
Пост N: 1977
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.01.12 15:45. Заголовок: Сортировка по алфавиту ???
Всем привет. Постановка задачи такая: Есть справочник-улиц (street.dbf) типа: Kstreet - Street 1 - Махалина ул. 2 - Федорова ул. ..... 990 - Алтуфьевское шоссе ..... В основной базе "списка адресов" (допустим dogovor.dbf) записывается код улицы Kstreet. При выборке из базы (использую условный индекс) выводиться нужный мне список. Задаю сортировку по коду улицы (Kstreet). Получаю отсортированный список не по алфавиту улиц. А как решить вопрос с сортировкой по алфавиту базы (таблицы) "списка адресов" ? Чтобы список показывался по алфавиту ???
|
|
|
Ответов - 57
, стр:
1
2
3
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 728
Зарегистрирован: 13.10.05
|
|
Отправлено: 07.08.17 21:59. Заголовок: Что-то у тебя со ст..
Что-то у тебя со структурой в базе test_main.dbf ?. Поля #1#, #2# странные, не все просмотрщики видят, Far вываливается
|
|
|
|
| |
Пост N: 6525
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.08.17 22:13. Заголовок: Vlad04 пишет: Что-т..
Vlad04 пишет: цитата: | Что-то у тебя со структурой в базе test_main.dbf ?. Поля #1#, #2# странные, не все просмотрщики видят, Far вываливается |
| У меня Far не упал , а поле обычное "C" длина только 500 байт
|
|
|
|
| постоянный участник
|
Пост N: 5473
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.08.17 13:09. Заголовок: Vlad04 пишет: Что-т..
Vlad04 пишет: цитата: | Что-то у тебя со структурой в базе test_main.dbf ?. Поля #1#, #2# странные, не все просмотрщики видят, Far вываливается |
| Пользуйся для Харбора viewer'ом - dbedit ! В базу ПЕРВЫМ полем добавить: AADD( aDbf , {"ID2" ,"+", 8,0 } ) То любой просмоторщик "сдохнет".
|
|
|
|
| Администратор
|
Пост N: 3579
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.08.17 13:39. Заголовок: Вот пример - https:/..
Данный пример несамодостаточен, а разбирать десятки килобайт чужого кода, чтобы найти там крупицу необходимого, желания нет. Делаем самодостаточный пример с использованием файлов dbf, созданных программой: proc main use test_street new index on kstreet to test_street use test_main new set relation to kstreet into test_street index on test_street->street to test_main browse() retu Запускаем. Видно, что сортировка получается, как заказывали. Замена tbrowse на tsbrowse из hmg испортить результат не может, поскольку и для первого, и во второго источник данных будет один и тот же, и колонки формируются по одному принципу: вызов нужного блока кода.
|
|
|
|
| постоянный участник
|
Пост N: 5474
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.08.17 14:57. Заголовок: Pasha пишет: Замена..
Pasha пишет: цитата: | Замена tbrowse на tsbrowse из hmg испортить результат не может, поскольку и для первого, и во второго источник данных будет один и тот же, и колонки формируются по одному принципу: вызов нужного блока кода. |
| Позволь не согласиться, результат будет разный. Там особенности показа ДВУХ Tsbrowse в МиниГуи. Можешь сам попробовать и убедиться в этом. Нужно в примере рас комментировать строки: //SET RELATION TO KSTREET INTO STREET //cKey := "UPPER(STREET->STREET)" и заменить строку: DATA {|| Say_Dbf((cAlias)->KSTREET, "STREET", "STREET", 1 ) } ; // Form_SelDbf.prg на //DATA {|| STREET->STREET } ; // если подключено SET RELATION TO KSTREET INTO STREET в util_Use.prg и пере собрать проект. Если не использовать SET RELATION то показ ДВУХ Tsbrowse - отличный !!! Я пробовал при вызове второго Tsbrowse отключать SET RELATION, но это не помогло. На маленьких примерах в МиниГуи всё проходить отлично, но когда делаешь большие программы, то иногда получаешь совсем не тот результат. Но это скорее всего дело НЕ в МиниГуи, а в незнании/не понимании - как нужно правильно программировать в МиниГуи. Из-за этого и начал я делать большие примеры на МиниГуи, чтобы показать новичкам (да и себе тоже) как НУЖНО делать.
|
|
|
|
| постоянный участник
|
Пост N: 5475
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.08.17 15:03. Заголовок: Вот что Haz предлож..
Вот что Haz предложил: cKey := "KEY2NAME(KSTREET)" INDEX ON &cKey TO ( PATH_SYS + "test_main6.cdx" ) ADDITIVE DbSetOrder(6) // индекс основной базы по алфавиту справочника ....... Func KEY2NAME(c) STREET->(DBSEEK(c, .F.) ) RETURN STREET->STREET Спасибо ! Кому интересно, вот последний проект - https://cloud.mail.ru/public/BKCu/XGvekDSfe
|
|
|
|
| |
Пост N: 6526
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.08.17 15:03. Заголовок: Pasha пишет: Запуск..
Pasha пишет: цитата: | Запускаем. Видно, что сортировка получается, как заказывали. |
| Паш в терминале так и есть а вот в Минигуи нет , если еще и два бровса , как с этим обстоят дела в FW не знаю.
|
|
|
|
| Администратор
|
Пост N: 3580
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.08.17 15:11. Заголовок: Чтобы не копаться в ..
Чтобы не копаться в этих сырцах, можно рассказать в двух словах ? Как я понял, в одном окне живут два бровса. Для первого источник данных - это test_main, и он должен быть отсортирован по test_street->street. А что во втором бровсе, какой у него источник данных ?
|
|
|
|
| постоянный участник
|
Пост N: 5476
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.08.17 15:29. Заголовок: Pasha пишет: Как я ..
Pasha пишет: цитата: | Как я понял, в одном окне живут два бровса. Для первого источник данных - это test_main, и он должен быть отсортирован по test_street->street. А что во втором бровсе, какой у него источник данных ? |
| Не так ! Открывается основная таблица в Tsbrowse. Источник test_main.dbf В этой таблице есть колонка "List of streets" (поле KSTREET) при редактировании вызывается второй Tsbrowse (источник test_street.dbf - уже открытая область базы STREET). Если делать с SET RELATION TO KSTREET INTO STREET, то 1-я запись во втором Tsbrowse "перескакивает" в первый Tsbrowse. Почему - непонятно. Я долго с этим бился. Помогает: 1) пере открытие справочника STREET 2) отказ от SET RELATION
|
|
|
|
| Администратор
|
Пост N: 3581
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.08.17 15:45. Заголовок: Еще раз уточним проб..
Еще раз уточним проблему. При клике на колонку выскакивает модальное окно со 2-м бровсом по test_street, и... ? Неправильно перерисовывается 1-е окно, если 2-е ездит по нему ? Или неправильно перерисовывается 1-е окно после закрытия 2-го ? И еще (дополню). Во 2-м бровсе по test_street часом не изменяется текущий индекс ?
|
|
|
|
| постоянный участник
|
Пост N: 5477
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.08.17 15:53. Заголовок: Pasha пишет: Еще ра..
Pasha пишет: цитата: | Еще раз уточним проблему. При клике на колонку выскакивает модальное окно со 2-м бровсом по test_street |
| Да ! Pasha пишет: цитата: | Неправильно перерисовывается 1-е окно, если 2-е ездит по нему ? |
| Да !
|
|
|
|
|
| Администратор
|
Пост N: 3582
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.08.17 16:01. Заголовок: Когда 2-й бровс ката..
Когда 2-й бровс катается по 1-му, в 1-м меняется порядок строк, или неправильно отображается колонка "List of streets" ?
|
|
|
|
| Администратор
|
Пост N: 3583
Зарегистрирован: 23.05.05
|
|
Отправлено: 08.08.17 16:18. Заголовок: Вот что Haz предложи..
Так этот вариант работает ? Может я зря копаюсь, и вопрос исчерпан ?
|
|
|
|
| постоянный участник
|
Пост N: 1629
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.08.17 16:45. Заголовок: Andrey Ты не внимат..
Andrey Ты не внимательно читаешь тему (или НЕ). Pasha ишет цитата: | Отправлено: 05.01.12 16:37. ... или не заморачиваться с релэйшн, а написать функцию func StreetName if dogovor->KStreet != street->KStreet street->(dbSeek(dogovor->KStreet)) endif Return street->Street и использовать выражение "STR(KCITY)+StreetName()+UPPER(PADL(ALLTRIM(НОМЕР_ДОМА),5))+STR(НОМЕР_ПОДЪЕЗДА)" |
|
|
|
|
|
| постоянный участник
|
Пост N: 729
Зарегистрирован: 13.10.05
|
|
Отправлено: 08.08.17 17:36. Заголовок: Типичная ситуация. ..
Типичная ситуация. При открытии второго окна с улицами отменяется SET RELATION, индекс улиц переводится - по ИМЕНИ, после выбора улицы или отказа индекс переводится по коду, восстанавливается SET RELATION.
|
|
|
|
| |
Пост N: 6527
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.08.17 17:43. Заголовок: Vlad04 пишет: При о..
Vlad04 пишет: цитата: | При открытии второго окна с улицами отменяется SET RELATION, индекс улиц переводится - по ИМЕНИ, после выбора улицы или отказа индекс переводится по коду, восстанавливается SET RELATION. |
| Обрати внимание что при этом происходит в первом окне , заскринь его до и после вызова окна два и найди отличия. Мне пришлось для показа окна два , повторно открывать базу улиц с другим Alias (это я условно , задача у меня совсем другая)
|
|
|
|
| постоянный участник
|
Пост N: 5478
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.08.17 18:06. Заголовок: Pasha пишет: Так эт..
Pasha пишет: цитата: | Так этот вариант работает ? Может я зря копаюсь, и вопрос исчерпан ? |
| Да ! Вопрос исчерпан. Просто Haz предложил чуть раньше. Я и сделал его вариант. SergKis пишет: цитата: | Ты не внимательно читаешь тему (или НЕ). Pasha ишет |
| Да не понял я. Посчитал что Pasha уточняет что происходит с Tsbrowse. Andrey пишет:
|
|
|
Ответов - 57
, стр:
1
2
3
All
[только новые]
|
|