SELECT *
FROM service_details, service_header
WHERE
service_header.idrec = service_details.service_header_id
AND
service_header.document_status = 'Z'
AND
service_header.document_year = 2005
AND
service_details.idrec
NOT IN
(
SELECT received_idrec
FROM service_details, service_header
WHERE
service_header.idrec = service_details.service_header_id
AND
service_header.document_status = 'Z'
)
This works fine:
ServiceDocument document = new ServiceDocument();
ServiceDocumentItem documentItem = new ServiceDocumentItem();
ServiceDocumentItemCollection items = new ServiceDocumentItemCollection();
CMultiRetrieveCriteria mrc = new CMultiRetrieveCriteria();
The problem is that I do not know how to build the 'NOT IN sub criteria':
NOT IN
(
SELECT received_idrec
FROM service_details, service_header
WHERE
service_header.idrec = service_details.service_header_id
AND
service_header.document_status = 'Z'
)
I have the following select statement:
SELECT *
FROM service_details, service_header
WHERE
service_header.idrec = service_details.service_header_id
AND
service_header.document_status = 'Z'
AND
service_header.document_year = 2005
AND
service_details.idrec
NOT IN
(
SELECT received_idrec
FROM service_details, service_header
WHERE
service_header.idrec = service_details.service_header_id
AND
service_header.document_status = 'Z'
)
This works fine:
ServiceDocument document = new ServiceDocument();
ServiceDocumentItem documentItem = new ServiceDocumentItem();
ServiceDocumentItemCollection items = new ServiceDocumentItemCollection();
CMultiRetrieveCriteria mrc = new CMultiRetrieveCriteria();
mrc.addObjectToJoin(document, null, "");
mrc.addObjectToJoin(documentItem, document, "Items"
mrc.ReturnFullObjects = true;
CCriteriaCondition criteria = mrc.getNewCondition();
criteria.addSelectEqualTo(' document_year', 2005);
criteria.addSelectEqualTo('deocument_status','Z');
mrc.WhereCondition = criteria;
CCursor c = mrc.perform();
while(!c.EOF && c.hasElements())
{
CPersistentObject obj = (CPersistentObject)(new ServiceDocumentItem());
c.loadPersistentObject(ref obj);
items.Add(obj);
c.nextCursor();
}
The problem is that I do not know how to build the 'NOT IN sub criteria':
NOT IN
(
SELECT received_idrec
FROM service_details, service_header
WHERE
service_header.idrec = service_details.service_header_id
AND
service_header.document_status = 'Z'
)
Is it possible somehow (pseudo code):
CCriteriaCondition notIncriteria = mrc.getNewCondition();
notIncriteria.addSelectEqualTo(' document_year', 2005);
notIncriteria.addSelectEqualTo('deocument_status','Z');
mrc.AddSelectNotIn('received_idrec', notIncriteria);
service_details = ServiceDocuumentItems / ServiceDocumentItemCollection
service_header = ServiceDocumentItem
Thanks in advance
Sanjin