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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.02.2013, 12:50   #1  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Vasiliusis, что-то вы намудрили, по-моему.
На сколько я смог догадаться, вы делаете отдельную форму для редактирования или вставки записи в таблицу? Или нет?
До сих пор не понятно почему изменение данных в БД происходит из метода modified, который для этого совсем не предназначен?
Да, отдельная форма и для того и для другого. У пользователя будет только одна попытка на работу с записью, т.е.: открыл форму, ввел, отредактировал пока форму не закрыл, как только закрыл - все, жизненный цикл записи в части создание/редактирование грубо говоря завершен. Потом только через бюрократию отредактировать запись, такой режим.

Почему в modified?

1. Только в методе modified я могут автоматически копировать данные из одного поля в другое, при условии, что эти поля на форме представлены стрингЭдитом с выпадающим список (допустим, А и В соответственно). Это по Вашей рекомендации.
2. Запись/перезапись в БД должна осуществляться при присваивании/изменении значения в вышеуказанном контроле А. По требованию пункта 1, я не могу этого (копирования из А в В) сделать в modified контрола А (был у меня такой пост...), то я делаю это в методах ДС.

Я думаю, что нужно будет убедить нашего начальника в том, чтобы вносить данные только при нажатии кнопки сохранить перед закрытием, а то это больно накладно каждый раз выполнять тучу кода и писать в БД...

Не отрицаю, возможно где-то чересчур лихо написал В конце концов, мой опыт производственной работы с аксаптой составляет не более 2-ух недель.

Последний раз редактировалось Vasiliusis; 14.02.2013 в 12:59.
Старый 14.02.2013, 13:02   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Vasiliusis Посмотреть сообщение
Запись/перезапись в БД должна осуществляться при присваивании/изменении значения в вышеуказанном контроле.
Для этого совсем не нужно вручную вызывать метод insert табличного курсора, т.к. он не делает вставку или тем более обновление текущей (редактируемой) записи, а делает как раз вставку новой (ещё одной) записи - отсюда у вас и задвоение.

Если вы хотите сохранить изменения в текущей записи, то вам нужно вызвать метод write() датасурса.

И курсор после этого не нужно никуда двигать он останется на этой же обновлённой/сохранённой записи.

Последний раз редактировалось S.Kuskov; 14.02.2013 в 13:04.
За это сообщение автора поблагодарили: Vasiliusis (1).
Старый 14.02.2013, 13:15   #3  
Vasiliusis is offline
Vasiliusis
Участник
 
225 / 13 (1) ++
Регистрация: 30.01.2013
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Для этого совсем не нужно вручную вызывать метод insert табличного курсора, т.к. он не делает вставку или тем более обновление текущей (редактируемой) записи, а делает как раз вставку новой (ещё одной) записи - отсюда у вас и задвоение.

Если вы хотите сохранить изменения в текущей записи, то вам нужно вызвать метод write() датасурса.

И курсор после этого не нужно никуда двигать он останется на этой же обновлённой/сохранённой записи.
Где Вы были раньше Лан, я понял Вас полностью, переделаю.
Видимо после вызова метода last(), т.к. я все-таки написал что-то в датасорс, аксапта пишет эту запись в таблицу, чтоб не потерять, а перед этим я инсертом вставляю еще одну. Вызов метода clear() удаляет, забывает просто напросто новую запись из ДС, что и решает мою проблему. Пролучается, что я создаю свою собственную запись, им удаляю ту, что создает сама аксапта, как только я присваиваю что-нибудь в какое-либо поле ДС, я так понял?

Кстати, в пользу того, что акспата записывает запись, чтобы не забыть говорит и то, что при закрытии формы дублирующая запись также записывается (если метод last не вызывать)

Тогда получается, что когда мы обращаемся к датасорсу в формате <название>_ds - это мы обращаемся ко всему хранилищу, а когда просто к <название> - это к текущей строке, на которую установлен курсор

Последний раз редактировалось Vasiliusis; 14.02.2013 в 13:49.
Старый 14.02.2013, 13:54   #4  
LeonDerCom is offline
LeonDerCom
Участник
 
45 / 20 (1) +++
Регистрация: 08.10.2012
Цитата:
Сообщение от Vasiliusis Посмотреть сообщение
Где Вы были раньше Лан, я понял Вас полностью, переделаю.
Видимо после вызова метода last(), т.к. я все-таки написал что-то в датасорс, аксапта пишет эту запись в таблицу, чтоб не потерять, а перед этим я инсертом вставляю еще одну. Вызов метода clear() удаляет, забывает просто напросто новую запись из ДС, что и решает мою проблему. Пролучается, что я создаю свою собственную запись, им удаляю ту, что создает сама аксапта, как только я присваиваю что-нибудь в какое-либо поле ДС, я так понял?

Кстати, в пользу того, что акспата записывает запись, чтобы не забыть говорит и то, что при закрытии формы дублирующая запись также записывается (если метод last не вызывать)
Тьфу... пропустил, что это в modified засунули...
Правильно, Вы изменяете значение, отрабатывается метод в котором вставляется еще запись, стоя на новой записи (которая insert) отрабатываете clear() и на last(). Без clear - две одинаковые. Проверить - посмотрите на RecId до и после манипуляции. Останется модифицированная старая запись.
Теги
волшебство, колдовство, магия

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Недоступность источника данных формы в display/edit-методах таблицы - баг или фича с глубоким смыслом? TasmanianDevil DAX: Программирование 10 03.08.2012 15:00
разная скорость отработки display методов на источнике данных формы wojzeh DAX: Программирование 10 05.05.2008 23:53
Странное поведение формы Создание строк vc DAX: Функционал 10 22.03.2006 10:32
Обновление данных формы из другой формы DiZ DAX: Программирование 4 14.10.2004 11:39
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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