Writing Queries for the SalesLogix SData API

In this fourth post in the SalesLogix SData series, I will introduce how to write queries for SalesLogix SData and will point to a useful resource as you get started, or more comfortable with SData.

View the SalesLogix SData Developer series index

SData Query Language

Be sure to first take a look at my last post which covers how to retrieve data via the SData API. The ability to read data from SalesLogix via the SData API is only useful if you know how to control it. Reading all records from a table isn’t exactly useful. Knowing how to control which records you’re retrieving is a must. Fortunately, that is easy, but it does take some knowledge of the SData Query Language.

SData uses a language refered to as SData Query Lanaguage. So, what does this mean to you, another thing to learn? Not really. The syntax for the language is simple and easily guessable. If you know how to write NHibernate queries then this won’t look much different. As a matter of fact, if you know how to write SQL queries, this won’t really look much different.

Example Query Conditions

Before we get too deep into things, let’s take a look at some sample query conditions using SData. As I showed in the previous post (Retrieving Data via SData), you can use these conditions by adding them to the QueryValues collection of the SDataResourceCollectionRequest for the “where” part of the query.

  1. Retrieve all records created since 5/1/2011
    “CreateDate ge @2011-01-05@”
  2. Retrieve all account records whose Name starts with the letter A through L
    “left(AccountName,1) between ‘A’ and ‘L'”
  3. Retrieve all SalesOrders whose State on it’s associated BillingAddress is ‘AZ’
    “BillingAddress.State eq ‘AZ'”
  4. Retrieve all Accounts whose name contains the word Bank
    “AccountName like ‘%bank%'”

You’ll see something that looks familiar and understandable with all of those.

Query Conditions, Functions, & Operators

So what are all the possible things you can use in an SData query? Rather than list them all here, I will point to the official SData specification where it outlines the available functions and operators for SData.

SData Query Language  on SData Core Specification

View the SalesLogix SData Developer series index


Ryan Farley

Ryan Farley is the Director of Development for Customer FX and creator of slxdeveloper.com. He's been blogging regularly about SalesLogix, now Infor CRM, since 2001 and believes in sharing with the community. His new passion for CRM is Creatio, formerly bpm'online. He loves C#, Javascript, web development, open source, and Linux. He also loves his hobby as an amateur filmmaker.

1 Comment

  1. Hi all,

    Does anybody know how to filter a “child” entity by calling an URL?

    Something like:
    http://localhost:3333/sdata/slx/dynamic/-/funds(ID eq ‘39506’)?include=histories(category eq ‘Monitoring Report Comment’)

    Is it even possible to limit the child entity? I don’t like the fact, that I provide all history records for each call. I guess I can imagine how many history entries an entity can have in SLX. I would like to only get the ones with the specific category ‘Monitoring Report Comment’.

    Any hints or tips much appreciated 🙂



Submit a Comment

Your email address will not be published.

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!