Picklists in SalesLogix are a very useful tool, but did you know you could also you values from an existing picklist to populate other list-based controls such as ComboBoxes, CheckListBoxes, ListViews… even Radio groups? You simply need an understanding of the structure of picklists in SalesLogix:
There is a table named “Picklist” within the salesLogix database. There are a number of fields in that table, but the most important fields in this table are TEXT, ITEMID, and PICKLISTID. SalesLogix stores both the individual picklist items in this table, along with the definition for the picklist itself. The TEXT field contains the name of both the Picklist as well as each picklist item, however; a list item’s picklistid value will equel the itemid of the picklist name record. Instead of an ID in picklistid, the main record of the list contains the value ‘PICKLISTLIST’.
So, say you wanted to return the results of the Contact Type picklist, you could run the query:
select text as [Contact Type] from picklist
where picklistid in
(select itemid as picklistid from picklist
where text = ‘Contact Type’ and picklistid = ‘PICKLISTLIST’)
order By text
Then using that as the SQL in the process I defined in my last post (Here) you can populate the control of your choice with those values. This would also be very helpful if you wanted to use SLX Picklist data in an external application which has access to the SalesLogix data.
You can also do the same without the subquery with a join from picklist to picklist (not that it would make a difference performance-wise for something as small as a result of picklist items)
select p1.id, p1.text, p1.shorttext from picklist p1
left outer join picklist p2 on (p1.picklistid = p2.itemid)
where p2.picklistid = ‘PICKLISTLIST’ and p2.text = ‘Contact Types’