How To Use Loops
This topic explains the concept of the Loop used in reports.
When you want to pull information from multiple records in
the database, the Loop is used to scan through the records
according to conditions that you set.
Perhaps you want to list all new debtors for a particular client,
or to list all transactions of a certain type or all contacts in a
certain date range for a particular operator. Whenever you need
to scan through the records in your database to retrieve information
that fits your criteria, you would use a loop.
The basic structure of the Loop is as follows.
Loop Structure
@{dialog_code}
{code for data to retrieve}
@{dialog_code}
This basic structure is always used to define the Loop. It begins
and ends with the code for the type of record you need to scan
for information to include in your report. Each dialog in Collect!
has its own code. For instance, @de means the
Debtor record and all information that is displayed on the
Debtor form. @cl means the Client record
and all information that is displayed on the Client form.
So, in general, @{dialog_code} indicates the
code for the type of record that you are going to "loop through" in
your report.
Next, {code for data to retrieve} indicates the
actual field data that you are going to display in your report.
Then, the Loop is closed with the same code that it started with.
This means that all loops must begin and end with an identical
dialog_code.
Example:
Name | File Number | Owing |
@de
@de.na<20> @de.fi<10> @de.ow<13.2>
@de
| | |
This loop will scan all Debtor records and print the Debtor
Name, Debtor File Number and Amount Owing.
Sample Output: | | |
Name | File Number | Owing |
Balford, Allen | 1287 | $75.00 |
Barclay, Tricia | 1423 | $5,000.00 |
Beauchamp, Kim | 1409 | $2,448.00 |
Bernardo, Richard | 1090 | $760.48 |
Bernisky, Sergei | 1091 | $150.00 |
Boag, Peter | 1425 | $2,590.00 |
Booth, Michelle | 4350 | $1,095.77 |
Bradley, William Ryan | 4339 | $3,488.45 |
This example shows a simple loop. You may add
conditions to define the criteria for scanning records.
Please refer to help topics listed below for further
examples.
- How To Use Lists And Loops
- How To Use Where And If Conditions
Troubleshooting Loops
These are few error messages that you might see when you
begin to create loops in your reports.
No End Of Loop Marker Found
Failure to end the Loop with an identical dialog_code will result
in the following error message displayed in your report output.
"No end of loop marker found matching @de. You must end a loop
with the same code you started it with. If you loop with @de to go
through debtor information you need to close your loop by again
using @de. All the field codes called between the @de's will be
printed once per debtor record found."
If you see this error, go back into your report and make sure you
have closed your Loop properly.
System Db Errors
When you use a Loop, Collect! has to be able to look at the
correct type of record for the information. This means you have
to choose the correct record type to "Start On" when you create
your report definition. Also, it is necessary to ask for information
correctly within the Loop itself. If Collect! cannot find the information
it may report Db Error -19 - Record Not Legal Member of Set or
Db Error - 8 - Set Has No Current Owner. These mean that you
are trying to call for information when you are on the wrong type
of record. Please refer to How To Print A List of Records for
examples of correctly constructed loops.
See Also
- Report Sample to view sample reports and letters
- Report Topics Index for a list of all report and letter topics
|
Was this page helpful? Do you have any comments on this document? Can we make it better? If so how may we improve this page.
Please click this link to send us your comments: helpinfo@collect.org