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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2008, 18:10   #1  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
Кеширование при UPDATE через T-SQL
AX 3.0 SP5 SQL 2005
В коде обновляню запись через T-SQL (UPDATE) и акс не видит изменений в обновленной записи. Есть ли механизм для сброса кеша для обновленной записи.

X++:
    sqlStr = strfmt("UPDATE InventTable SET PrimaryVendorId = '%1' FROM InventTable WHERE ItemId = '%2'", _primaryVendorId, _itemId);
    connection = new Connection();
    statement = connection.createStatement();
    statement.executeUpdate(sqlStr);
Старый 22.01.2008, 19:07   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
flush InventTable;
Старый 22.01.2008, 19:21   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
в этот момент он может получить ошибку, что запись изменилась другим пользователем.
Подожди, Женя. Да, человек спросил "Есть ли механизм для сброса кеша". Но реально он хочет совсем другого. На самом деле он хочет чтобы его запись перечиталась, а не сброса кэша

на самом деле тут два вопроса:
1. как заставить форму увидеть обновление?
2. как заставить табличную переменную увидеть обновление?

В форме делайте myTable_ds.reload() для обновления текущей записи.
В коде открывайте транзакции и прочитайте в транзакции. Может быть, есть другой способ
__________________
полезное на axForum, github, vk, coub.
Старый 22.01.2008, 20:26   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от mazzy Посмотреть сообщение
В форме делайте myTable_ds.reload() для обновления текущей записи.
Имелось ввиду, наверное myTable_ds.reread() ?
Старый 22.01.2008, 23:07   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Имелось ввиду, наверное myTable_ds.reread() ?
э-э-э. да.
спасибо
__________________
полезное на axForum, github, vk, coub.
Старый 23.01.2008, 11:00   #6  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
reread мне не поможет, так как в форме нет того датасоурса, который я update через T-SQL. На InventTable у меня есть display метод, который собственно и выводит старые данные. Может как то закешировался display метод? flush InventTable не помог.
Старый 23.01.2008, 11:10   #7  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Если вы сами его не закэшировали (в init датасоурса cacheAddMethod), то сам он не должен автоматически кэшироваться.
Старый 23.01.2008, 11:17   #8  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
нет канечно специально не кешировал. может это как то связанно с тем что update делается через отдельный connection?
Старый 23.01.2008, 11:22   #9  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Ну, с моей точки зрения не должно быть это связанно. У вас дисплей метод на гриде? Попробуйте на какую-нубудь вкладку его перенести после обновления на эту вкладке переходить. Тоже не обновиться значение?
Старый 23.01.2008, 11:23   #10  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Подождите, а у вас на той таблице из который данные беруться есть первичный ключ. Вы ее-то пробовали flush ...
Старый 23.01.2008, 11:36   #11  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
Пробовал flush в init() формы обе таблицы. На InventTable канечно есть первичный индекс.
Старый 23.01.2008, 11:39   #12  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от polygris Посмотреть сообщение
Пробовал flush в init() формы обе таблицы. На InventTable канечно есть первичный индекс.
flush надо делать после твоего update.
Только непонятно - а зачем вы через connection делаете?
чем обычный update X++ не подходит?
Старый 23.01.2008, 11:51   #13  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Напиши свой дисплей метод
Старый 23.01.2008, 11:54   #14  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Кроме того, можено вместо flush сделать условие в этом дисплей методе не по первичному ключу, а по нему + какое-нибудь дополнительно условие RecId != 0, чтобы использовался не кэш таблице, а запрос шел на БД. Этот в свое время одни blog bot предлагал, правда для других целей.
Старый 23.01.2008, 11:57   #15  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А может попробуй в дисплей методе дописать:

X++:
yourTable.disableCache(true);
За это сообщение автора поблагодарили: polygris (1).
Старый 23.01.2008, 11:59   #16  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
обычный update не подходит потому как мне нельзя трогать поля modifiedBy, modifiedDate, modifiedTime
Старый 23.01.2008, 12:01   #17  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
disableCache(true) непомогло :-(
Старый 23.01.2008, 12:05   #18  
Ed1k is offline
Ed1k
Участник
 
102 / 42 (2) +++
Регистрация: 19.07.2006
Цитата:
Сообщение от polygris Посмотреть сообщение
sqlStr = strfmt("UPDATE InventTable SET PrimaryVendorId = '%1' FROM InventTable WHERE ItemId = '%2'", _primaryVendorId, _itemId);
здесь dataareaid надо бы в where
Старый 23.01.2008, 12:31   #19  
polygris is offline
polygris
Участник
AxAssist
MCBMSS
 
272 / 67 (3) ++++
Регистрация: 14.06.2005
Адрес: Киев
дико извиняюсь. протупил в реализации display метода. на самом деле disableCache(true) помог.
kashperuk - респект. спасибо!
Старый 23.01.2008, 13:31   #20  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,275 / 3476 (122) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от polygris Посмотреть сообщение
обычный update не подходит потому как мне нельзя трогать поля modifiedBy, modifiedDate, modifiedTime
Тогда сделай yourTable.overwriteSystemfields(true); и вызови при этом doUpdate(). Никакой коннекшн создавать при этом не надо...
Поля modified* не изменятся
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: petr (2).
Теги
t-sql, кэширование, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX Sustained Engineering: SQL Server 2005 sp3 & SQL Server 2008 with Dynamics AX Blog bot DAX Blogs 0 12.02.2009 06:08
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
SQL запрос через COM вызовы Акзапты 4 Jab Straight DAX: Программирование 3 14.06.2007 17:08
aEremenko: Диагностика проблем при установке Microsoft Dynamics Ax 4.0 на Microsoft SQL Server 2005 Blog bot DAX Blogs 0 28.10.2006 16:01
Чтение данных из SQL Server через ODBC. Не работает в 3-х звенке sukhanchik DAX: Программирование 7 30.05.2005 17:52

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:23.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.