AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.10.2005, 16:13   #1  
Кандидат is offline
Кандидат
начальный
 
69 / 6 (1) +
Регистрация: 19.09.2005
Адрес: Москва
Помогите написать запрос
На форме присутствуют два поля:VendAccount и CompanyBankAccountId.
Как организовать ограничение по Lookup в CompanyBankAccountId по полю VendAccount ?
Всё дело в том, что одно одно поле VendAccount относится к таблице LRA_ReestrTransh, а другое CompanyBankAccountId к другой BankAccountTable. И таблицы свяаны через таблицу BankGroup по полю VendAccount с таблицей LRA_ReestrTransh и по полю BankGroupId с таблицей
CompanyBankAccountId .
Привожу код в Lookup по полю CompanyBankAccountId .
Он не работает так как нет связи через join между тремя таблицами.
Помогите, кто чем может. B)

public void performFormLookup(FormRun _form, FormControl _formControl)
{

FormDatasource fds = _form.dataSource();
QueryBuildDataSource qbds;
queryBuildRange qbr;
queryBuildRange qbr1;
BankGroup bankGroup;
// LRA_ReestrTransh lra_ReestrTransh;
BankAccountTable BankAccountTable;

;
qbds = fds.query().dataSourceTable(tableNum(BankAccountTable)); //ñîðòèðóåìàÿ òàáëèöà
// select BankGroup
// where bankGroup.VendAccount_LRA==LRA_ReestrTransh.VendAccount;
//
qbds.addRange(fieldNum(BankAccountTable, BankGroupId)).value(bankGroup.BankGroupId);//ïî èñêîìîìó çíà÷åíèþ
// // qbds.addRange(fieldNum(RContractTable, RContractPartnerCode)).value(LRA_ReestrTransh.VendAccount);

super(_form, _formControl);
}
Старый 14.10.2005, 16:20   #2  
Кандидат is offline
Кандидат
начальный
 
69 / 6 (1) +
Регистрация: 19.09.2005
Адрес: Москва
Неужто никто не знает X++
Апну разок
Старый 14.10.2005, 16:46   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
PHP код:
Query    q = new Query();
;
    
q.AddDataSource(tablenum(BankAccountTable));
    
q.DataSourceTable(tablenum(BankAccountTable)).AddDataSource(tablenum(BankGroup));
    
q.DataSourceTable(tablenum(BankGroup)).ClearLinks();
    
q.DataSourceTable(tablenum(BankGroup)).
        
AddLink(fieldnum(BankAccountTableBankGroupId), fieldnum(BankGroupBankGroupId));
    
q.DataSourceTable(tablenum(BankGroup)).AddRange(fieldnum(BankGroupVendAccount)).value(LRA_ReestrTransh.VendAccount); 
Где-то так, если я правильно вас понял
__________________
Axapta v.3.0 sp5 kr2
Старый 14.10.2005, 16:49   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Знают многие, а вот понять Ваш вопрос очень сложно.
"Поля на форме" - просто независимые поля, поля 1 таблицы, поля диалога или что?
Если VendAccount есть в BankGroup, то зачем ее джоинить с LRA_ReestrTransh?
Зачем Вы перекрываите performFormLookup(FormRun _form, FormControl _formControl)?
Старый 14.10.2005, 17:11   #5  
Кандидат is offline
Кандидат
начальный
 
69 / 6 (1) +
Регистрация: 19.09.2005
Адрес: Москва
Попытаюсь ещё раз.
Прилагаю скрин.
По поставщику надо выставить банковский счет.
С запросом пока не пробовал , т.к написан через класс, надо разобраться .
Миниатюры
Нажмите на изображение для увеличения
Название: вопрос.jpg
Просмотров: 403
Размер:	46.6 Кб
ID:	738  
Старый 14.10.2005, 17:25   #6  
Кандидат is offline
Кандидат
начальный
 
69 / 6 (1) +
Регистрация: 19.09.2005
Адрес: Москва
Понимаю, что пятница вечер
Может кто ещё работает.
Старый 14.10.2005, 18:03   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Во-первых, перекройте Modified() на контроле LRA_ReestrTransh_VendAccount1

Во-вторых,
PHP код:
public void modified()
{
    
BankAccountTable  BankAccount;
    
BankGroup  bankGroup;
    ;
    
super();
    
select bankGroup 
        where bankGroup
.VendAccount == LRA_ReestrTransh_VendAccount1.ValueStr()
    
join BankAccount 
        where bankGroup
.BankGroupId == BankAccount.BankGroupId;
    
LRA_ReestrTransh.CompanyBankAccountId BankAccount.CompanyBankAccountId;
    
LRA_ReestrTransh_ds.refresh();

Для контролов LRA_ReestrTransh_VendAccount1 и LRA_ReestrTransh_CompanyBankAccountId должно стоять свойство AutoDeclaration
__________________
Axapta v.3.0 sp5 kr2
Старый 17.10.2005, 14:44   #8  
Кандидат is offline
Кандидат
начальный
 
69 / 6 (1) +
Регистрация: 19.09.2005
Адрес: Москва
Все спасибо.
В особенности AndyD vbmenu_register("postmenu_83762", true); за предоставление кода.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Нужно срочно дописать запрос помогите CRASH_505 DAX: Программирование 3 09.09.2008 10:49
Помогите составить запрос m_ax DAX: Программирование 5 05.10.2007 18:22
Почему join запрос разбивается на подзапросы!? 3oppo DAX: Программирование 59 28.06.2007 11:52
Долго отрабатывает запрос по таблице InventItemLocation AlexeyBP DAX: Администрирование 1 30.05.2007 17:33
Помогите такой вопрос написать в Аксапте Protey DAX: Программирование 13 25.09.2006 13:04

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:49.