On-line: Pasha, Haz, гостей 1. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1977
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.01.12 15:45. Заголовок: Сортировка по алфавиту ???


Всем привет.
Постановка задачи такая:
Есть справочник-улиц (street.dbf) типа:
Kstreet - Street
1 - Махалина ул.
2 - Федорова ул.
.....
990 - Алтуфьевское шоссе
.....

В основной базе "списка адресов" (допустим dogovor.dbf) записывается код улицы Kstreet.
При выборке из базы (использую условный индекс) выводиться нужный мне список.
Задаю сортировку по коду улицы (Kstreet). Получаю отсортированный список не по алфавиту улиц.

А как решить вопрос с сортировкой по алфавиту базы (таблицы) "списка адресов" ?
Чтобы список показывался по алфавиту ???



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]


постоянный участник


Пост N: 728
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 07.08.17 21:59. Заголовок: Что-то у тебя со ст..


Что-то у тебя со структурой в базе test_main.dbf ?. Поля #1#, #2# странные, не все просмотрщики видят, Far вываливается

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6525
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.08.17 22:13. Заголовок: Vlad04 пишет: Что-т..


Vlad04 пишет:

 цитата:
Что-то у тебя со структурой в базе test_main.dbf ?. Поля #1#, #2# странные, не все просмотрщики видят, Far вываливается


У меня Far не упал , а поле обычное "C" длина только 500 байт

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 } )

То любой просмоторщик "сдохнет".


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3579
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.17 13:39. Заголовок: Вот пример - https:/..



 цитата:
Вот пример - https://cloud.mail.ru/public/LrPi/piq8pzAWS
Создание индекса делать в util_Use.prg строка 32




Данный пример несамодостаточен, а разбирать десятки килобайт чужого кода, чтобы найти там крупицу необходимого, желания нет.
Делаем самодостаточный пример с использованием файлов 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 испортить результат не может, поскольку и для первого, и во второго источник данных будет один и тот же, и колонки формируются по одному принципу: вызов нужного блока кода.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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, но это не помогло.

На маленьких примерах в МиниГуи всё проходить отлично, но когда делаешь большие программы, то иногда получаешь совсем не тот результат.
Но это скорее всего дело НЕ в МиниГуи, а в незнании/не понимании - как нужно правильно программировать в МиниГуи.
Из-за этого и начал я делать большие примеры на МиниГуи, чтобы показать новичкам (да и себе тоже) как НУЖНО делать.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6526
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.08.17 15:03. Заголовок: Pasha пишет: Запуск..


Pasha пишет:

 цитата:
Запускаем. Видно, что сортировка получается, как заказывали.


Паш в терминале так и есть а вот в Минигуи нет , если еще и два бровса , как с этим обстоят
дела в FW не знаю.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3580
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.17 15:11. Заголовок: Чтобы не копаться в ..


Чтобы не копаться в этих сырцах, можно рассказать в двух словах ?
Как я понял, в одном окне живут два бровса. Для первого источник данных - это test_main, и он должен быть отсортирован по test_street->street.
А что во втором бровсе, какой у него источник данных ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3581
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.17 15:45. Заголовок: Еще раз уточним проб..


Еще раз уточним проблему. При клике на колонку выскакивает модальное окно со 2-м бровсом по test_street, и... ?
Неправильно перерисовывается 1-е окно, если 2-е ездит по нему ? Или неправильно перерисовывается 1-е окно после закрытия 2-го ?

И еще (дополню). Во 2-м бровсе по test_street часом не изменяется текущий индекс ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5477
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.08.17 15:53. Заголовок: Pasha пишет: Еще ра..


Pasha пишет:

 цитата:
Еще раз уточним проблему. При клике на колонку выскакивает модальное окно со 2-м бровсом по test_street


Да !
Pasha пишет:

 цитата:
Неправильно перерисовывается 1-е окно, если 2-е ездит по нему ?


Да !

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3582
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.17 16:01. Заголовок: Когда 2-й бровс ката..


Когда 2-й бровс катается по 1-му, в 1-м меняется порядок строк, или неправильно отображается колонка "List of streets" ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3583
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.17 16:18. Заголовок: Вот что Haz предложи..



 цитата:
Вот что Haz предложил:



Так этот вариант работает ? Может я зря копаюсь, и вопрос исчерпан ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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(НОМЕР_ПОДЪЕЗДА)"




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 729
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 08.08.17 17:36. Заголовок: Типичная ситуация. ..


Типичная ситуация.

При открытии второго окна с улицами отменяется SET RELATION, индекс улиц переводится - по ИМЕНИ, после выбора улицы или отказа
индекс переводится по коду, восстанавливается SET RELATION.



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6527
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.08.17 17:43. Заголовок: Vlad04 пишет: При о..


Vlad04 пишет:

 цитата:
При открытии второго окна с улицами отменяется SET RELATION, индекс улиц переводится - по ИМЕНИ, после выбора улицы или отказа
индекс переводится по коду, восстанавливается SET RELATION.


Обрати внимание что при этом происходит в первом окне , заскринь его до и после вызова окна два и найди отличия.
Мне пришлось для показа окна два , повторно открывать базу улиц с другим Alias (это я условно , задача у меня совсем другая)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5478
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.08.17 18:06. Заголовок: Pasha пишет: Так эт..


Pasha пишет:

 цитата:
Так этот вариант работает ? Может я зря копаюсь, и вопрос исчерпан ?


Да ! Вопрос исчерпан.
Просто Haz предложил чуть раньше. Я и сделал его вариант.

SergKis пишет:

 цитата:
Ты не внимательно читаешь тему (или НЕ). Pasha ишет


Да не понял я. Посчитал что Pasha уточняет что происходит с Tsbrowse.

Andrey пишет:

 цитата:
Кому интересно, вот последний РАБОЧИЙ проект - https://cloud.mail.ru/public/BKCu/XGvekDSfe



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 57 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 399
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет