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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.07.2007, 15:40   #1  
Blog bot is offline
Blog bot
Участник
 
25,617 / 848 (80) +++++++
Регистрация: 28.10.2006
jinx: Abfragen und Nutzungsdaten
Manchmal ist es notwendig eine Abfrage (Query) ?ber den Quellcode zu manipulieren um dort bspw. Einschr?nkungen vorzubelegen. Am h?ufigsten ist mir das in letzter Zeit bei Berichten passiert, es ist aber auch schon vorgekommen das ich komplette Abfragen in Tabellen abgespeichert habe um diese sp?ter nochmals benutzen bzw. manipulieren zu k?nnen. In beiden F?llen bin ich dabei auf die gleichen Probleme gestossen.
M?chte man Abfragen (bspw. In Berichten) mittels Quellcode manipulieren kann es Aufgrund der Nutzungsdaten zu Problemen in der Anzeige und in der Ausf?hrung der Abfrage kommen. Denn trotz manueller ?nderung an der Abfrage werden beim Aufruf des Dialoges der Abfrage noch die Nutzungsdaten des letzten Aufrufes der aktuellen Abfrage genommen/ geladen. Das f?hrt dann dazu das die Ver?nderungen nicht angezeigt oder beim Ausf?hren benutzt werden, sondern genau die Einschr?nkungen/ Einstellungen die auch im Dialog erscheinen.
Um das zu verhindern k?nnen mittels der Klasse SysQueryRun noch zus?tzliche Einstellungen getroffen werden. Hierzu wird eine neue Instanz von SysQueryRun angelegt, die mit der aktuellen Abfrage initialisiert wird.

Mittels
sysQueryRun.promptLoadLastUsedQuery(false);
wird festgelegt, dass die Nutzungsdaten des letzten Aufrufes nicht vorbelegt bzw. verwendet werden. Somit hat man nun die M?glichkeit die Abfrage mittels Quellcode zu manipulieren, ohne das es hier zu Problemen der Nutzungsdaten kommt, da diese nicht mehr ber?cksichtigt werden.
Im Bericht kann das beispielsweise so aussehen

X++:
public void init()
{
    SysQueryRun sysQueryRun;

    super();

    element.query().dataSourceNo(1).addRange(fieldnum(Tabelle, Feld)).value("NeuerWert");

    sysQueryRun = new SysQueryRun(element.query());

    sysQueryRun.promptLoadLastUsedQuery(false);

    element.queryRun(sysqueryRun);
}
Weitere nette M?glichkeiten bieten noch folgende Methoden
  • sysQueryRun.promptAllowSave ( boolean ); - speichern der Abfrage erlauben
  • sysQueryRun.promptShowSorting(boolean); - Sortierung anzeigen
  • sysQueryRun.promptAllowAddRange(QueryAllowadd); - Hinzuf?gen neuer Einschr?nkungen erlauben
  • sysQueryRun.promptAllowAddSorting(QueryAllowadd); - Hinzuf?gen neuer Sortierungen erlauben
  • sysQueryRun.promptAllowAddDataSource(boolean); - Hinzuf?gen neuer Tabellen erlauben#
  • sysQueryRun.promptShowReset(boolean); - Zur?cksetzten der Abfrage
  • sysQueryRun.promptSaveQueryPrUser(boolean);
Da SysQueryRun von QueryRun abgeleitet ist, kann SysQueryRun von jeder Standardquery initialisiert werden um dann die erweiterten Funktionen von SysQueryRun nutzen zu k?nnen.

Noch eine kleine Besonderheit, die mir bei den Berichten und deren Aufruf aufgefallen ist:
Wird der Bericht direkt (ohne MenuItem) aufgerufen erh?lt man immer die Originalen inkl. der per Quellcode getroffenen Einschr?nkungen angezeigt. Wir der Bericht aber ?ber ein MenuItem aufgerufen erh?lt man die zu letzt vom Benutzer inkl. der per Quellcode getroffenen Einschr?nkungen/ Einstellungen. Dabei werden die evtl. vorhandenen Einstellung ?berschrieben, wenn auf vorhandene Element zugriffen wird (findRange (Wert wird ?berschrieben) anstelle von addRange (alter Wert wird beibehalten und ein neuer hinzugef?gt)). Somit gehen in diesem Fall nicht alle vom Benutzer festgelegten Einstellungen verloren.




Es wird keine Haftung oder Gew?hrleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Mathias F??ler * jinx's AX Blog http://starside.eu *

More...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
jinx: Microsoft Dynamics AX - X++ und .NET (CLR) Arrays Blog bot DAX auf Deutsch 0 03.03.2009 03:08
jinx: Microsoft Dynamics AX 2009, Windows Server 2008 und SQL Server 2008 Blog bot DAX auf Deutsch 0 12.10.2008 20:10
jinx: Zugriff auf die Query, QueryRun und DataSource in einer Form Blog bot DAX auf Deutsch 0 14.04.2008 18:05
jinx: Microsoft Dynamics AX und .NET - Erstellen eines Termins in Outlook Blog bot DAX auf Deutsch 0 03.11.2007 00:33
jinx: Auf Benutzereingaben reagieren in Dialogen und DialogControls Blog bot DAX auf Deutsch 1 17.05.2007 16:50
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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