Hi,
I studied this section before I posted! I can see how to add an AND to the join, but not how to make this 'and' another relation rather than a predicate. The second problem is how to make a relation just a predicate, i know i can use CustomFilterReplacesOnClause but how do i make the relation in the first place?
For your info, here is the code before i changed it to include my problem sql!
ResultsetFields fields = new ResultsetFields(9);
fields.DefineField(MetaDataMultiSelectFieldIndex.ID, 0, "MetaDataMultiSelectID", "c");
fields.DefineField(MetaDataMultiSelectFieldIndex.Order, 1, "MetaDataMultiSelectOrder", "c");
fields.DefineField(MetaDataMultiSelectFieldIndex.Name, 2, "MetaDataMultiSelectName", "c");
fields.DefineField(MetaDataItemFieldIndex.Order, 3, "MetaDataItemOrder", "d");
fields.DefineField(MetaDataItemFieldIndex.Name, 4, "MetaDataItemName", "d");
fields.DefineField(MetaDataItemFieldIndex.ID, 6, "MetaDataItemID", "d");
fields.DefineField(PriceFieldIndex.PriceEach, 5, "PriceEach", "b");
fields.DefineField(PriceFieldIndex.PriceEach, 8, "PriceEachDefault", "f");
fields.DefineField(CountryFieldIndex.CountryCurrencyToUse, 7, "DefaultCountry", "e");
IPredicateExpression countryWhere = new PredicateExpression();
countryWhere.Add(PredicateFactory.CompareValue(PriceFieldIndex.Country,ComparisonOperator.Equal,countryID,"b"));
IPredicateExpression selectForOrderWhere = new PredicateExpression();
selectForOrderWhere.Add(PredicateFactory.CompareValue(MetaDataItemFieldIndex.SelectForOrder,ComparisonOperator.Equal,true,"d"));
IRelationCollection rels = new RelationCollection();
rels.Add(MetaDataProductItemSelectedEntity.Relations.PriceEntityUsingMetaDataProductItemSelected,"a","b",JoinHint.Left).CustomFilter = countryWhere;
rels.Add(MetaDataProductItemSelectedEntity.Relations.MetaDataMultiSelectEntityUsingMetaDataMultiSelect,"a","c",JoinHint.None);
rels.Add(MetaDataMultiSelectEntity.Relations.MetaDataItemEntityUsingMetaDataItem,"c","d",JoinHint.None).CustomFilter = selectForOrderWhere;
IPredicateExpression where = new PredicateExpression();
where.Add(PredicateFactory.CompareValue(MetaDataProductItemSelectedFieldIndex.Product,ComparisonOperator.Equal,productID,"a"));
DataTable dynamicList = new DataTable();
TypedListDAO dao = new TypedListDAO();
dao.GetMultiAsDataTable(fields, dynamicList, 0, null, where, rels, true, null, null, 0, 0);