|
|
|
Grid множит записи
|
|||
|---|---|---|---|
|
#18+
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 делал странно как-то подскажите как решить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 12:37 |
|
||
|
Grid множит записи
|
|||
|---|---|---|---|
|
#18+
Кароче вопрос не много поменялся связывать две таблицы отпала надобность так как при смене set order дочерней таблицы связь рушилaсь. Это все затевалось ради создания подобия таблицы спецификация в программе "Парус". Решил изменить на следующее поставил параметр на where device_id = ?lcval и в AfterRowColChange написал Код: plaintext 1. 2. 3. 4. 5. 6. Насколько это оправдано делать и если кто знает как реализовано в "Парусе" или кто-нибудь делал свое подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 09:19 |
|
||
|
Grid множит записи
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 03:00 |
|
||
|
Grid множит записи
|
|||
|---|---|---|---|
|
#18+
Придерживаюсь мнения, что для отображения данных необходимо использовать LocalView read-only с перечислением тех полей, которые необходимо видеть... "Родительский" View без параметра, а "дочерний" View с параметром - ID родителя... Для обновления данных использую REQUERY для параметризованных "дочерних" LV (по времени такая выборка не критична, если конечно дочерних элементов у родителя немного :) ) и для "родительских" LV по кнопке "Обновить", для обновления "родительских" LV (внесения тех изменений что были сделаны пользователем на локальной машине) использую репликацию из параметризованного по уникальному ID LocalView с теми же полями, что и в "родительском" LV, в остальных случаях кнопка "Обновить"... З.Ы.: Другими способами пока не извращался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2006, 11:12 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=252&tid=1591457]: |
0ms |
get settings: |
13ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
320ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 683ms |

| 0 / 0 |
