08.12.2004, 15:41 | #1 |
Участник
|
tmpTable+Cursor= Error....
1.1)
PHP код:
PHP код:
ax32.exe generated error..... Вопрос: Почему падает? 2) PHP код:
Вопрос: Почему пустой? 3) И только с помощью такого изврата удалось получить копию буфера: PHP код:
P.S. Может я чего то не правильно понимаю? (доки по классам - маловато)
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
08.12.2004, 15:53 | #2 |
NavAx
|
начнем с того, что писать в clicked() неприлично
__________________
Isn't it nice when things just work? |
|
08.12.2004, 15:53 | #3 |
Участник
|
Цитата:
Изначально опубликовано macklakov
начнем с того, что писать в clicked() неприлично
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
08.12.2004, 16:03 | #4 |
NavAx
|
Спасло вас makeRecord(). Чтобы это значило?
__________________
Isn't it nice when things just work? |
|
08.12.2004, 16:04 | #5 |
----------------
|
А чего ты хочешь добиться?
может так tmpT.Data(tmpDS); или так buf2buf(tmpDS, tmpT); |
|
08.12.2004, 16:11 | #6 |
NavAx
|
2Wamr: нельзя тебя в разведку брать, сразу все секреты выдашь
__________________
Isn't it nice when things just work? |
|
08.12.2004, 16:11 | #7 |
Участник
|
Цитата:
Изначально опубликовано macklakov
Спасло вас makeRecord(). Чтобы это значило?
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
08.12.2004, 16:17 | #8 |
Участник
|
Цитата:
Изначально опубликовано Wamr
А чего ты хочешь добиться? может так tmpT.Data(tmpDS); или так buf2buf(tmpDS, tmpT);
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
08.12.2004, 17:34 | #9 |
Участник
|
Ладно по поводу копирования буферов - бог с ним.
А вот по поводу падений - комментарии будут?
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
09.12.2004, 06:58 | #10 |
Участник
|
Цитата:
Изначально опубликовано bucken
Ладно по поводу копирования буферов - бог с ним. А вот по поводу падений - комментарии будут? |
|
09.12.2004, 14:27 | #11 |
Участник
|
Цитата:
Изначально опубликовано Alks
Привыкайте к тому, что когда что то делаете неправильно в аксапте, вместо вежливого сообщения об ошибке она вылетает. PHP код:
http://www.axforum.info/forums/showt...ghlight=cursor Так что тут далеко не ля ля. или я опять не прав? P.S. Ну на счет привыкайте - мы уже железобетоные...
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
09.12.2004, 14:53 | #12 |
Участник
|
Для меня вообще те конструкции которые вы привели в начале выглядят странно и извращенно. Какая вообще постановка задачи? Если изложите проблему уровнем выше (т.е. что за форма, что на ней изображаете, чего хотите добится методом), то возможно родится решение близкое к стандартным.
Кстати, а зачем вызывать cursor().data(), если сам cursor() уже имеет тип Common? |
|
09.12.2004, 17:16 | #13 |
Участник
|
Цитата:
Изначально опубликовано Alks
Для меня вообще те конструкции которые вы привели в начале выглядят странно и извращенно. Какая вообще постановка задачи? Если изложите проблему уровнем выше (т.е. что за форма, что на ней изображаете, чего хотите добится методом), то возможно родится решение близкое к стандартным. Кстати, а зачем вызывать cursor().data(), если сам cursor() уже имеет тип Common? Бизнес-анализы и прочее. 2. Интересует почему не работает конструкция - которая должна работать. И ЭТО ГЛАВНЫЙ ВОПРОС. 3. А вот поводу cursor().data() а не cursor() была привидена ссылка яствено указываешь зачем это надо. 4. Дальний диалог не целесообразен.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
09.12.2004, 17:19 | #14 |
Участник
|
Я считаю это ошибкой программы Axapta.
Вот и все. Но почему то никто не обратил внимание. Ну да ладно. Всем успехов.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
09.12.2004, 18:33 | #15 |
----------------
|
xRecord::setTmpData
Description Sets the buffer it is performed on to use the same physical dataset as the buffer passed as parameter. This method is only applicable on a temporary table buffer using a buffer on a temporary table as parameter. The normal behaviour for temporary tables is that instances of the same table are isolated from each other. This method allows several buffer instances to operate on the same temporary data. Т.е. данное действие предназначено для работы со всей временной таблицей, а не с буфером одной записи. А вот падение Аксапты без нормальных объяснений, действительно, ошибка. |
|
10.12.2004, 05:35 | #16 |
Участник
|
[QUOTE]Изначально опубликовано bucken
Цитата:
2. Интересует почему не работает конструкция - которая должна работать.
И ЭТО ГЛАВНЫЙ ВОПРОС. Цитата:
3. А вот поводу cursor().data() а не cursor() была привидена ссылка яствено указываешь зачем это надо.
PHP код:
И действительно, если написать PHP код:
Цитата:
4. Дальний диалог не целесообразен.
|
|
10.12.2004, 10:55 | #17 |
Участник
|
Ну что ж....
PHP код:
2. "Вам кажется ответили" - ГДЕ? 3. Цитата:
Я по той ссылке мало того что не нашёл никаких доводов что это надо, более того, любопытства ради набросл у себя форму с временной таблицей TmpItemQty и кнопкой с кодом:
А написано следующее там: Цитата:
Будьте внимательны, cursor() вернет вам буфер таблицы, который используется для вывода данных в форму. То есть, если вы начнете делать select'ы, указывая в качестве таблицы именно этот cursor(), будет происходить фильтрация данных, выводимых в форму. Лучше создать еще один объект, и делать select'ы по нему.
Цитата:
void method(FormDataSource _formDS)
{ Common common = _formDS.cursor().data(); }-------------------------------------------------------------------------------- Цитата:
Чтобы понять, что я имел в виду, под фильтрацией буфера, проведите маленький эксперимент:
Создайте форму и добавьте к ней DataSource. Например, InventTable. На форме разместите Grid, в котором выведите какие-нибудь данные DataSource. Также на форме поставьте кнопку. В методе clicked() у нее напишите что-нибудь вроде: X++ code:-------------------------------------------------------------------------------- Common common; ; common = InventTable_ds.cursor(); select common where common.(fieldnum(InventTable, ItemId)) like "С*";-------------------------------------------------------------------------------- Нажмите на кнопку и наблюдайте за содержимым Grid'а. А теперь представьте, что вы генерируете более сложные запросы. Представьте, что будет видеть пользователь! Цитата:
То Аксапта вылетает. И это логично, если присмотреться к описанию метода .data(). (Более того, логично почему он работает для невременных таблиц.) Копия таблицы полученная из метода data() просто обязана "разлинковываться" от своего буфера в памяти, и вообще непонятно что потом с этим data() делать.
"описанию метода .data()." А что присматриваться то? Создание полной копии буфера без сслылок на буфер источника. Так называемое копирование объектов. 5. Цитата:
ItemQty.setTmpData( TmpItemQty_ds.cursor()
Лана.. Alks, я и в правду занервничал - чуть злиться даже начал. Опять же таки не хочу флудить и все такое. Не будем пылить по пусту, ок?
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
10.12.2004, 11:52 | #18 |
Участник
|
Цитата:
Изначально опубликовано bucken
1. Если это приводит к падению аксапты, то не есть ли это ошибка программы, хотя бы потому что падение любого по - считается критической ошибкой? Цитата:
А что присматриваться то?
Создание полной копии буфера без сслылок на буфер источника. Так называемое копирование объектов. Цитата:
Чтобы понять, что я имел в виду, под фильтрацией буфера, проведите маленький эксперимент:...
Дело в том, что методу setTmpData можно спокойно передавать ссылку на активную табличную переменную датасоурса, т.к. он её не модифицирует и не делает по ней выборки. (Поэтому я и писал в посте выше "...без всяких побочных эффектов.", мой пример совершенно бесследно для датасоурса отображает сумму по всем запиям.) У него вообще принцип действия другой - он напрямую обращается к указателю на временные данные в переданной ему табличной переменной и вытаскивает оттуда все записи. Ввиду сказанного пунктом выше в случае использвоания data() он глючит. Для реальных, а не временных таблиц всё совсем по другому. Цитата:
Лана.. Alks, я и в правду занервничал - чуть злиться даже начал.
Опять же таки не хочу флудить и все такое. Не будем пылить по пусту, ок? P.S. Кстати, забыл сказать, если вы хотите получить некую выборку, в которую попадают только записи отфильтрованные в датасоурсе, то стандартный способ получить эту выборку: ds.getFirst() и ds.getNext(). Теперь оглядываясь назад мне кажется что это именно то что вам нужно было изначально, т.к. в setTmpData попадут все записи из временной таблицы, даже если они не отвечают фильтрав в datasource. |
|
10.12.2004, 22:06 | #19 |
Участник
|
Цитата:
Изначально опубликовано Wamr
xRecord::setTmpData А вот падение Аксапты без нормальных объяснений, действительно, ошибка. -Ну ты друг, какую то полную фигню написал. Внимание! Падаю |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Отчеты,fetch | 14 | |||
Внутренний аудит изменений кода (DAX 4) | 6 | |||
tmpTable и Grid | 39 | |||
Опять TmpTable | 3 | |||
tmpTable | 2 |
|