2010-08-06 21 views
2

En utilisant les services Web Navision, comment filtrer par date.Dynamics Nav (Navision) webservice ReadMultiples filtres de date

c.-à-d. Dans une table SalesHeader, il y a un "ExportedDate". J'aimerais trouver tous les SalesHeaders où ExportedDate n'a pas été défini ou exporté à une date particulière.

Il semble que chaque fois que nous définissons un filtre sur un champ de date, le service Web renvoie toutes les lignes ou aucune ligne.

Répondre

7

Cela peut être fait. Vous devez utiliser la même expression de filtre que vous utiliserez dans le Nav Client:

01012011..   would be all dates from 01.01.2011 
..01012011   would be all dates to 01.01.2011 
01012011..03012011 gets all dates between 01. and 03. 
+0

J'ai affaire à ce problème. Nos dates LAST_MODIFIED_DATE sur une page ressemble à ceci: 09/04/2013 Quand vous faites comme expliqué dans le rien de réponse est renvoyé: tableau ( « champ » => « Last_Date_Modified », « Critères » => ' 20130101 .. ' ) Des indices sur ce qu'il faut faire? – nielsiano

+0

Dans le cas où quelqu'un voit cela, j'ai posté une nouvelle question concernant un problème similaire ici: http://stackoverflow.com/questions/16542364/date-filter-in-microsoft-dynamics-nav-webservice – nielsiano

0

Après la page d'édition 42 (Commande) en tant que service Web à NAV, j'ai ajouté une référence Web au service Web nouvellement créé dans mon projet Visual Studio. Dans le code C#, je crée une nouvelle instance du service, et lui dire d'utiliser les informations d'identification par défaut:

SalesOrders_Service salesOrdersService = new SalesOrders_Service(); 
salesOrdersService.UseDefaultCredentials = true; 

J'instancier un filtre, et définir le champ et les critères:

SalesOrders_Filter filter = new SalesOrders_Filter(); 
filter.Field = SalesOrders_Fields.Document_Date; 
filter.Criteria = "01-31-14|''"; // specific date (MM-dd-yy) or empty 

l'instance de filtre est ensuite ajouté à un nouveau tableau de SalesOrders_Filters avant de passer celui-ci à LirePlusieurs:

SalesOrders[] salesOrders = salesOrdersService.ReadMultiple(new SalesOrders_Filter[] { filter }, null, 0); 

Sur ma machine, retourne deux commandes dont la date du document est le 31 Janvier 2014, et une commande avec une date de document vierge.