GenoObject.Session Property
Each object in the genealogy tree has its own Session for
storage. The GenoObject.Session is different from the global
Session
object by offering finer storage granularity.
Syntax:
The Session object is an instance of the
ObjectRepertory
class. Whatever you can do with with an ObjectRepertory , you
can do it with the Session object.
oGenoObject.Session(strKey) = oGenericObject ' Store generic object to the Session
Set oGenericObject = oGenoObject.Session(strKey) ' Retrieve generic object from the session
Usage:
The use of GenoObject.Session is for experienced programmers.
For instance, you may want to generate a repository of sources and citations.
Instead of generating an HTML page for each source and citation, may want to
write all of them to a single page. You can use the Session
object to store the bookmark information for each citation, so you can later
create hyperlinks to those citations. Similarly, you may want to format
your citations to a
special style (APA, LMA, AMA, CBE, Turabian, Chicago) and store the
formatted text in the Session object. In this case, the
strategy would be to format all your citations at the beginning of the report,
store the formatted citation text to the Session object, and later
retrieve the text from the Session object whenever needed.
Example:
To give a more down-to-earth scenario, let's use the Session object
to store formatted text about the Place object. The following
code stores the place name and city name in the Session
object.
Dim strPlaceNameAndCity
For Each p in Places
strPlaceNameAndCity = p.Name
' If the place name does not have a parenthesis, then
' add the city name, otherwise keep it as is.
If (InStr(1, strPlaceNameAndCity, "(") <= 0) Then
strCity = p.City
If (strCity <> "") Then
strPlaceNameAndCity = Util.FormatString("{} ({})", strPlaceNameAndCity, strCity)
End If
End If
p.Session("strPlaceNameAndCity") = strPlaceNameAndCity
Next
Later in the report, you can use the following code to display a place such
as the place of birth or place of death.
Report.WriteT3Br "Date of Birth: ", i.birth.date
Report.WriteT3Br "Place of Birth: ", i.birth.place.Session("strPlaceNameAndCity")
Report.WriteT3Br "Place of Death: ", i.death.place.Session("strPlaceNameAndCity")
Other Use of the Session Property:
There are many other use for the Session property. For
instance, you may wish to generate a picture album and store thumbnail
information about each picture, or assign the filenames associated to an event,
individual or family.
A more complex case would be to attach a database ID or a recordset from an
external database to a GenoObject . For instance, you may fetch additional
contact information from a Microsoft Outlook file and bind them to the contact
records in GenoPro. The strategy here would be to create a
StringDictionary
or an ObjectRepertory to store all unique contact information, then
open the Outlook database and loop through each contact information. For
each contact information in Outlook, add it to the StringDictionary
or ObjectRepertory . Then, loop through each contact
information in GenoPro. For each contact in GenoPro, perform a lookup if
that contact information is in the StringDictionary or
ObjectRepertory . If so, store the contact information from Outlook
into the Session
of GenoPro's contact object.
In summary, the GenoObject.Session is the cornerstone for
generating sophisticated reports.
Memory Life Cycle:
Any object or value stored in the Session object will be
automatically freed when the report engine shuts down. You don't have to
any special processing to unload the objects from memory - GenoPro does it
automatically for you. To explicitly unload an object from the
Session , just set its value to Nothing .
p.Session("strPlaceNameAndCity") = Nothing
Citation Styles:
The following list is a summary of various styles for citing sources. The
documentation of each citation style is beyond the scope of the Session
property.
- APA: psychology, education, and other social sciences.
- MLA: literature, arts, and humanities.
- AMA or CBE: medicine, health, and biological sciences.
- Turabian: designed for college students to use with all subjects.
- Chicago: used with all subjects in the "real world" by books, magazines,
newspapers, and other non-scholarly publications.
See Also:
ObjectRepertory (class)
|