powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема со связью
8 сообщений из 8, страница 1 из 1
Проблема со связью
    #34037609
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем !
Будьте добры подскажите ответ на следующий вопрос:
Я устанавливаю связь следующим образом - программно на load:

select proisvod2
set order to tag id_tovar
select tovar2
set relation to id into proisvod2

А мне необходимо еще в этой связи - когда я хожу по таблице tovar2 - не только видеть соответствующие записи в таблице proisvod2 - это все правильно работает, но они не отсортированы по алфавиту !

Мне бы хотелось это сделать !
спасибо!

Вариант с
select proisvod2
set order to tag name_p - не проходит - тогда вообще ничего нет!

Помогите пожалуйста
...
Рейтинг: 0 / 0
Проблема со связью
    #34037686
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, для подобных задач лучше пользоваться не связью, а Local View или Select-SQL. Т.е. при перемещении по записям главной таблицы повторяется выборка по подчиненной таблице с нужным порядком сортировки

А в данном случае можно так:

=================
Еще одна тонкость заключается в том, что связь можно настроить не по полному, а по частичному (по первым символам) совпадению ключа. Разумеется, если используется настройка SET EXACT OFF (это настройка по умолчанию).

Например, если подчиненная таблица имеет 2 поля ParentID и NickName и требуется упорядочить записи в пределах каждого значения ParentID в алфавитном порядке NickName, то в подчиненной таблице строится примерно такой индекс:

INDEX ON ParentID+NickName TAG SortOrd

Здесь я предполагаю, что ParentID - это поле символьного типа. Тогда в главной таблице настраивается связь по выражению только ParentID

SET RELATION TO ParentID INTO ChildTab
==========================

Это цитата отсюда

http://www.foxclub.ru/articles/index.php?id=36#OrdinaryRelationship
...
Рейтинг: 0 / 0
Проблема со связью
    #34037745
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мы тут конечно все экстрасенсы и на расстоянии знаем какие у вас таблицы и индексы


Но скорее всего нужно создать составной индекс в таблице proisvod2
str(id_tovar)+name_p
и relation делать по str(id)
SET exact должен быть обязательно OFF
...
Рейтинг: 0 / 0
Проблема со связью
    #34037793
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В proisvod2 обязательно должен быть активен индекс по ключу, т.к. по нему связка идет.
Для сортировки по proisvod2.name_p надо:
1. Предварительно создать временную таблицу select`ом а потом ее показывать. Минус - долго формируется, если записей много
2. Продублировать поле name_p в tovar2 (можно не полное поле например первые 10 символов) и использовать индекс по tovar2.name_p. Минус - надо поддерживать соответствие между proisvod2.name_p и tovar2.name_p
...
Рейтинг: 0 / 0
Проблема со связью
    #34037823
ORAselect
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лучше всего применить запрос и его подставить вместо таблицы, если не получается сделать полноценное представление.

select * from NameParent p,TableChild c
where c.MyIndez = p.ParentIndex
order by PoleSortirovki

Что-то эдакое в зависимости от ваших таблиц сильно упростит жизнь.
...
Рейтинг: 0 / 0
Проблема со связью
    #34038215
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мы тут конечно все экстрасенсы и на расстоянии знаем какие у вас таблицы и индексы

Но скорее всего нужно создать составной индекс в таблице proisvod2
str(id_tovar)+name_p
и relation делать по str(id)
SET exact должен быть обязательно OFF.

Я не много вас не понял - хотя то что Вы мне прелагаете - это Вы правильно поняли!
Все поля (char) - я понял надо создать сложный индекс:
ids Regular id_tovar + name_p,
...
Рейтинг: 0 / 0
Проблема со связью
    #34038346
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18...
Все поля (char) - я понял надо создать сложный индекс:
ids Regular id_tovar + name_p,
Не поможет. Порядок сортировки задается для таблицы tovar2 , а насколько сильны мои экстрасенсорные возможности :), поле name_p как понимаю в таблице proisvod2
Соответственно у тебя выводится таблица tovar2 в том порядке какой там индекс активен, а из таблицы proisvod2 берутся соответствующие name_p по tovar2.id = proisvod2.tovar_id

Можно сделать составной индекс tovar2.name + proizvod2.name_p для таблицы tovar, но это изврат, т.к. везде надо держать эту связку на случай изменения индекса

Может все-таки тебе наоборот надо?
Код: plaintext
1.
2.
3.
4.
select tovar2
set order to id
select proisvod2
set relation to id_tovar into tovar2
set order to name_p
Странно ключ в proisvod2 называть id_tovar.

А вообще-то не помешало бы увидеть структуру таблиц (поля которые в связках, индексах и отображении учавствуют), используемые индексы с индексными выражениями
...
Рейтинг: 0 / 0
Проблема со связью
    #34038495
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как раз на сколько я понял - "главная таблица" - товар
поэтому если поля Id - символьные
то поможет индекс id_tovar + name_p в таблице proisvod
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема со связью
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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