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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.08.2008, 19:06   #1  
Blog bot is offline
Blog bot
Участник
 
25,477 / 846 (79) +++++++
Регистрация: 28.10.2006
jinx: Numerische Nummernkreise im Eigenbau
Microsoft Dynamics AX verwendet f?r eindeutige Kennungswerte (Id’s) die eingebautenNummernkreise, f?r welche ein Feld vom Typ „String“ ben?tigt wird. Dies macht auchSinn, da Nummernkreise in Dynamics AX oft ein oder mehrere alphanumerische Zeichenenthalten. Nat?rlich k?nnen auch rein nummerische Nummernkreise mit diesem „Framework“erstellt werden.

Allerdings sind die Nummernkreise im Dynamics AX Standard nicht ganz optimal bei derVerwendung von einem rein nummerischen Nummernkreisen. Dies f?ngt z.B. schon beimDatentyp an, der f?r das ID-Feld der Tabelle verwendet werden muss. Bedingt dadurch,dass ein Feld vom Typ „String“ verwendet werden muss, belegt dieses Feld unn?tig vielSpeicher in der Datenbank. Weiterhin gestalten sich Sortierungen, Rechenoperationen,etc. erheblich schwieriger.

Diese Probleme k?nnen umgangen werden, wenn f?r das ID-Feld der Datentyp „Integer“oder „Int64“ verwendet wird. Leider kann nun nicht mehr das Nummernkreis-Frameworkdes Dynamics AX Standards verwendet werden, da dies den Datentyp „String“ f?r einID-Feld vorschreibt.

Es muss also ein eigenes, kleines Nummernkreis-Framework oder ein eigener Nummernkreisgeschrieben werden, der die Verwendung des Datentyps „Integer“ f?r ID-Felder erm?glicht.Dies h?rt sich zuerst schwierig an, da Dinge wie fortlaufende Nummernvergabe oderdie Wiederverwendung von freien Nummern (L?chern im Nummernkreis) ber?cksichtigt werdensollten.

Es ist aber ganz und gar nicht schwierig, eine eigene Nummernkreisfunktionalit?t zuerstellen. Das einzige was hierf?r ben?tigt wird ist eine entsprechen aufgebaute Select-Abfrage.

Die n?chste Nummer eines Nummernkreises ist immer die zuletzt vergebenen Nummer (h?chste)+ 1.

Aku_TestTablet1;
;
select maxof(ID) from t1;
return t1.ID + 1;


Etwas schwieriger wird es, wenn auch die frei gewordenen Nummern des Nummernkreiseswieder vergeben/verwendet werden sollen. Dann muss immer die kleinste Id aus der Tabellegesucht werden, f?r die es keinen Datensatz in der Tabelle gibt. Gibt es kein "Nummernloch",muss die n?chst h?chste Nummer vergeben werden.

Aku_TestTablet1;
Aku_TestTable t2;
;
select minof(ID) from t1 notexists join t2 where t2.ID == (t1.ID + 1);
return t1.ID + 1;


Um diese ein wenig zu verdeutlichen, kann eine beispielhafte Implementierung eineseigenen Nummernkreises in diesem Demoprojekt"SharedProject_AKU_OwnIntNumberSeq" angesehen und runter geladen werden.


Es wird keine Haftung oder Gew?hrleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel K?hn (Aku's AX Blog, http://blog.ak-home.net) and Mathias F??ler (jinx's AX Blog, http://starside.eu)

More...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
jinx: Microsoft Dynamics AX 2009 Enterprise Portal Entwicklung Samples Blog bot DAX auf Deutsch 0 27.06.2008 04:06
jinx: Versionsverwaltung mit Visual Source Safe - Vergleichen von Objektversionen Blog bot DAX auf Deutsch 0 12.06.2008 17:05
jinx: Sprechende Methodenparameter verwenden Blog bot DAX auf Deutsch 0 11.06.2008 16:05
jinx: Technische Informationen ?ber Microsoft Dynamics AX 2009 im Internet Blog bot DAX auf Deutsch 0 06.06.2008 18:05
jinx: Werte der Systemfelder eines Datensatzes setzen Blog bot DAX auf Deutsch 0 30.05.2008 05:22

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:02.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.