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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.10.2007, 12:51   #1  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Добавление записи через qbds
Добрый день. Не подскажите можно ли программным способом добавить запись в таблицу используя конструктор qbds = q.addDataSource(table) и т.д или это служит только для выборки ?
Старый 18.10.2007, 12:59   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ну, через qbds вы точно ничего не добавите, потому как это не записи в таблице, а простое описание запроса.

А во-вторых, ведь когда вы делаете выборку, вы все равно пишите что-то типа
X++:
queryRun = new QueryRun(query);
while (queryRun.next())
{
    table = queryRun.get(tableNum(MyTable));
    //table.bla-bla-bla
}
А значит у вас объявлена переменная table
вот ее и используйте для создания записи
Старый 18.10.2007, 13:03   #3  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Смотрите как работают QueryRun с временными таблицами qr.setCursor(table) и т.д. (поиском) или я вас не так понял ....
Старый 18.10.2007, 13:53   #4  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
да в общем то задача состоит в следующем необходимо кодом добавить записи во временную таблицу, потом на нее наложить range и уже через QueryRun "читать". При чем такой range , который не всегда можно реализовать через стандартный select..... . Я хотел сначала сделать так :
tmpTable.Field = bla;
tmpTable.insert();

qbds = q.addDataSource(tablenum( tmpTable ));
qbds.addRange(... и т.д.

ничего не получилось так как в query попал уже другой объект. Вот и подумал что может быть как то через Query можно добавлять записи а потом на этот же объект наложить фильтр.
Старый 18.10.2007, 13:54   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Наверное, нужен \System Documentation\Classes\DictTable\makeRecord
X++:
Common record = new SysDictTable(tableID).makeRecord();
;
record.insert();
Старый 18.10.2007, 13:55   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А... тогда \System Documentation\Classes\QueryRun\setCursor
Старый 18.10.2007, 14:09   #7  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от Pustik Посмотреть сообщение
да в общем то задача состоит в следующем необходимо кодом добавить записи во временную таблицу, потом на нее наложить range и уже через QueryRun "читать". При чем такой range , который не всегда можно реализовать через стандартный select..... . Я хотел сначала сделать так :
tmpTable.Field = bla;
tmpTable.insert();

qbds = q.addDataSource(tablenum( tmpTable ));
qbds.addRange(... и т.д.

ничего не получилось так как в query попал уже другой объект. Вот и подумал что может быть как то через Query можно добавлять записи а потом на этот же объект наложить фильтр.
сначала вставьте во временную таблицу строки, составьте запрос. потом QueryRun.SetCursor(tmpTable), где tmpTable -переменная вчерез которую вставлялись строки. QueryRun.SetCursor выполнять нужно раньше QueryRun.next()

Последний раз редактировалось ice; 18.10.2007 в 14:26.
За это сообщение автора поблагодарили: Pustik (1).
Старый 18.10.2007, 14:17   #8  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от ice Посмотреть сообщение
сначала вставьте во временную таблицу строки, составьте запрос.

дак я так и сделал, только после того как я составил запрос, по QueryRun - уже нет ни одной записи. Все хорошо когда таблица не временная . Да добавляешь записи они пишутся на SQL и оттуда уже Query подхватывает эти строки. А в случае со временной таблицей он их теряет.
Старый 18.10.2007, 14:21   #9  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от belugin Посмотреть сообщение
Наверное, нужен \System Documentation\Classes\DictTable\makeRecord
X++:
Common record = new SysDictTable(tableID).makeRecord();
;
record.insert();

я понял, Сначала makerecord, потом setCursor , только как мне после makerecord добавить хитрый range ? ))
Старый 18.10.2007, 14:38   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
не, мейкрекорд не нужен - я думал проблема создать запись по tableID только сеткурсор
Старый 18.10.2007, 14:43   #11  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от ice Посмотреть сообщение
сначала вставьте во временную таблицу строки, составьте запрос. потом QueryRun.SetCursor(tmpTable), где tmpTable -переменная вчерез которую вставлялись строки. QueryRun.SetCursor выполнять нужно раньше QueryRun.next()
ах вот как ок попробую
Старый 18.10.2007, 14:51   #12  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
дак я так и сделал, только после того как я составил запрос, по QueryRun - уже нет ни одной записи. Все хорошо когда таблица не временная . Да добавляешь записи они пишутся на SQL и оттуда уже Query подхватывает эти строки. А в случае со временной таблицей он их теряет.
по мойму в таком случае праблема может быть при передаче ссылки на таблицу между клиентом и сервером, т.е. если на сервере создали а юзаете на клиенте.
Старый 18.10.2007, 14:54   #13  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от konopello Посмотреть сообщение
по мойму в таком случае праблема может быть при передаче ссылки на таблицу между клиентом и сервером, т.е. если на сервере создали а юзаете на клиенте.
в этом случае поможет tmpTable2.setTmpData(tmpTable)
Старый 18.10.2007, 14:57   #14  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
всем спасибо с setcursor -ом пошло )))
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как через .NET коннектор удалить записи? Jab Straight DAX: Программирование 6 09.11.2007 18:56
Как обновить форму, если добавление через кнопку? Arahnid DAX: Программирование 5 21.05.2007 11:18
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 ( когда в QueryBuildRange ставишь value(strFmt('!0')); - не работает!) rkorchagin DAX: Программирование 12 02.04.2007 17:58
Добавление новой записи Gorlum DAX: Программирование 7 27.09.2006 09:36
Добавление картинки через COM в Word mit DAX: Функционал 4 13.08.2004 13:30

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

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

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