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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.10.2003, 14:48   #1  
Ser is offline
Ser
NavAx
 
99 / 14 (1) ++
Регистрация: 04.03.2002
Адрес: Москва
Врем.табл.: поведение в 2-х и 3-х уровневой конф.
Привет всем!
Ax2.5Sp5

Есть модификация, в которой решается задача по "отсеиванию" лишних допустим проводок. Оптимальным показалось решение по созданию временной таблицы, ее заполнением нужной областью значений и подключением к существующему query в FormDataSource. Связывание происходило по признаку существования значения во временной таблице (ExistsJoin). Связь с постоянной таблицей.

Так повелось, что большая часть рабочих мест орг-ции работает на 2-х уровневой конфигурации. Все замечательно работало, пока не пришлось запустить ахапту в тонком клиенте.
И тут трабл: "Невозможно выбрать запись в табл. Скп . . . Временные таблицы должны быть вложенными (inner), когда вы объединяете их оператором join с постоянными таблицами".
Звучит вроде понятно, да только, во-первых, таблица и есть вложенная (не то чтобы inner, но exist точно), а, во-вторых, как объяснить прекрасное поведение без участия AOS?!

Может кто сталкивался. Вообще, неприятный осадок - столько работы
Это приговор?

С уважением, Сергей.
Старый 02.10.2003, 16:40   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
временные таблицы
Не советую соединять join-ом постоянные и временные таблицы!!!
Обязяательно посмотрите профайлером какие запросы получает SQL-сервер. Сделать еще один select в цикле по производительности будет тоже самое (при правильном выборе что сверху), а по наглядности и надежности значительно лучше.

Если уж очень хочется сделать join, то обратите внимание ГДЕ создается ваша временная таблица на клиенте или сервере (где происходит первый insert)
Старый 03.10.2003, 16:05   #3  
Axapta is offline
Axapta
Участник
 
91 / 12 (1) ++
Регистрация: 21.06.2002
Адрес: Moscow
2Ser:
Короче, Wamr хотел сказать, что джойнить с постоянными можно только временные таблицы, созданные на сервере. Я согласен с ним, что такие джойны не желательны, но иногда (обычно на формах) это нужно...

Для того чтобы временная таблица жила на сервере, я лично очень часто создаю на временной таблице статический метод initOnServer с модификатором server, который возвращает курсор:

return select firstonly имятаблицы;

Надо вызвать этот метод в init'е формы...
Старый 03.10.2003, 16:22   #4  
Ser is offline
Ser
NavAx
 
99 / 14 (1) ++
Регистрация: 04.03.2002
Адрес: Москва
PHP код:
static server ARN_Table initOnServer()
{

    return 
select firstonly ARN_Table;


бранная ругань на слово select
Старый 03.10.2003, 17:17   #5  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Слишком буквально
PHP код:
static server ARN_Table initOnServer()
{
    
ARN_Table aRN_Table;

    
select firstonly aRN_Table;
    return 
aRN_Table;

__________________
Андрей.
Старый 06.10.2003, 10:14   #6  
Ser is offline
Ser
NavAx
 
99 / 14 (1) ++
Регистрация: 04.03.2002
Адрес: Москва
Огромное спасибо Axapta!!!
Это на самом деле гениально и просто!

Да, также согласен, поскольку много раз обсуждалось, что нежелательно сцеплять постоянные и временные таблицы, но ситуация как раз заставила. Кстати, это довольно популярная лукап форма

Предыдущий постинг нарисовал, неупев как следует обдумать, действительно в лоб.
Очевидный факт, прошу прощения, сглупил.

Получается, что таблицы, подлежащие Join должны находиться на ОДНОЙ из сторон, либо на клиенте, либо на сервере. У меня они жили раздельно...

Спасибо участникам!
Сергей.
Старый 18.01.2005, 14:20   #7  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
? Возможно ли отобразить содержимое врем. таблицы в гриде на форме?
Привет всем!
Ax3.0Sp3

Сразу отмечу, что перед тем как написать в эту тему - просидел два дня в Аксапте с экспериментами, которые ни к чему не привели...

Описание задачи: необходимо отобразить пользователю (например, в гриде) из таблицы InventPosting номенклатуры со счетами начинающимися на 2 (3, 4, ...) + еще некоторые простые условия. Было решено организовать выборку во временную таблицу и затем отобразить либо записи врем. табл. либо объединение (join) временной и InventPosting.

Проблема: После заполнения врем. таблицы (в методе Init формы) данные не отображаютя в гриде (на настоящий момент я пытаюсь просто вывести содержимое временной таблицы). При чем через другие новые Query - QueryRun руками эти данные также никак получить не удается. Такое ощущение, что таблица ВСЕГДА создается на клиенте!!! Поведение (правильнее будет сказать - отсутствие такового) одинаковое и на тонком и на толстом клиентах...
Что я пропустил??? (кроме "правильных" курсов ) Неужели в Query нельзя использовать временные таблицы?
Старый 18.01.2005, 15:07   #8  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Вам поможет
QueryRun.setCursor(myTmpTable);
Старый 18.01.2005, 16:18   #9  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Изначально опубликовано Wamr
Вам поможет
QueryRun.setCursor(myTmpTable);
Спасибо, это действительно работает, но только если самому извлекать данные из QueryRun, созданного руками типа "new QueryRun(Query)"

А как быть с отображением временной таблицы в гриде формы?
DataSource.QueryRun().setCursor(myTmpTable) не помогает...
Старый 18.01.2005, 19:18   #10  
Ser is offline
Ser
NavAx
 
99 / 14 (1) ++
Регистрация: 04.03.2002
Адрес: Москва
Если вставлять записи в TmpTable,
где
- TmpTable - имя dataSource - то всё должно работать.
Ровно тот же результат даст операция:
TmpTable.setTmpData(localTmpTable),
где
- TmpTable - имя dataSource,
- localTmpTable - табличная переменная, используя которую вы добавляли записи
__________________
Чудес не бывает (c), истина где-то рядом (c)...
Старый 18.01.2005, 19:37   #11  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Мда... Как всегда все просто...
Огромное спасибо, Ser!
Сделал, все заработало. Сам ведь наблюдал, что две переменные одного типа "временная таблица" друг с другом совсем не связаны, а про DataSource - даже и не подумал. Записывал в свою переменную и искал причину в другом месте. В отпуск значит пора...
Старый 21.12.2005, 10:51   #12  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Вроде все делаю как сказано ... но ошибка все та же ... видимо не туда вставляю InitOnServer
на данный момент в ините формы
Старый 21.12.2005, 11:38   #13  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
извиняюсь... все работает. Руки видимо не оттуда.

Метод прописывается в ините после супер.. и вот оно счастье.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поведение свойства Height в отчете KiselevSA DAX: Программирование 0 31.10.2006 15:32
Непонятное поведение системы Paul_ST DAX: Администрирование 5 19.01.2006 15:31
Разные запросы в 2-х и 3-х уровневой конфигурациях. Что делать?! Anais DAX: Программирование 12 04.11.2004 12:47
Странное поведение резервирования после создания спланированной закупки. NEO DAX: Функционал 7 01.07.2004 14:03
После установки прав на группу пользователей в 3-уровневой, просматриваю еще раз..... Сергей Щербак DAX: Администрирование 3 09.04.2004 16:56

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

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

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