AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 31.08.2005, 07:10   #1  
Perc ist offline
Perc
Участник
 
198 / 57 (2) ++++
Registriert seit: 05.03.2005
Сравнение с большим списком
Задача. Есть список табельных номеров сотрудников штук 50-60.
Нужно в аксапте сделать им дополнительные права, в справочнике сотрудников корректировки некоторые - обработать вобщем.
Делаю это программно в джобе - цикл по empltable. Нужно сравнить emplid со списком данных табельных. Как это сделать красиво? Не писать же в if 50 раз условие?
Сделал контейнер
container cont = ["00296",и тд...,"01645"];
и хотел в if сравнить через confind, но при компиляции ошибка -
"Переполнение во внутреннем стеке компилятора."

Как быстро и красиво выйти из ситуации?
Alt 31.08.2005, 08:18   #2  
Dozer ist offline
Dozer
Участник
AxAssist
Соотечественники
 
107 / 24 (1) +++
Registriert seit: 16.11.2004
Ort: г. Калгари, Канада
В каком виде список табельных номеров?
Если хранятся в таблице - тогда ИМХО нужно просто сделать
select emplTable
exists join <ваша таблица табельных номеров>
where <ваша таблица табельных номеров>.emplid == emplTable.emplid;

вуаля.

С уважением.
Alt 31.08.2005, 09:11   #3  
Ruff ist offline
Ruff
Дмитрий Ерин
Benutzerbild von Ruff
1C
 
