Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid множит записи / 4 сообщений из 4, страница 1 из 1
05.06.2006, 12:37
    #33772007
Sea.Starry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid множит записи
Hi alles

Значит так имеется две таблицы с ключами device_id
без связей по этому полю данные в 2-х Grid'ax отображаются нормально

Но стоит связать 1:N
SELECT(ThisForm.MasterAlias)
SET RELATION TO device_id INTO (ThisForm.childAlias)
SET SKIP TO (ThisForm.childAlias)

Как в первом master Grid'e строки множаться в количестве строк в Child Grid'e
во View даже Distinct делал странно как-то подскажите как решить?
...
Рейтинг: 0 / 0
06.06.2006, 09:19
    #33773826
Sea.Starry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid множит записи
Кароче вопрос не много поменялся связывать две таблицы отпала надобность так как при смене set order дочерней таблицы связь рушилaсь.
Это все затевалось ради создания подобия таблицы спецификация в программе "Парус".
Решил изменить на следующее поставил параметр на where device_id = ?lcval
и в AfterRowColChange написал
Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL lcval, lcalias

  lcAlias = ThisForm.masterAlias
  lcval = &lcAlias .device_id
  REQUERY(ThisForm.ChildAlias)
  ThisForm.RgridC.Refresh()

Насколько это оправдано делать и если кто знает как реализовано в "Парусе" или кто-нибудь делал свое подскажите?
...
Рейтинг: 0 / 0
08.06.2006, 03:00
    #33779275
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid множит записи
Hi Sea.Starry!

По первому вопросу - это штатное поведение - сделано для того, чтобы при
связи 1-ко-много можно было "ходить" (SKIP например) по главной таблице и
при этом попадать на ВСЕ записи дочерней таблицы - конечно по очереди. При
этом для "красоты отображения" исторически делается хитрая штука - для
главной таблицы выводятся данные только в первой записи в каждой группе - в
остальных выводятся "звёзды".
Для твоего случая всё очень просто - не надо использовать SET SKIP - тогда
первый грид будет как-бы фильтровать второй - т.е. по мере движения в первом
(где не будет дублей) во втором будут появляться записи связанные с текущей.
НО твой вариант с Local View IMHO более предпочтителен в любом случае.
Правда при этом:
1) В качестве параметра можно указывать не только переменную, но и поле
любой "внешней" (по отношению к самому запросу) таблицы - т.е. можно было в
SQL прописать where device_id = ?MasterTable.device_id
2) Если используешь макро, то его надо точкой завершать а не пробелом - т.е.
надо не

> lcval = &lcAlias .device_id

а

lcval = &lcAlias..device_id

При этом первая точка это просто символ-терминатор для макро - а вто вторая
уже служит разделителем алиаса и имени поля.

3) Лучше макро не использовать - есть масса вариантов:

lcval = EVALUATE(m.lcAlias + ".device_id")
или

SELECT (m.lcAlias)
lcval = device_id

или

STORE (m.lcAlias + ".device_id") TO lcval

> Насколько это оправдано

Использование LocalView для реализации "подчинённых" (а равно и основных!)
источников данных вполне оправдано - главное следить за своевременным
сохранением данных из этих курсоров (конечно если они обновляемые, а не
ReadOnly) - особенно для тех которые перезапрашиваются в AfterRowColChange.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
08.06.2006, 11:12
    #33779837
VladBoyr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Grid множит записи
Придерживаюсь мнения, что для отображения данных необходимо использовать LocalView read-only с перечислением тех полей, которые необходимо видеть... "Родительский" View без параметра, а "дочерний" View с параметром - ID родителя...
Для обновления данных использую REQUERY для параметризованных "дочерних" LV (по времени такая выборка не критична, если конечно дочерних элементов у родителя немного :) ) и для "родительских" LV по кнопке "Обновить", для обновления "родительских" LV (внесения тех изменений что были сделаны пользователем на локальной машине) использую репликацию из параметризованного по уникальному ID LocalView с теми же полями, что и в "родительском" LV, в остальных случаях кнопка "Обновить"...
З.Ы.: Другими способами пока не извращался...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid множит записи / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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