Crystal Reports on Wednesday, May 22, 2013 10:43 AM

It seems to me, if I remember, the logical file, when used in
Crystal Reports, it passing not only all the records of the file
OEOEHDOH, but also all the many fields. Is this correct?

I am unsure what CR does for whatever is the undescribed specific scenario [i.e. per the LF ¿"used in"? but no explanation of how], and generally what CR even allows to be done with an LF...

But a database request to open the LF [as created from the DDS source included later\below, albeit with some extraneous "R" characters that are apparently ignored by the DDS compiler for an LF], would include all columns from the PF. The rows available from that open, the Open Data Path (ODP), are those defined to be selected per the select\omit logic. The data from the ODP is returned in the order of the keys when the file is opened using a keyed open access method, but for a query [an implicitly non-keyed] open, the order is undefined except whatever is specified in the query request.

Whether or not the open is a query open, only the rows selected according to the logic in the LF should be returned to the program [or SQL request] that opened the file. IIRC there were a few separate message threads posted to this list earlier in v7 implying that some SQL requests were not properly honoring the selection defined in the LF, however I do not similarly recall that any followup messages were given by the OP after the given response was effectively to "contact IBM\service-provider". I finally found the following message from a thread I recalled, and there is no post-report followup in the archived thread for that month nor the next; that message is the first link below, the second link below is a message where I give a link to another message thread "like" that one, and the third link below is to the thread:
http://archive.midrange.com/midrange-l/201211/msg00484.html
http://archive.midrange.com/midrange-l/201211/msg00468.html
http://archive.midrange.com/midrange-l/201211/threads.html#00415

Avoiding use of the DDS LF on the FROM clause of a query should prevent any such issues as alluded in the aforementioned; use a SQL VIEW instead, or reference the TABLE with the necessary selection in the query instead of the VIEW.

If the CR only is interested in say 5 fields, how can we code this
logical or to make a new one that will only pass less,

When no field-name specifications are listed under the Record definition, then the Record Format for the Logical File is the same as the RcdFmt of the Physical File named\specified on the PFILE(); i.e. the LF /shares/ the record format of the PF. By specifying only a subset of the field names from the PF, then only those field names will be available from that LF, and thus only those columns can be referenced by the program [or query request] that opens the LF.

is that a performance issue would you say?

Depends on what "that" intends to imply:
- Reducing the number of fields can be a boon for performance because less data can be /carried/ [per row] between the database and the program. Of course a query request that would select only those same or fewer fields gets the same advantage, while not also limiting what fields a non-query open or other query requests can access via the LF which leaves all of the columns included.
- Creating a new keyed access path could have a negative impact on overall performance for updates, if the new AccPth must be maintained
- For retrieval purposes and for any /statistics/ provided to the SQL, the impact on performance for read activity could be improved with a new maintained keyed AccPth with a new LF.

I have also added a temporary filter to this logical

R OEORHDRR PFILE(OEORHDOH)
K OHORDT R
K OHSHTC R
K OHORDD R DESCEND
O OHORDD COMP(LT 20130101) *** MY ADD
O OHSHTC COMP(EQ ' ')

The logical expression [as would be coded in SQL] that is the equivalent to the above keyed accpth selection, is:
NOT ( (OHORDD < 20130101) OR (OHSHTC = ' ') )

That is the equivalent of the expression:
(OHORDD >= 20130101) AND (OHSHTC <> ' ')

Per the added ["*** MY ADD"] omit logic, the number of rows should logically either stay the same or decrease; i.e. the selected rows should be limited to only those which represent a [8 digit form of a] date value since the beginning of the year rather than returning rows from all years\dates.

If too many records are returned [e.g. perhaps seemingly all, but unverified as such], I wonder if perhaps a variant of the LF had been created and used whereby the logical AND was effected as the operator instead of the OR operator, per having replaced the second O [Omit designation] with a blank. That would have effected selection logic of "(OHORDD>=20130101) OR (OHSHTC<>'')" which could greatly expand the number of selected rows; or per my reference to past issues reporting a concern of rows not matching the s/o specifications. FWiW I have comments including a link to and a snippet of the docs for slt/omt specification logic at the following link:
http://archive.midrange.com/rpg400-l/201202/msg00453.html


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.