16.12.2014, 13:06 | #1 |
Участник
|
QueryBuildRange условия при соединении двух таблиц
Здравствуйте! Помогите новичку)!
AX2009 Нужно при активном чекбоксе оставить только тех клиентов на форме, у которых в связанной таблице операции клиентов, в поле тип операции значение = "услуга". У меня пока что только получается, что он показывает ВСЕХ клиентов, но в их операциях оставляет только услуги. Я не знаю, как правильно связать таблицы по условиям. while select clients outer join transact where (transact.ClientId == clients.ClientId) && (transact.Type == 1) я пишу так(помимо этого еще два фильтра здесь же организованы, но с ними все в порядке работают): public void executeQuery() { QueryBuildDataSource qbd; QueryBuildDataSource qbdT; QueryBuildDataSource qbdT2; QueryBuildRange qbrClient; QueryBuildRange qbrStatus; QueryBuildRange clientId; ; qbd = Client_ds.query().dataSourceTable(tablenum(Clients)); qbdT = Transactions_ds.query().dataSourceTable(tablenum(Transactions)); qbdT2 = qbd.addDataSource(tablenum(Transactions)); qbdT2.addLink(fieldnum(Clients, ClientID), fieldnum(Transactions, ClientID)); qbdT2.joinMode(JoinMode::OuterJoin); qbrClient = SysQuery::findOrCreateRange(qbd, fieldnum(Clients, ClientId)); qbrClient.value(clientFilter.valueStr()); qbrStatus = SysQuery::findOrCreateRange(qbd, fieldnum(Clients, Type)); qbrStatus.value(ShowClients.valueStr() == enum2str(MyTypeOfClients::External) ? ShowClients.valueStr() : ShowClients.valueStr()); clientId = qbdT2.addRange(fieldnum(Transactions,Type)); clientId.value("( Type == 1)"); super(); } не знаю как сделать, чтоб заработало.. |
|
16.12.2014, 13:45 | #2 |
Участник
|
|
|
16.12.2014, 13:52 | #3 |
Участник
|
все верно
|
|
16.12.2014, 14:36 | #4 |
Участник
|
При установке галки для фильтрации первого грида вам нужно к его датасорсу присоединять ещё один датасорс с типом связи ExistsJoin (при снятии галки соответственно отсоединять). А тот датасурс, который используется для отображения операций не трогайте, он пусть всегда будет привязан типом Dalayed.
|
|