02.09.2008, 09:32 | #1 |
Участник
|
Data Sources
Возникла следующая проблема:
Есть форма на ней Data Sources, в котором есть 2 таблицы. Таблицы связаны 1:n. Необходимо пробежаться по записям заполненых Data Source. Следующим образом: беру 1 запись из Data Source1 бегу по записям Data Source2 связаных с 1 записью Data Source1. При этом хотелось бы сделать это все на Клиенте. |
|
02.09.2008, 09:52 | #2 |
Участник
|
можно примерно так:
X++: for (t1 = ds1.getFirst(); t1; t1 = ds1.getNext()) { ... for (t2 = ds2.getFirst(); t2; t2 = ds2.getNext()) { ... } } |
|
02.09.2008, 10:03 | #3 |
MCTS
|
Это по выделенным записям (причем только в случае мультиселекта). Чтобы пробежаться по всем записям, которые видны в форме, нужно query получить (queryRun.Query(), если он заполнен), и бежать по нему.
|
|
02.09.2008, 10:12 | #4 |
MCT
|
Так пробегаемся по одному источнику данных
X++: if (calledDataSource.anyMarked()) // calledDataSource { for (YourTableMarked = calledDataSource.getFirst(true, false); YourTableMarked; YourTableMarked = calledDataSource.getNext()) { YourTableMarked = calledDataSource.getNext(); } }
__________________
Axapta book for developer |
|
02.09.2008, 10:16 | #5 |
Участник
|
Цитата:
Немного не понятно как можно с помощью queryRun пробежаться по 2 связаным таблицам Data Sources без запроса на Сервер. И вообще такое возможно? Последний раз редактировалось KpecT; 02.09.2008 в 10:18. |
|
02.09.2008, 10:23 | #6 |
Участник
|
Цитата:
Сообщение от MikeR
Так пробегаемся по одному источнику данных
X++: if (calledDataSource.anyMarked()) // calledDataSource { for (YourTableMarked = calledDataSource.getFirst(true, false); YourTableMarked; YourTableMarked = calledDataSource.getNext()) { YourTableMarked = calledDataSource.getNext(); } } По первому Data Source бежит нормально, так как все записи отображаются в 1 Grid'e, во втором Grid'e отображаются записи только для выделеной записи 1 Grid'a. (Аналог формы SalesTable) |
|
02.09.2008, 10:25 | #7 |
MCT
|
ну в принципе да. Это ж зависит от свойств связи источников на форме, а как надо то?
__________________
Axapta book for developer |
|
02.09.2008, 10:27 | #8 |
MCTS
|
Цитата:
Немного не понятно как можно с помощью queryRun пробежаться по 2 связаным таблицам Data Sources без запроса на Сервер.
Последний раз редактировалось Eldar9x; 02.09.2008 в 10:31. |
|
02.09.2008, 11:20 | #9 |
Участник
|
зачем вообще бежать по датасорсам, тем более обязательно без запроса на сервер? объясните какая стоит перед вами задача?
|
|
02.09.2008, 11:20 | #10 |
Участник
|
Не изобретайте нового и делайте через QueryRun. Это самый правильный вариант.
Все записи у вас в гриде не хранятся, они подтягиваются с сервера по мере необходимости (возможно замечали, что если начинаете скроллить вниз, то через определенное время система задумывается - тянет следующий набор записей с сервера). Более того, для "строк" - запрос выполняется каждый раз, как вы переходите на новую строку в шапке. Так что к QueryRun вам дорога, + исполнение на сервере - будет намного быстрее |
|
02.09.2008, 11:51 | #11 |
Участник
|
Цитата:
Сообщение от kashperuk
Не изобретайте нового и делайте через QueryRun. Это самый правильный вариант.
Все записи у вас в гриде не хранятся, они подтягиваются с сервера по мере необходимости (возможно замечали, что если начинаете скроллить вниз, то через определенное время система задумывается - тянет следующий набор записей с сервера). Более того, для "строк" - запрос выполняется каждый раз, как вы переходите на новую строку в шапке. Так что к QueryRun вам дорога, + исполнение на сервере - будет намного быстрее |
|
02.09.2008, 17:56 | #12 |
Administrator
|
Неправда Ваша. У getFirst() есть два параметра. С их помощью можно указать, что конкретно выбирать: выделенные записи или все, а также только видимые или все
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: Eldar9x (1). |