Login / Register  search  syndication  about

          Kris Halsrud's Blog

Kris Halsrud on development and Integration with CRM and Development

Returning a distinct result set using IRepository in SalesLogix

Using IRepository in the SalesLogix web client can allow querying the SalesLogix entity model directly, similar to how you used to query the database directly using T-SQL queries.  Ryan has already created a great post here about this, and I expanded on that here.  Today I want to talk about one more functionality of the IRepository, that is how to use Projection to return a distinct list of records from your query.

Lets take a look at how to return a distinct list of Families in the Product table;  The first step is to build your normal query using IRepository:

Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IProduct>  repository = Sage.Platform.EntityFactory.GetRepositoryHelper<Sage.Entity.Interfaces.IProduct>();
Sage.Platform.Repository.ICriteria criteria = repository.CreateCriteria();
criteria.Add(repository.EF.IsNotNull("Family"));
criteria.AddOrder(repository.EF.Asc("Family"));

 This established what records you will be returning.  In my case I just added a restriction to only return products with a Family, and then I ordered the result by Family in Ascending order.  Now that we have our query we can then add Projection to it:

criteria.SetProjection(repository.PF.Distinct(repository.PF.Property("Family")));

 Finally we return our distinct list:

System.Collections.IList products = criteria.List();

 With that returned we can then do something with it like bind it to a combo box:

cboFamily.DataSource = products;
cboFamily.DataBind();

Lets look at it all together:

System.Collections.Generic.IList<Sage.SalesLogix.PickLists.PickList>  picklists = Sage.SalesLogix.PickLists.PickList.GetPickListItemsByName("Product Family", true);
Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IProduct> repository = Sage.Platform.EntityFactory.GetRepositoryHelper<Sage.Entity.Interfaces.IProduct>();

Sage.Platform.Repository.ICriteria criteria = repository.CreateCriteria();
criteria.Add(repository.EF.IsNotNull("Family"));
criteria.AddOrder(repository.EF.Asc("Family"));

criteria.SetProjection(repository.PF.Distinct(repository.PF.Property("Family")));

System.Collections.IList products = criteria.List();

cboFamily.DataSource = products;
cboFamily.DataBind();

One last thing to note.  If you want to return a distinct result on more than one field you can change this:

criteria.SetProjection(repository.PF.Distinct(repository.PF.Property("Family")));

To this:

criteria.SetProjection(repository.PF.Distinct(repository.PF.ProjectionList()
.Add(repository.PF.Property("Family"))
.Add(repository.PF.Property("Product"))));
What's This?
  
Bookmark and Share

About Kris Halsrud

   Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.


Related Content
   Easily Showing and Hiding Tabs at Runtime in Infor CRM (Saleslogix)
Showing and hiding tabs in the Infor CRM (Saleslogix) client should be an easy thing. It should be someth
Posted on Dec 16, 2014 by Ryan Farley to Ryan Farley's Blog
 
   Problem setting SLXTextbox enabled property / Setting unexposed base control properties for a custom control
I recently had an issue with a Quickform where I was attempting to set the Enabled property of a TextBox
Posted on Dec 05, 2014 by Jason Buss to Jason Buss' Blog
 
   Checking Infor CRM (Saleslogix) Picklists for valid data
This week I received a question about a particular picklist. One of the picklist items, when chosen, wou
Posted on Dec 05, 2014 by Dale Richter to Infor CRM Questions & Answers
 
   Avoiding the Dirty Data Message When Programatically Redirecting to a Record in Infor CRM (Saleslogix)
In my last post I wrote about using the OnClientClick property of a control (or button) to run JavaScript
Posted on Dec 02, 2014 by Ryan Farley to Ryan Farley's Blog
 
   Infor CRM (formerly Saleslogix) Web- Dependency Lookup OnChange Event Not Working Correctly
In the Saleslogix 8.1 web client the dependency lookup still has a problem with the OnChange event. 
Posted on Nov 26, 2014 by Kris Halsrud to Kris Halsrud's Blog
 
Comments

 

Twitter Trackbacks for SalesLogix Returning a distinct result set using IRepository in SalesLogix: Using IRepository in the SalesLogix we... [customerfx.com] on Topsy.com said:

Pingback from  Twitter Trackbacks for                 SalesLogix Returning a distinct result set using IRepository in SalesLogix: Using IRepository in the SalesLogix we...         [customerfx.com]        on Topsy.com

April 28, 2010 2:27 PM

Leave a Comment

(required)  
(optional)
(required)  
Add
All contents Copyright © 2014 Customer FX Corporation
Customer FX Corporation
2324 University Avenue West, Suite 115
Saint Paul, Minnesota 55114
Tel: 800.728.5783

  Follow @CustomerFX on twitter
Follow the best news, tips, and articles
  Subscribe to Customer FX on youtube
Watch SalesLogix tutorial videos from Customer FX
Login / Register