Page 1 of 1

Filtered Appointments in Contact List Layout

PostPosted: Fri Mar 30, 2007 1:10 pm
by Marvin
I need to create a list layout based on the Contact table, that will also show a portal, in a Grand Summary Part, showing the related appointments for those contacts for that day. The list layout is opened with a Find so that only a select group of Contacts (in my case residents) are shown. The table occurence CalDailyAppointments appears to show all Appointments for all Contacts regardless of the found set. Is there a way to change that portal so that only the Appointments for the found set are displayed?

PostPosted: Fri Mar 30, 2007 5:55 pm
by John Sindelar
Cool problem. =)

But it sounds like you're "mixing your metaphors" here (for example which day would a found set of contacts be printing?). By that, I mean that I don't think a portal in a trailing grand summary is the best way to display the appointments for a found set of contacts.

And to answer your question specifically, a portal can't be made to show the matches for a found set without some trickery. The most common work around for this is to gather all the IDs from the found set into a single global field (separating them by carriage returns) and then base a relationship on that global.

Again, though, I don't know if that is what is required here.

A few suggestions....

a) If you want to find all the appointments for residents (a type of contact) within a date range you can perform that find in the Appointments table by including the related contact's "type" field in that find. Then you could print the found appointment using a layout based on the appointments table, perhaps with a subsummary part based on the contact to show the resident's information and then all their relevant appointments before moving to the next resident.

b) Having built a found set in the contacts' table you can GoToRelated records for those contacts selecting to match all the records in the found set. This would leave you in the appointments table where you can print something like that described in "a".

c) If you want to print a list of contacts followed by a list of their appointments, you might want to think of it as two layouts. Have your script print the contact's list first, then GoToRelated as described in "b", perhaps performing an additional scripted find at that point to constrain the found set to recent or upcoming appointments before printing something like that described in "a".

Note that none of these suggestions has you printing a portal per se. Onec reason for this is that while a portal can "slide" up the number of rows, it can't collapse its row height to be just as tall as it needs to be. This means that it can be hard to print the full description for all your appointments in a portal since the portal row height would have to be as large as the largest appointment.

I hope that gets things started for you.

Portal in a List Layout

PostPosted: Mon Apr 02, 2007 12:27 pm
by Marvin
Assuming the portal row height is not an issue (which it is not in my case), is there still not a way to have a portal that reflects the found set?

PostPosted: Mon Apr 02, 2007 1:36 pm
by John Sindelar
Not without some kind of trickery...
The most common work around for this is to gather all the IDs from the found set into a single global field (separating them by carriage returns) and then base a relationship on that global.

PostPosted: Tue Apr 03, 2007 3:48 pm
by Marvin
Ok - No trickery. I'll split the reports into to two. One showing the residents (contacts) and antoher showing the appointments for the day. How do I create a found set that will just show today's appointments. CalDailyAppt works fine as a portal, but as a list it appears to be unfiltered. Do I have that right?

PostPosted: Tue Apr 03, 2007 5:15 pm
by Marvin
It appears I need to include both the Start Date field and the End Date Calc field in the find. It appears to be working, as well as my Contact type criteria. It appears to be working fine now.

PostPosted: Wed Apr 04, 2007 5:57 am
by John Sindelar
Glad to hear it Marvin!