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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.03.2016, 10:45   #1  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
[Ax2009] - Дублирование записей в гриде
Уважаемые коллеги выручайте.

Пытаюсь сджойнить два датасурса по innerJoin'у. Оба _DS.cursor().setTmp()
Всё вроде бы нормально, НО в гриде через некоторое кол-во строк одна из записей начинает дублироваться. Причем это происходит только когда строк ~ >200.


На картинке видно, что у двух записей один RecId.

Если пробежаться _DS.getNext() то дублирующихся строк видно несколько. Если смотреть временную таблицу, то естественно никаких дублей нет, да и быть не может.

Направьте на путь истинный.
Миниатюры
Нажмите на изображение для увеличения
Название: double.png
Просмотров: 609
Размер:	10.0 Кб
ID:	9542  
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
За это сообщение автора поблагодарили: Ace of Database (3).
Старый 24.03.2016, 10:54   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Выведите в грид ещё recId второй таблицы и всё станет понятно
Старый 24.03.2016, 11:03   #3  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Выведите в грид ещё recId второй таблицы и всё станет понятно
Если бы...
Изображения
 
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 11:19   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Дополнительных соединений никаких не делается? Может быть программно?
На гриде указан правильный источник данных?
Старый 24.03.2016, 11:32   #5  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Дополнительных соединений никаких не делается? Может быть программно?
Нет, на форме кода нет. Всего 2 датасурса.

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
На гриде указан правильный источник данных?
Да
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 11:58   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
_DS.cursor().setTmp() делаете в какой момент? Если делать до super в init формы, могут быть глюки. Нужно делать после, либо вообще в методе run.
Старый 24.03.2016, 12:12   #7  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
_DS.cursor().setTmp() делаете в какой момент? Если делать до super в init формы, могут быть глюки. Нужно делать после, либо вообще в методе run.
В run() до super()
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 12:34   #8  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Вот проектик.
1 - Джоб наполнит таблицы.
2 - Открываем форму.
3 - Ищем строку находящуюся не на своем месте.


Глюк зависит от размера окна. Если до обнаружения глюка не разворачивать форму, то он появиться в начале (у меня 40+ строка обычно). Если же развернуть, то искать придется в конце. Но если сначала найти, а потом развернуть, глюк останется в начале.
Изображения
 
Вложения
Тип файла: xpo PrivateProject_TestBugProject1.xpo (8.4 Кб, 302 просмотров)
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 12:36   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Silence Посмотреть сообщение
Причем это происходит только когда строк ~ >200.
А записи на форме нормально сортируются/фильтруются? Если сделать фильтр по полю с дублирующим значением, клон исчезнет или отберутся обе записи?

Какая версия приложения? клиента?
Старый 24.03.2016, 12:41   #10  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А записи на форме нормально сортируются/фильтруются?
Сортируются/фильтруются.

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если сделать фильтр по полю с дублирующим значением, клон исчезнет или отберутся обе записи?
Исчезнет.

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Какая версия приложения? клиента?
Kernel version, application version - 5.0.1500.3761. Больше не известно.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 13:46   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Странно.
А у вас точно там не должно дублей быть ? При джоине такое возможно если одному значению ключа соответствует две записи в связанной табличке.

А вообще времянки лучше не джоинить. Тормозит.
Вот хорошая тема была.
Временные таблицы и скорость работы
Старый 24.03.2016, 13:53   #12  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Kernel version: 5.0.1500.6491. Не воспроизвелось.

У вас воспроизводится под разными пользователями? На разных компьютерах?
Кэш почистить, AOS перезагрузить ... У меня идеи кончились (

Последний раз редактировалось S.Kuskov; 24.03.2016 в 14:03.
Старый 24.03.2016, 13:56   #13  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от Logger Посмотреть сообщение
Странно.
А у вас точно там не должно дублей быть ? При джоине такое возможно если одному значению ключа соответствует две записи в связанной табличке.
Точно. Вот так я заполняю таблички в проекте который приатачен чуть выше.
X++:
    delete_from TestBugtable3;
    delete_from TestBugtable4;

    for ( i = 0; i < 1000; i++ )
    {
        TestBugtable3.Field1 = i;
        TestBugtable3.doInsert();
        TestBugtable4.Field1 = i;
        TestBugtable4.doInsert();
    }
Откуда здесь взяться дублям? Таблицы идентичны.

Цитата:
Сообщение от Logger Посмотреть сообщение
А вообще времянки лучше не джоинить. Тормозит.
Вот хорошая тема была.
Временные таблицы и скорость работы
Да, я знаю, спасибо. Для меня это не критично.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 13:59   #14  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
У вас воспроизводится под разными пользователями? На разных компьютерах?
Да. И на разных базах.
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Кэш почистить, AOS перезагрузить ...
Еще вчера пытался. Не помогает.
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
У меня идеи кончились (
Аналогично.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 14:04   #15  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Поймал. Если скролить при помощи PageDown на нераспахнутом окне
Старый 24.03.2016, 14:07   #16  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Поймал. Если скролить при помощи PageDown на нераспахнутом окне
У меня и колесом ловится. И в развернутом окне. Правда в развернутом долго искать приходится, глюк вылезает далеко.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 24.03.2016, 14:20   #17  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А если джоин убрать ?
Воспроизводится ?
Старый 24.03.2016, 14:30   #18  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Цитата:
Сообщение от Logger Посмотреть сообщение
А если джоин убрать ?
Воспроизводится ?
Нет, только при джоине. Причем только InnerJoin и OuterJoin. Остальные не глючат вроде.
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 16:30   #19  
Silence is offline
Silence
Участник
Аватар для Silence
 
287 / 27 (1) +++
Регистрация: 29.09.2004
Адрес: г. Москва, Зеленоград
Форма ловли глюков
Вот, слегка проапгрейдил форму для ловли глюков.
  • Глюки подсвечиваются
  • Можно перейти к следующему глюку по кнопке
Вложения
Тип файла: xpo PrivateProject_TestBugProject1.xpo (10.9 Кб, 245 просмотров)
__________________
Бывает, что человек молчит, когда ничего не знает о данном предмете, но чаще – когда знает о нем все. (Джордж Бернард Шоу)
Старый 24.03.2016, 22:44   #20  
Кирилл
Гость
 
n/a
Цитата:
Сообщение от Silence Посмотреть сообщение
Вот, слегка проапгрейдил форму для ловли глюков.
  • Глюки подсвечиваются
  • Можно перейти к следующему глюку по кнопке
Добрый вечер, скачал вашу форму, заполнил таблицы джобом, что-то там подсвечивалось, видимо глюки.

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

В принципе можно и не по RecId, а любой уникальный индекс.
Главное чтобы система могла отличить одну строку от другой.
За это сообщение автора поблагодарили: Silence (1), Logger (1), Ace of Database (3), S.Kuskov (5).
Теги
баг, глюк, грид, дублирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009. Не работает скролл если на гриде активен столбец типа дата S.Kuskov DAX: Программирование 7 27.10.2016 12:14
Ax2009 RU7 как измененить цвет колонок в гриде? Dimitori DAX: Программирование 4 14.12.2011 12:52
axinthefield: Choosing a Single Deployment or Multiple Deployments of AX2009 Blog bot DAX Blogs 0 15.06.2011 03:25
Дублирование адресов на форме поставщиков Ax2009 uchenik DAX: Программирование 17 04.02.2011 17:20
Обход записей в гриде Александр_1975 DAX: Программирование 4 03.12.2003 19:55
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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