powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid множит записи
4 сообщений из 4, страница 1 из 1
Grid множит записи
    #33772007
Sea.Starry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Grid множит записи
    #33773826
Sea.Starry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кароче вопрос не много поменялся связывать две таблицы отпала надобность так как при смене 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
Grid множит записи
    #33779275
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Grid множит записи
    #33779837
VladBoyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Придерживаюсь мнения, что для отображения данных необходимо использовать LocalView read-only с перечислением тех полей, которые необходимо видеть... "Родительский" View без параметра, а "дочерний" View с параметром - ID родителя...
Для обновления данных использую REQUERY для параметризованных "дочерних" LV (по времени такая выборка не критична, если конечно дочерних элементов у родителя немного :) ) и для "родительских" LV по кнопке "Обновить", для обновления "родительских" LV (внесения тех изменений что были сделаны пользователем на локальной машине) использую репликацию из параметризованного по уникальному ID LocalView с теми же полями, что и в "родительском" LV, в остальных случаях кнопка "Обновить"...
З.Ы.: Другими способами пока не извращался...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Grid множит записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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