![]() |
#1 |
Участник
|
И снова Query и временные таблицы
Есть следующий код (отрывок)
qr3 = new QueryRun(q3); qr3.setCursor(t); while (qr3.next()) { balanceListTable = qr3.get(tablenum(IZH_BalanceListTable)); inventDim = qr3.get(tablenum(inventDim)); inventTable = InventTable::find(balanceListTable.ItemId); ..................... } t инстанс таблицы которая объявлена как Temporary = Yes заполнялась типа на сервере t = IZH_BalanceListTable::initOnServer(); ....... t.insert() клиент работает в 3х звенке Ax3 SP4 вопрос следующий пока таблица временная результат работы query какой то левый то есть InventDim подтянут криво или не подтянут совсем ставлю у таблицы Temporary в No результат выборки выдает как раз то что нужно скажите где еще что я забыл при работе с временными таблицами |
|
![]() |
#2 |
Administrator
|
Во-первых проверьте, insert первой записи временной таблицы ТОЧНО на сервере отрабатывает? (кстати - для этого есть смысл заглянуть двухуровневой конфигурацией)
Ну а во-вторых - как уже неоднократно писалось - никто не гарантирует в Аксапте нормальную работу джойна постоянных и временных таблиц. Т.е. если это работает - хорошо... Но это может и не работать.
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#3 |
Участник
|
мда как все запущено
|
|
![]() |
#4 |
Злыдни
|
Временные таблицы для трехуровневой конфигурации заполняются на клиенте. Поэтому модификаторы вызова лучше всего поставить в "Called From"
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
![]() |
#5 |
Developer
|
Цитата:
Def, покажите, пожалуйста, IZH_BalanceListTable::initOnServer() ... Последний раз редактировалось vallys; 07.12.2006 в 11:16. |
|
![]() |
#6 |
Злыдни
|
Я говорил не об общем правиле, а конкретном. Вызов наверняка идет из формы, а не из класса. Так что первая запись будет инициироваться клиентской частью. Может я ошибся, и это обрабочик запихнули в класс, но скорее всего это вывод данных запроса в форму.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
![]() |
#7 |
Developer
|
Цитата:
![]() Судя по куску кода - чтобы узнать, где инициализизуется первая запись, нужно увидеть IZH_BalanceListTable::initOnServer()... Хотя я склонен предположить, что там все "чисто" |
|
![]() |
#8 |
Участник
|
static server IZH_BalanceListTable initOnServer()
{ IZH_BalanceListTable balanceListTable; ; select firstonly balanceListTable; return balanceListTable; } еще писал для вставки static server void insertOnServer(IZH_BalanceListTable balanceListTable) { balanceListTable.insert(); } |
|
![]() |
#9 |
Участник
|
и еще это метод класса у которого стоит CalledFrom
а вызывается класс когда жмут на кнопку на некой форме |
|
![]() |
#10 |
Участник
|
кстати получил информацию что в 3х звенке табличка все равно не будет создана на сервере базы данных а будет на AOS и вследствие этого могут быть проблемы (тоже версия)
|
|
![]() |
#11 |
Участник
|
всем спасибо Господа!
я решил забить на все и сделать одним из двух вариантов 1. Длеаю таблицу НЕ временной ввожу туда пользователя и сессию для того чтобы данные от двух пользоватлей не клеились и работаю спокойно с табличкой 2. Оставляю табличку временной но денормализую результат, то есть нужные поля InvenDim складываю в эту табличку |
|
![]() |
#12 |
Developer
|
Def, а у Вас, случайно, InventDim соеденялся с временной не по QueryFetchMode::One2Many?
Последний раз редактировалось vallys; 07.12.2006 в 16:04. |
|
![]() |
#13 |
Участник
|
Def, вы совершенно неправильно работали с временной таблицей - во всяком случае, создается такое впечатление по тем кускам кода, которые вы показали.
Поэтому и не работало ![]() |
|
![]() |
#14 |
Злыдни
|
while select [поля] from [табличная переменная]
group by [поля] where [условия] { [табличная переменная tmp].[поле] = ...; . . [табличная переменная tmp].insert(); } [datasource].setTmpData([табличная переменная tmp]); все нормально работает
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
![]() |
#15 |
Участник
|
Ключевой момент, что вызвается метод setTmpData и что вызывается он в той же области видимости, что и табличная переменная временной таблички (то есть она еще не удалилась)
|
|
![]() |
#16 |
Участник
|
|
|
![]() |
#17 |
Участник
|
я не использую результат для отображения на форме а просто вывожу этот результат в EXCEL
|
|
![]() |
#18 |
Участник
|
|
|
![]() |
#19 |
Злыдни
|
А способ вывода данных (форма, файл) уже не играет роли: это только интерфейс вывода.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
![]() |
#20 |
Участник
|
Объясните плз цепочку работы объектов? Что где заполняется и как передается? В каком объекте у вас идет вывод в Excel?
Последний раз редактировалось zelen; 08.12.2006 в 16:21. |
|