475 / 396 (14) ++++++
Registriert seit: 18.09.2003
Ort: Тула
Лучше всего воспользуйтесь вариантом Dozer-а.
А в случае с контейнером можно попробывать извратный способ: перелить его в Map, предварительно видоизменив, примерно так:
PHP-Code:
container cont =[11050"00296"1"00297",1,...,"01645",1]; 
// единицы не играют роли - нужны для соотв-вия формату Map-ы
// 50 - кол-во таб. номеров (то есть пар Key-Value в Map-е)
Map map Map::create(cont);
;
while 
select emplTable
{
 if (
map.exists(emplTable.emplID))
 {
 
// обработка emplTable
 
}

__________________
Alt 31.08.2005, 09:57   #4  
SimPai ist offline
SimPai
MCTS
MCBMSS
 
105 / 10 (1) +
Registriert seit: 22.05.2002
Ort: Москва
Re: Сравнение с большим списком
Zitat:
Изначально опубликовано Perc
Сделал контейнер
container cont = ["00296",и тд...,"01645"];
и хотел в if сравнить через confind, но при компиляции ошибка -
"Переполнение во внутреннем стеке компилятора."

Как быстро и красиво выйти из ситуации?
Эта ошибка, вероятно, из-за длинного списка значений в контейнере.
Попробуйте объявить не один контейнер, а несколько (например, в каждом не более десяти значений). После в начале кода объедените контейнеры в один.
Или объявите несколько констант со списком значений (не очень длинным), а затем при объявлении контейнера, укажите в нём эти константы.
__________________
Удачи.
Alt 31.08.2005, 10:23   #5  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Я бы не рекомендовал пользоваться контейнерами для этой задачи. Тем более - с константами. Хм. Ну, сделайте таблицу - пусть будет гибкое решение!

С Уважением,
Георгий
Alt 31.08.2005, 10:47   #6  
Ruff ist offline
Ruff
Дмитрий Ерин
Benutzerbild von Ruff
1C
 
475 / 396 (14) ++++++
Registriert seit: 18.09.2003
Ort: Тула
Re: Re: Сравнение с большим списком
Zitat:
Изначально опубликовано SimPai

Эта ошибка, вероятно, из-за длинного списка значений в контейнере.
А, ну конечно же! Ошибка-то при компиляции...
Perc, мой пост про Map можете смело игнорировать - виноват, невнимательно читал вопрос И прислушайтесь к Dozer и George Nordic.
__________________
Alt 31.08.2005, 10:55   #7  
SimPai ist offline
SimPai
MCTS
MCBMSS
 
105 / 10 (1) +
Registriert seit: 22.05.2002
Ort: Москва
Zitat:
Изначально опубликовано George Nordic
Я бы не рекомендовал пользоваться контейнерами для этой задачи.
А почему бы и нет?! Не вижу причин не сделать именно так.
Кстати, Perc лучше сканировать не EmplTable, а этот контейнер (или таблицу, если он решит использовать именно таблицу)

Zitat:
Ну, сделайте таблицу - пусть будет гибкое решение!
Наверное, будет. Теоретически.
__________________
Удачи.
Alt 31.08.2005, 11:03   #8  
Perc ist offline
Perc
Участник
 
198 / 57 (2) ++++
Registriert seit: 05.03.2005
Zitat:
Изначально опубликовано George Nordic
Я бы не рекомендовал пользоваться контейнерами для этой задачи. Тем более - с константами. Хм. Ну, сделайте таблицу - пусть будет гибкое решение!

С Уважением,
Георгий
Гибкое решение Мне один раз джобик по списку запустить ... Потом по другому аналогичному списку. Хотелось как раз очень оперативно. Список то у меня уже был - табельные и фамилии подготовлены другим человеком по принципу который из акс вытянуть нельзя. думал щас сделаю как обычно в sql писал ctrc+c ctrl+v. И готово.
В итоге пришлось по списку нагенерировать условие типа
empltable.emplid == "00296" || empltable.emplid == "00593" || empltable.emplid == "01401" ||...
на треть экрана. Отработало. Но некрасиво это. Список то тьфу.. 55 штук по 5 символов и загнулась. Позор аксапте.
Согласен с SimPai, что лучше список сканировать, если он есть. Учту на будущее его предложение..
Alt 31.08.2005, 11:05   #9  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Г-н SimPai! Вы для кого пишите систему - для программистов? А прибежит тетенька и скажет "Ой! Я ошиблась в номере таком-то и таком-то! И запишите еще такой-то и такой-то номер, это, кажется тот-то и тот-то, но у него есть однофамилец, работает грузщиком, так вот это не он!"

Блин! Да сделайте таблицу, нарисуйте форму - делов-то! На пол-часа. И дайте юзеру упономеченному или сами администрите - легче же, чем в коде ковыряться и высматривать нужный табельный номер из 50ти!!!

Вам что, таблицу лишнюю жалко? Пожелейте тех, кто придет потом и вынужден будет разбираться в подобных "чудесах" с контейнерами.
Alt 31.08.2005, 11:25   #10  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
George, это может быть однократная задача и с эти кодом никто не будет разбираться никогда. Сам делал примерно такое. Причем делал так написал локальную функцию в коде processCode(str code) а потом регэкспом заменил в списке коды на ее вызовы
Alt 31.08.2005, 11:27   #11  
SimPai ist offline
SimPai
MCTS
MCBMSS
 
105 / 10 (1) +
Registriert seit: 22.05.2002
Ort: Москва
Zitat:
Изначально опубликовано George Nordic
А прибежит тетенька и скажет "Ой! Я ошиблась в номере таком-то и таком-то! И запишите еще такой-то и такой-то номер, это, кажется тот-то и тот-то, но у него есть однофамилец, работает грузщиком, так вот это не он!"
Бывает и так. Но как правильно заметил Perc весьма эффективно можно использовать ctrc+c ctrl+v.

Zitat:
Блин! Да сделайте таблицу, нарисуйте форму - делов-то!
Да я и не против. Кто хочет - пусть рисует таблицу, делает форму и т.д. А я прекрасно обойдусь и контейнером

Zitat:
И дайте юзеру упономеченному или сами администрите
Чего там администрить? Джоб одноразовый?

Zitat:
легче же, чем в коде ковыряться и высматривать нужный табельный номер из 50ти!!!
Не-а. Одинаково. Ctrl-F работает не только на таблицах!

Zitat:
Пожелейте тех, кто придет потом и вынужден будет разбираться в подобных "чудесах" с контейнерами. [/B]
Хорошо. Договорились. Проведу акцию гуманизма. Прибью код сразу после выполнения.
__________________
Удачи.
Alt 31.08.2005, 11:34   #12  
George Nordic ist offline
George Nordic
Модератор
Benutzerbild von George Nordic
Злыдни
 
4.480 / 1255 (50) ++++++++
Registriert seit: 17.12.2003
Ort: Moscow
Blog-Einträge: 9
Zitat:
Изначально опубликовано SimPai
Чего там администрить? Джоб одноразовый?
Вот! А будет лишняя "фенечка" для много разового использования!
Еще неизвестно, что из неё вырастет... Альтернативная раздача прав - как минимум!!
Zitat:
Изначально опубликовано SimPai
Хорошо. Договорились. Проведу акцию гуманизма. Прибью код сразу после выполнения.
Договорились!

С Уважением,
Георгий
Alt 31.08.2005, 11:42   #13  
SimPai ist offline
SimPai
MCTS
MCBMSS
 
105 / 10 (1) +
Registriert seit: 22.05.2002
Ort: Москва
Zitat:
Изначально опубликовано George Nordic

Вот! А будет лишняя "фенечка" для много разового использования!
Еще неизвестно, что из неё вырастет... Альтернативная раздача прав - как минимум!!
Эту мысль надо зафиксировать как прогрессивный метод для организации дополнительного объёма работ не требующих использования значительных ресурсов исполнителя!
__________________
Удачи.
Alt 31.08.2005, 11:50   #14  
belugin ist offline
belugin
Участник
Benutzerbild von belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.622 / 2925 (107) +++++++++
Registriert seit: 16.01.2004
Blog-Einträge: 5
http://xp.c2.com/YouArentGonnaNeedIt.html
Alt 31.08.2005, 12:19   #15  
Ned ist offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Registriert seit: 29.12.2002
Ort: самолёт
Предлагаю в таких задачах использовать Set вместо контейнера.
Хотя в целом по моему мнению Nordic трижды прав.
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
Alt 31.08.2005, 13:15   #16  
SimPai ist offline
SimPai
MCTS
MCBMSS
 
105 / 10 (1) +
Registriert seit: 22.05.2002
Ort: Москва
Zitat:
Изначально опубликовано Ned
Предлагаю в таких задачах использовать Set вместо контейнера.
Не пойдёт. Set, как минимум, неудобно инициализировать произвольным списком.
__________________
Удачи.
Alt 31.08.2005, 13:30   #17  
Ned ist offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Registriert seit: 29.12.2002
Ort: самолёт
Так и не надо его инициализировать вручную.
Сделать загрузку из текстового файла или визуальный интерфейс.
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
Alt 31.08.2005, 14:08   #18  
SimPai ist offline
SimPai
MCTS
MCBMSS
 
105 / 10 (1) +
Registriert seit: 22.05.2002
Ort: Москва
Zitat:
Изначально опубликовано Ned
Так и не надо его инициализировать вручную.
Сделать загрузку из текстового файла или визуальный интерфейс.
Не-не-не! В "ручной" инициализации весь цимус - просто и быстро. И не надо ничего делать. Ни таблиц, ни файлов, ни интерфейсов. Так сказать, раз и готово!
__________________
Удачи.
Alt 31.08.2005, 14:29   #19  
Ned ist offline
Ned
Lean Six Sigma
 
680 / 99 (5) ++++
Registriert seit: 29.12.2002
Ort: самолёт
Zitat:
Задача. Есть список табельных номеров сотрудников штук 50-60.
В каком виде есть? В виде файла? В виде бумажного списка?
Zitat:
Не-не-не! В "ручной" инициализации весь цимус - просто и быстро. И не надо ничего делать. Ни таблиц, ни файлов, ни интерфейсов.
Таким образом вы как раз усложняете и замедляете работу. Самый естественный способ - скопировать данные в файл или таблицу, а потом написать их обработку. Или же напрямую их прочитать из первоисточника.
__________________
Viacheslav Nefedov, http://www.nefedov.net, http://restock.guru/
Alt 31.08.2005, 14:49   #20  
Perc ist offline
Perc
Участник
 
198 / 57 (2) ++++
Registriert seit: 05.03.2005
Zitat:
Изначально опубликовано Ned
Так и не надо его инициализировать вручную.
Сделать загрузку из текстового файла или визуальный интерфейс.
случаи частые и сильно разнообразные, то сотрудники, то поставщики, то закупки.. - придумывать чтото универсальное (то куда пользователь будет(может быть я) готовить список) это постоянная работа над своей доработкой будет. То там пришлепнул, то тут подписал в итоге затрат на такую мелочевку выйдет больше. Ище и с пользователем бороться, типа - ты список написал здесь в электронном виде? А надо вон там! Идика перепиши туда!. Ах у тебя аксапта не установлена? Почему? Не нада? тебе пофигу список ты сделал... регламента нет?.....
Может когда то изменю мнение, но пока что случаи когда гемороиться не стоит четко видны.
В Аксапте вот косячок..
Может ей где настройку какую ткнуть, чтобы буфер не переполнялся проще
Stichworte
container, set, контейнер, перебор записей

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Сравнение при импорте XPO akvi DAX: Программирование 26 23.01.2013 18:03
Баг? Сравнение строк длиной более 32767 символов vallys DAX: База знаний и проекты 6 16.07.2008 12:18
Сравнение объектов в 4.0 Dronas DAX: Программирование 8 19.09.2007 07:51
Сравнение двух полей в Query Lucky13 DAX: Программирование 3 17.08.2005 11:42
Сравнение DialogField с null listener DAX: Программирование 6 15.01.2004 10:22
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 17:28 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.