Related Information Examples & Tutorials
Not sure what new and improved features are in the latest software? Just contact us to find out!
“ Since we started using Collect!, my practice has grown. I bought Collect! to deal with growth; I've been surprised how it accommodates us, better and better every day. ” Ben H.

Frequently Asked Questions - Printing

Company Details On Letters

Q - When printing letters, why is it printing with Comtech's company information?

A - Check the company details to make sure that you have replaced the shipping sample default information with your own company details. The setup screen is located via the menu path \System\ Preferences\ Company Details.

Top of page.

Client Name On Debtor Letters

Q - When I print a letter to a debtor, sometimes the wrong client name is printed on the letter. Why, and how can I fix that?

A - The code you are using in the letter is probably for the client name. If any client name at all is still sitting in cache memory, the system will retrieve that piece of data instead of the SPECIFIC client name you wanted which is associated with the debtor account. The printable field code you want to replace with in your letter is

Top of page.

Operator Name Printing

Q - I want to print the name of the operator assigned to the account in a letter?

A - Try using the following codes.

TITLE: @op.ti

Q - I want to print a batch of letters that has my Operator Name and Title information on them, not the information of the Operator who is assigned to the account. How do I change the letter without having to move the accounts to another Operator's desk?

A - Navigate to your letter "Print\Customized Printing\ Edit Report Templates" and find your letter in the list. First, make a copy of your letter so you can retrain it in its original form. Highlight your target letter by arrowing down to it, click Edit, then Copy. Paste it in place by clicking Edit then Paste. Rename one of them to be something different, perhaps indicating and 'orig' or dated version. This protects you with rollback ability in case any code is removed in your revision procession. If you use a hyphen or underscore to create the report name add-on, it is important not to leave spaces between the connector character and the words to prevent there being conflict with the system finding a unique letter name in batch processes.

Select the version of the letter that you are going to modify by double clicking or pressing Enter. Click into the body of the letter. In the upper part of the document body, anywhere under where you see the defining of letter margins (i.e. any of @LM, @RM, @TM, @BM) or other variable declarations (i.e. @varSomething* = "") and insert these lines in a consecutive group:

@tvarOPNA* = ""

@op no total where ( = @mm.yasoao) max = 1

@tvarOPNA =

@tvarOPTI = @op.ti


The above loads the Operator information from your profile when you signed in. To express your name and title at the bottom of the letter, use the variable names from above that have stored your information to override the desk operator id information, as follows:




Top of page.

It Keeps Printing The Wrong Report

Q - Every time I try to run a certain letter/report in batch or individually, I get the wrong output. The document I want has been modified and I'm told is correct. Why do I keep getting the wrong output?

A - Because you have two or more versions of the letter or report in your Print Menu that are named either the exact same or your rename of your old/original isn't sufficiently distinguished from the version you now want to use.

Example: "Letter 1" and "Letter 1 - old"

In the above, if you are trying to print Letter 1 and keep getting output suggesting it is outputting "Letter 1 - old", then the system is finding the hyphenated "old" version first. It will always output the version it finds first that meets the requested document for output.

To avoid naming conflicts, do not use spaces on either side of hyphens or underscores being used to designate "old", "bad" or dated versions (i.e. "Letter 1_06092015").

You may find it helpful in terms of recollection and organization to establish a renaming convention when you take reports out of usage but are saving the previous, unmodified original for rollback / audit trail purposes.

The dated version is the old one and when the working reminds when the version was modified and renamed.

Top of page.

Debtor Cosigner Loop

Q - How can I include a debtor cosigner name in my letter?

A - In the report body of your letter, you will have to include a debtor cosigner loop. The example given will print the name of the first cosigner listed for your debtor. Your debtor name/address area in the letter would include the cosigner loop exactly as follows. The Cosigner name will appear directly below the primary Debtor's name.<

@de.cos no total where ( = Cosigner ) max = 1<

@de.cos< @de.a1<<,< @de.zi<

Top of page.

Print Date For Today And 1 Week From Now

Q - If I wish to print a letter that has the date at the top and then a date for a summons which is seven days from today's date in the body of the document. What codes do I use?

A - The date math is determined with @d+7 which says take today's date in MM/DD/YYYY format and add 7 calendar days to it.

It is best to do date math in a report by defining a variable to hold that information, then using the variable name in the body of your document.

Click "Print\Customized Printing\ Edit Report Templates" and find your report or letter in the Print Menu (entitled "Report Definitions") or click New to start a fresh report or letter.

In the top area of your letter where margins are being set or other variables are being declared, assign a Date type variable name and store your preferred output format with a value that will absolutely be outside of any date that could naturally occur in your document (see @varSummDate!" below). The exclamation mark defines the type of variable as "date". The line below defines the date math equation that will create the date you want to express in your document body.

@varSummDate! = 01/01/1900
@varSummDate = @d+7

In the body of the document, the line where it is to appear, you don't do the date math, just call the variable that will already be all set up to do it for you concisely. It would look something like this:

"You must respond by or before @varSummDate<...."

Top of page.

See Also

- How To Use Letter Templates
- How To Calculate Date Ranges In Reports And Letters
- How To Use Variables

Top of page.

Printer Problems

Q - (a) Why am I getting garbage character output like hashtags, happy faces, exclamation marks and other nonsense in my documents when I print?

Q - (b) My printed documents have spots where letter characters in words are crowded too close together or are printing almost on top of each other. It isn't always the same characters and it isn't always in the same place in the document.

A (a) & (b) - The following steps will systematically eliminate possible causes and lead to corrected output.

1. Confirm that you are printing from Collect! with "Print via device context" selected in your menu path "Print\Settings\Report and Printer Setup".

2. Click Printable Information button on the same popup menu from above and then click the Rebuild button which you will see in the lower right beside Help and OK. This will re-index the printable field codes.

3. Make sure that the first line in the report/letter code is a printer reset command to ensure there are no printer settings being held onto by the printer's buffer memory from previous print jobs. The reset command should come before any other margin or font commands in your document.




In the above, the two character reset command is "@*".

4. Retry your print job.

5. If the problem is not resolved, you need to download current printer drivers from the website of your printer manufacturer. The character crowding/overlapping is a common occurrence with users operating in laserjet PCL 5. Updating your PC's printer drivers to PCL 6 (or whatever is their current version above 5) should correct your problem.

Q (c) - The 1st report prints properly, but the second printout of the same report prints in a different point size or font style. How do I make it print consistently for all pages in the output?

A (c) - Insert the printer reset command as the 1st line of code in your report as directed in step 3 in the above question. The code in your document that corrects this problem is: @*

Top of page.

Wrong Data Printing

Q - Why do I get the wrong information being output into the printable field insert points in my document?

A - If you feel certain that your field name and document logic is correct, re-index your Printable Field Codes by clicking " Print\Settings\ Printable Information" and click the Rebuild button.

If the problem is not resolved, it may be that you have any of;

  • A duplicate document name in your Print Menu. Click into "Print\ Customize Printing\ Edit Report Templates" and scroll through looking for the same letter or report name OR one which will be perceived as the same name because there are spaces on either side of a hyphen. i.e. "Letter 1 - old" if it appears higher to the top in your Print Menu list of documents will be found first by a print job when "Letter 1" is the modified version you are wanting to use. Remove the spaces so your old one is called "Letter 1-old" or "xLetter 1-old", or "Letter1_old_06092015" if you want to keep a dated record of when changes are made (recommended method).

  • A typo in a printable field code. Verify and correct.

  • Variable not correctly defined or initialized in the letter or report so that it is either not functioning correctly or holding onto the the last value it was filled with. See the Help topic "How to Use Variables" or call Technical Services to assist with troubleshooting. Timed Services Billing applies to troubleshooting client customizations.

  • The report or letter needs loop logic that isn't present. See the Help topic " How To Use Conditionals In Reports" as well as the related topics at the bottom of this webpage.

  • You have loop logic that is not inserted in the right spot within the document body to get the result you are seeking. See the Help topic "How To Use Conditionals In Reports" as well as the related topics at the bottom of this webpage.

  • You have incorrectly looped into a file or sub-file that is not the one which contains the data field you are trying to use. See the Help topic "How To Use Conditionals In Reports" as well as the related topics at the bottom of this webpage. If you'd like one of our Technicians to assist you at a Timed Services Billable Rate for client created reports or letters, export a copy of the report you are having issues with along with how it currently is outputting on your system. Email both to with a request to find the issue and correct it, acknowledging that this may be a timed service. Your Ticket will be queued and responded to with pricing, if applicable. At any time, if you'd like us to create a custom report or letter for you so that it works to your specifications right away, email your request to with a mock-up of what you wish the output to look like and all specifications applicable to the report creation.

  • If you are an experienced Report Writer user and you are certain that your document fields and logic are correct, the last step to try prior to contacting Technical Services is Rebuilding Access Rights.

    This step requires that all users be out of the system for a few minutes. You will need to use a login that has a User Level 99.

    When all users are out of the system, start a Collect! session and login with the user level 99 credentials. Stop at the "Welcome" screen and do not yet click "Start". Adjust your "Database Access" in the lower left of the window to be "Exclusive" instead of "Shared", then click "Start". While you are doing this, no one can go into the system. Off-hours (i.e. end of day or very early in the morning) is the best time to do this step.

    From the Main Menu, click "System\ Rights\Access Rights" and then click "Rebuild" in the status bar area of the active window.

    When it completes, retry printing your document. If the problem persists, contact Technical Services at 250-391-0466. There may be a Timed Services Billable for the call to troubleshoot a client created report or letter

  • .

    Top of page.

    Blank Report Printing

    Q - Why is my Receivables report blank?

    A - The Receivables and Payables reports source the Invoice/ Statements that you run for the data they produce.

    If you run a regular monthly remittance period that is from the 1st of the calendar collection month to the last day of the calendar collection month, then your Statements for that billing period will be dated for the 1st day of the NEXT calendar month.

    Your report may be empty because of a moseyed the date, which should reflect the 1st of the current month in BOTH the "From" and "To" dates. The only time this would not be true is if you are running statements more frequently and your Statement and Check dates are set on the day after your run period range.

    Example: If you run weekly Statements and Checks and have Statements dated the 1st, 8th, 15th, and 22ND in the January calendar month and also Feb 1st for your January monthend, your Receivable report date range to get your January data would be Jan 2nd, 2014 to Feb 1, 2014. The reason it doesn't start on Jan 1st, 2014 is because that is the date of the December 2013 Statements.

    Top of page.

    Printed Page Doesn't Eject

    Q - (a) We are printing reports on an HP Laserjet. After printing from the software, we must take the printer offline and press the form feed button before it will actually output the report. Why?

    Q - (b) My report letters aren't page-breaking between debtors they way I expected. Why?

    A (a) and (b) - The very last line in your report body should be a two character "Form Feed" printer control code that looks like this: @f

    It is lower case sensitive and it must be the very last line in the report.

    To modify your report, click " Print\ Customize Printing\ Edit Report Templates". Find your report in the Report Definitions list and select it. Once it opens up into the report body, click your mouse anywhere into the report and scroll down to the bottom. At the end of the last line you see, insert @f and press your Enter key. Click OK to save. Retry your report or letter. It should have no page break problems any further.

    Top of page.

    Detecting Network Printers

    Q - Is there any way to find out what printers are available for printing on my network?

    A - Collect! reads your Windows Printer setups when it loads. If you have a printer on your network that hasn't been configured for your use in your Collect! session but you CAN print to it from other applications, then click "Print\Settings\ Report and Printer Setup". Then clock "Printer Setup" from the button bank on the right hand side of the screen. You will need to know your Printer's name and network path to correctly define it. You will also need to define the Type. Most common will be Laser, followed by Bubble Jet.

    Once you have defined the printer, then the next time you attempt to print a document, you should be able to select the new printer from your list of available printers inside Collect!. See your inhouse Systems Administrator if this didn't work for you. The likely reason is correct identification of the path and the correct printer name.

    Top of page.

    Printing Totals

    Q - Is it possible to get totals printed in my custom reports?

    A - Yes. Before attempting any report modifications, it is ALWAYS recommended to make a copy of your original, untouched report so that you have rollback ability.

    tip.gif Rename your untouched original to be different, i.e. "ReportName-orig". Do not allow spaces on either side of the hyphen as your report name will not viewed as unique by the Printing program. This is the leading cause of document output not reflecting a new, modified formats.

    Click " Print\ Customize Printing\ Edit Report Templates". Use your arrow keys to navigate to the report you want to modify and highlight it.

    Click Edit, then Copy, then acknowledge the popup that advises 1 report saved to the clipboard. Click Edit again, and without moving your mouse from where it is, click Paste. This will create the copy in place, putting it below the original.

    You now have two reports with the same name. Rename the first one to be different so that the Print program cannot confuse them as being the same document, i.e. rename "Report" to be "Report-orig" or "Report_06092015".

    Open up your copy that you will modify and click into the body. Look for the logic loop that is bringing in the data and creating the output lists in your report. Example: No Total WHERE ( @tr.pda = .. ) WHERE ( = x )

    In the above, the debtor transactions are being looped, told not to total and is utilizing a user prompted transaction date range with a logic condition that only transactions of a transaction type " Payment" are of interest.

    1. Comment out the line so that you have an exact replica of what it was before any change was made. Two "slash" characters is what signifies a comment only line in Report Writer.

    // No Total WHERE ( @tr.pda = .. ) WHERE ( = x )

    2. Copy the same and paste it immediately below the original. Delete out the words "No Total".

    // No Total WHERE ( @tr.pda = .. ) WHERE ( = x ) WHERE ( @tr.pda = .. ) WHERE ( = x )

    3. Reprint your report and view the changes to the output.

    With the "No Totals" designation removed from the loop, the report should have automatically tallied up any numeric and financial fields, providing a sum total for each list of figures.

    If this is your desired result, then this will be your remedy.

    Higher programming solutions exist to use variables to create and store totals, often in conjunction with other conditional logic to obtain results. See Report Writer Topics in the Help pages and particularly, the link shown below, "How To Use Static Variables".

    Top of page.

    See Also

    - How To Use Static Variables
    - Report Writer Topics

    Top of page.

    Commission And Totals Over Date Ranges

    Q - I need a report to print commission and tax totals over a given date span. How can I do this?

    A - Here is the basic layout:

    Name: Commission and Taxes by Date Range
    Start on: Transactions
    Report Body Title Bar

    // This line prompts the user for the date range
    @tr WHERE (@tr.pd = ?) max = 1


    // The next 2 lines output report title and
    // the date range the report covers
    Commission Amounts and Taxes by Date Range
    From:<10> To<10>

    // The next line is the header records for the report table
    FILE #      PMT DT           $ COMM     &nbs p;   $ TAX
    // // The next 3 lines are the transaction loop that
    // specifies payments only & outputs the fields.
    // because there we are not using the "No Totals"
    // designation, this will auto-calculate and
    // output totals for anything numeric or financial.
    // That it also tries to put a fixed date total under
    // the payment date column on the final page is why
    // more often than not, "No Total" is used and
    // calculated totals are stored in variables.
    // This example doesn't include a fixed length financial
    // field designators as a live report would do. See Help page

    @tr where ( = x ) @tr.pd @tr.ta


    // End Snippet

    The output looks like this:

    Commission Amounts and Taxes by Date Range
    From: 03/18/2013 To 03/31/2013

    FILE #       PMT DT           $ COMM    &nbs p;    $ TAX
    4424       03/19/2013
    348599     03/27/2013        $11.79       &n bsp; $1.53
    4744       03/28/2013     $2,999.98
    349036     03/28/2013        $25.00       &n bsp; $3.25
    349036     03/28/2013       $100.00        $ 13.00
    349036     03/28/2013        $25.00
    4761       03/28/2013        $12.50     &nbs p;   $1.63
    ---------- ----------- ------------- ------------

               03/28/2013     $3,174.27         $19.41

    Top of page.

    Group Totals In Reports

    Q - I need a way to loop through the members of a group and total their balance owing. All members of the group have the same debtor name. These are grouped medical bills. I want to print a letter to the debtor with a total balance owing.

    A - There is a Total Owing field in the Matching Accounts window for group members. You can call this field in your report by using the Printable Field Code @ma.ow.

    Q - I need a way to loop through the members of a group and total the balance owing for all accounts with a LEG legal status.

    A - This solution requires categorizing of accounts and isolating items of interest for further treatment. Order of operations is important for your report logic to run optimally and not need to perform redundant looping or extensive searching through large volumes of information.

    Order of operations:

    1. Get grouped accounts.
    2. Get LEG status accounts within the groups.
    3. Add up balances owing ONLY on accounts with status LEG within the same group.
      1. Since it is a calculated total we will need to obtain, we need to define a variable to hold this information when the report code starts.

        The following is sample report body that would perform the functions stipulated above.

        // Declare a Total Variable (tvar) of a monetary type.
        // It is the dollar sign after the name chosen that
        // makes it a currency variable. Initialize this
        // variable by setting it equal to zero to begin
        // with. This makes sure the variable resets
        // after each time it is used for each output
        // record in the report.
        @tvarBalance$ = 0.00

        // Loop into the debtor file and use conditional logic
        // to separate out the segment of accounts of interest.
        // The first Where clause says it must be in a group.
        // The second Where clause gives a 1 to 999999 range that
        // can be a group member # inside a group.
        // The last Where clause says the status must be LEG
        @de no total where ( = where ( = 1 .. 999999) where (@de.sta = LEG)

        // The next line begins the total of the LEG balances owing.
        // As it finds them, it takes the balance of the first LEG and
        // puts it into the variable. The next LEG is found and that
        // balance is added to the first LEG balance. Now we have a
        // Total balance for 2 of the LEG in the group. It finds a
        // third and adds that to the growing cumulative balance of
        // LEG files within the group until there are no more to add in.
        // When there are no more meeting the criteria to be added
        // together, it outputs the sum total of all balances it
        // added up for LEG in the single group, then moves on to the
        // next grouped debtor in the database.
        @tvarBalance = @(tvarBalance+de.ow)

        // Now close the loop in the line below. Loop closing
        // is like going down a nested corridor of doors. For
        // every door that you pass through on your journey,
        // you must close behind you as you leave.

        // End Snippet

        Top of page.

        Reassign Contacts For Group Debtors

        Q - Is there a way to make sure that after I group accounts together, all of the accounts in a particular group will be worked by the same operator?

        A - Collect! ships with a report called "Reassign Contacts for Group Debtors". This report will find only debtors that are in established groups and perform a writeback to the Contact Collector ID, modifying it to be the same as whatever Operator ID is on the Group Member 1 account. In effect making the first account in the group the "Main" account of the group.

        Only "In Progress" Contacts are redirected to the collector on the "Main" group member #1 account.

        warning.gif WARNING: This report does NOT automatically cascade the group member 1 collector ID to the rest of the group. It is only reassigning In Progress contacts to a single WIP.

        Top of page.

        Printing All Transactions

        Q - I need a report to print all transactions over the last month and print debtor summary information for all debtors that have had transactions over that date range. How can I do this?

        A - You can create a report to generate into an Excel worksheet that you can manipulate as ad hoc requirements dictate.

        1. Click Browse, then Transactions, then click the Find or your F6 key to enter the Edit Search Criteria popup.

        2. Input your date range into #Posted Date From/To fields.

        3. If you are wanting only true payment transactions (and no costs, fees, other, misc, adjustments), then click Search to begin tagging records in the date range requested. This will output everything, including 194/195/196/197 transactions.

        If you want true payments only, Search and select Financial Type as your next search criteria and input your choice as Payment in the From and To columns, and click Search.

        4. Say Yes to the popup asking if you want to Tag all matching records.

        5. Click Print, then Quick Print. Select Spreadsheet as your output and then click the Print button in the lower right corner.

        6. When prompted by a popup to answer if you want all Details, select Yes so that you may see the full complement of information available. Run it again saying No to the same question, comparing output for what is preferable for your purposes.

        Once you have the data in Excel, you can sort and manipulate as you require.

        Top of page.

        Settlement Amount

        Q - I have to send settlement letters. I want my letter to state the Balance Owing and then I want it to give the pre-approved Settlement Amount that our client authorized us to offer. If I can offer 75% of the balance owing, how do I get a letter to put in the right figure for each different account I want to send this letter to?

        A - Define a variable in your letter to hold the calculated figure, then use that variable in your letter body where you want the settlement amount to be shown.


        @tvarSIF$ = 0.00

        @tvarSIF = @de.ow*0.75

        The actual math is being done in the variable itself. The amount used to base the blanket settlement offer is @de.ow, the asterisk is the multiplication sign in Report Writer. The percentage of the owing we are interested in offering is expressed in decimal form, as 0.75

        In the body of the report, your letter verbiage would be set to look something like this:

        //Start Snippet
        We are writing to offer you an opportunity to settle your current balance owing for a one time discounted amount of @tvarSIF<, provided that you contact our office by or before
        the expiry of 10 days from the date of this letter. //End Snippet

        When you actually print the letter, if the debtor's owing was $1,000.00, you will see $750.00 expressed in the @tvarSIF position.

        Top of page.

        Debtor Status Description

        Q - When I include the Debtor Status in my reports, how can I print the description instead of the three letter code?

        A - Use the following loop through the Debtor Status list to retrieve the description. This loop would not be inserted into the report body until you were ready to output the status description. This means output all your debtor fields first, then insert this loop:

        @ds NO TOTAL WHERE ( = @de.sta ) MAX = 1<


        Example: In the following, a number of debtor fields are being output with the status description intended to be last field in the line. After we write the second last field, last worked date, then the Debtor Status loop is inserted, with the output description line directed to print by appearing by itself after the system has gone into the Debtor Status file to retrieve the requested description. Then the Debtor Status loop is closed as nothing further is required of it.

        The first loop is the following snippet is output after a report has already looped into @de (Debtor) file. Only the abbreviated status code you see on the debtor screen is actually saved in the debtor file. It will be that code that is used to match to the same in the Debtor Status file, and from there, your report can retrieve the status description field of interest for your report.

        // Start Snippet
        // This is an example of a loop to output Status Description instead
        // of Status Code
        // This example doesn't include a fixed length text
        // field designators as a live report would do for the field.

        @nolinefeed @de.ty @de.ow @de.wo

        @ds NO TOTAL WHERE ( = @de.sta ) MAX = 1<



        // End Snippet

        Top of page.

        Prompt For Range Of Operators

        Q - I know that reports can ask me From and To in relation to dates, but how do I get a report to ask a From and To question in relation to Operators.

        A - Prompting for a text field gives you only one choice. The following prompt logic will allow you to enter the code to be used:

        @tvarOpId* = ""

        @op no total where ( = ?) max = 1

        @tvarOpId =


        You would then use the variable in your letter or report logic to obtain information that was conditional on matching the entered ID from your initial prompt.


        // Start Snippet
        @co No Total WHERE ( @co.dd < @d ) WHERE ( @co.dda < 01/01/1960 ) WHERE ( = @tvarOpId )


        // End Snippet

        The above is a Contact loop is looking for Priors, accounts which have past Due dates and no Done dates for the Operator ID that you input at the start of the report.

        Q - I need this for Contact ORIGINATOR, e.g. @co.or where (@co.or = ?), but I need it ask for a starting operator and finishing operator.

        A - Use variables in a range clause:

        // Start Snippet
        @co where (@co.or = @varFrom .. @varTo)


        // End Snippet

        This should solve the problem. This loop would need to be imbedded in your report code early enough in the logic to isolate the range you are looking to limit qualifying records for AND you would need to properly declare your variables, the @varFrom and @varTo, in the upper portion of your report body.


        Set up the following in a test report by clicking " Print\Customized Printing\ Edit Report Templates".

        Name: Contact Originator
        Start On: Contacts
        // Report Body, Start Snippet @*

        @varFrom* = ""

        @varTo* = ""

        @varFrom* = ? Enter an Operator to start from

        @varTo* = ? Enter an Operator to finish with

        @co where (@co.or = @varFrom .. @varTo)

        @co.dd< @co.ty< @co.or<

        // End Snippet

        To see how this works, click Browse, then Contacts. Once you are on the list, click Edit, then Select All or Ctrl+A to quick key Select All. Click Print, Reports and Letters, then select your test report. When the Print window pops up, select File and Open as your designated output criteria and give your file a path and name with a file extension of CSV. Then click the Print button. The next popup asks if you want to run this report on All or One. This is a question of perspective: Whenever you are outputting to File from a Tagged List, you want to output to ONE, being One List. Otherwise, you will get a version of the report for every item in the list....if there are 12 records in your tagged list, you will get 12 copies of the report looped out to csv format.

        Your output will contain contacts where the originator of the contact event has an Operator ID code within the alphabetic range of th first and last IDs you entered at the beginning of the report.

        Top of page.

        User Prompts In Custom Reports

        Q - Is there any way that we can make a report or letter prompt us for entry of a specific piece of criteria to use or a range of entries that are to be used in reports where the criteria we need changes?

        A - Yes. In any loop, you can add a WHERE clause that has a user prompt indicator on it. The correct syntax is:

        WHERE (@{code} = ?)

        The question mark causes the program to prompt for the field information before building the Where clause.

        Example: You need a report that first asks you to identify the limiting variable, i.e. debtor status code, then builds a report output for only the accounts that meet the conditional criteria entered.

        // Start Snippet
        @de WHERE (@de.sta = ?) @de.ow


        // End Snippet

        The question mark is what creates the user prompt popup.

        When you use the WHERE ? with a date, you are able to select a date range.


        // Start Snippet
        @de WHERE ( = ?) @de.op @de.ow


        //End Snippet

        This report will prompt to print debtors listed in a From/To range.

        Top of page.

        Dollar Signs Printing In Reports

        Q - How can I get the dollar sign to show up when I print currency amounts in my reports and letters.

        A - There are 2 ways to accomplish this.

        1. The global system solution is to set the " Multi currency" switch ON by checking the box in the setting screen found by the menu path "System\ Preferences\ Company Details". The Multi currency switch is in the Detail Tab. This setting completely removes the need to enter physical dollar signs preceding a currency field or variable. Having a system standard is preferable to the user error margin introduced if for every report and letter that will be entered into the system, somebody needs to remember to make sure that they have typed actual dollar signs in front of every single money related field or variable.

        2. The "Multi currency" setting remains unchecked, indicating that it is OFF, and you will need to make sure you type a physical dollar sign in front of all currency fields and variables in order to get the dollar sign to express in the output.

        Example: $@de.ow<

        tip.gif If you see that your letter or report is evidencing double dollar signs, i.e. $$1,125.89. This would suggest that BOTH your Multi currency switch in Company Details is "On" PLUS you have typed a physical dollar sign in front of the field you are seeing two dollar signs. If you intend to let the system look after dollar signs, remedy is remove the typed dollar sign from the report where you see 2 of them.

        tip.gif If you have the "Multi currency" switch ON, it has one default internal setting which cannot be modified. If your report output is to Spreadsheet, all dollar signs and commas will be stripped off so you will retain the ability to sort and auto-sum in Excel without having to reformat the figure columns.

        Top of page.

        First Name Only Or Last Name Only In Reports

        Q - Can I separate first and last debtor names and only print the first name in my report?

        A - Yes. This is done by separating the debtor's name in to component parts by using specific field designators with the printable field name.

        Example:<fn> prints first name only.<mns> prints first and middle name OR first and middle
        initial only. Collect! will read anything to the right of the comma and up to the first space as the first name and anything beyond the space after the first name as middle name(s) or initial(s).<ln> prints last name only.

        Top of page.

        Sort Order In Reports

        Q - How can I get transactions to print in chronological order?

        A - In order to produce output in a sorted order, your output data must contain an indexed field. What kinds and which specific fields in Collect! are indexed are best indicated in your Edit Search Criteria popup windows you can access while in any Browse list by clicking the Find button. Those fields at the top of every list that are prefixed with a "#" sign are indexed fields. Only indexed fields can be sorted in Collect! directly and on demand in Report Writer.

        Examples: Output chronologically by posted date

        // Start Snippet
        @tr no total orderby @tr.pd

        @tr.pd @tr.pda @tr.tu @tr.di


        // End Snippet

        You can add further designation for the sort order to be ascending or descending.

        // Start Snippet
        @tr no total orderby @tr.pd desc

        @tr.pd @tr.pda @tr.tu @tr.di


        // End Snippet

        Top of page.


        // Start Snippet
        @tr no total orderby @tr.pd asc

        @tr.pd @tr.pda @tr.tu @tr.di


        // End Snippet

        Top of page.

        Word Wrapping In The Report Writer

        Q - How can I get my letters to better fill the page? Sometimes the lines seem too long and sometimes too short. I have insert fields in the body of my letter.

        A - If your letter is constructed with the < sign at the end of insert fields, this means what fills that place in the letter will be variable, meaning if the content is fewer characters in length, your line will be shorter. If your data being inserted is longer on some files, that will make some lines in your letter seem to get close if not actually run off the page.

        The best solution for non-static text portions of your letters is to use the combination of WRAP and linefeed commands.


        // Start Snippet
        @no linefeed

        This is a very important notice to advise that our client,<,
        has placed your account in our office for collection. You currently owe
        @de.ow< and< requires that this amount be paid to our office

        right away.

        @no linefeed

        Visit our website at @cd.a3< to review your online payment options
        or phone me at< to make immediate arrangements. We need to
        receive your payment or speak with you before the expiry of 10 days
        from the date of this letter.




        // End Snippet

        To enter these lines in Report Writer, you would not need to enter in any hard returns at the end of the line. You could keep typing text until Report Writer wrapped the line for you.

        What will happen when the report is generated, is that depending on the length of the data fields being inserted, primarily the length of the client name, the letter will auto-wrap at the correct line length as determined by the inserted data and your other letter formatting options (left/right margins, font type and point size).

        Required syntax is that any "@linefeed" command has a physical blank line immediately after it. The "@no linefeed" must always start a paragraph of text that is going to fall within a WRAP command. WRAP is turned on with a (1) and a zero (0) to indicate when the wrapping is to be turned off from that point forward in the letter body.

        Adding more lines between the Regarding line and the letter body, or more lines between the last paragraph and your closing "Sincerely", or adding more lines between your closing "Sincerely" and your signature information can improve overall aesthetic appeal of your letter.

        Adding your logo, use of different font point size for your company information, and use of color images can all be employed to add that extra professional touch to your correspondence.

        tip.gif If you are using a fixed font, your page width is 80 characters, not including left/right margins,
        If you are using non-fixed length fonts (such as New Times Roman), your horizontal report width can be 132 characters not including left/right margins.

        Top of page.

        Report Writer 132 Character Limit

        Q - Whenever I try to type past 132 characters in the report writer, whatever I type is deleted. Why?

        A - 132 characters is the report width limit. Anything typed in beyond this length will be deleted. Use the @WRAP command in conjunction with the linefeed direction as described above to make sure you are not losing content and that your lines will output in a visually appealing form.

        Top of page.

        Letters Templates From Pure Text Editors

        Q - I have some letters that I created in a pure text editor program and I would like to use them as letters in Collect! Is there a way I can use them without having to retype all of the letters?

        A - Yes. The following are the steps to use if you use a pure text editor such as Wordpad or UltraEdit.

        1. Click " Print\ Customize Printing\ Edit Report Templates" and click the New button to create a new letter or report. Choose an appropriate "Start On" for your report (i.e. if you will be using this from a Browse Debtor list, use Start On "Debtors"). Click into the body of the letter and type "Start Here" as your self instruction to use when this template is exported to your text editor program. Click OK to close and Save the created template.

        2. Export this letter to a your desktop or wherever you can easily navigate to by clicking "Print\Customize Printing\Export Report Template". Select the template you made in step 1 and save it with a file extension of ".rpt".

        3. Open your .rpt template in Notepad or UltraEdit (or the pure text editor of your choice). At the top of the file you will see several lines of information that Collect! uses internally for printing.

        warning.gif WARNING: Do NOT alter OR remove the system generated lines at the top of the document. These are used by your program for printing.

        Take note that where you typed "Start Here" as this is your positioning mark after you've gone and retrieved the text you want to copy in from your usual word processing program.

        4. Go to your word processing program that has the letter body content that you want to copy into Collect!, and open the document.

        5. Once it is open, create a pure text version of it by clicking "Save As", then name your document. It is important to select a file format of Plain Text from the "Save as type" drop-down menu and name your letter body copy with a ".txt" file extension. This allows a word processor program like Word to strip off all the font and graphics, allowing a text version compatible with Collect! to be created.

        6. Open this .txt file in a "new" Notepad or UltraEdit window.

        7. Select the content of this .txt file that you want to add to the .rpt file. Copy the text of interest from the .txt file to the .rpt file and paste it where you originally typed "Start Here".

        8. You can shorten lines if necessary or add/remove sentences as needed.

        9. Save the .rpt file so that it is ready to import back into Collect!.

        10. In Collect!, follow the menu path "Print\Customized Printing\ Import Report Template".

        11. Navigate to where you saved the newly modified .rpt file and select it. It will import and appear at the bottom of your Print Menu.

        12. In Collect!, click "Print\Customized Printing\ Edit Report Templates". As you now have two letters with the same name; you MUST delete out the original placeholder that is blank besides where you typed "Start Here". Retain the newly imported version that has the text you copied in from your word processor.

        Run your newly created report or letter to verify that it functions as expected. Since you imported pure text only, you will need to do any stylizing ( bold, underline, center, fancy fonts, images, logos) in Collect!. The text saving process strips out all formatting from the word processor side.

        Top of page.

        Printing Forms

        Q - I have a pre-printed form that I would have to print out to. How do I line up my Collect! report with the pre-printed form?

        A - For success when printing onto forms, try the following tips:

        1. Use a fixed font rather than proportional.

        2. Experiment with placing when you build your report. Print a sample on plain paper and place it on top of your pre-printed form. Now hold these 2 sheets up to the light to create a transparency effect so you can see how far off your output is from the predesignated fields that information needs to line up with. Also get a ruler out for measure. Your screen display won't be exact, but if you display output to screen and magnify to 100%, you can use a ruler to measure how far you may need to move something up/down or left/right. This will assist you with @POS commands or inserting spaces or lines to obtain alignment of data on the pre-printed form.

        3. You can control vertical alignment by inserting blank lines above and below the information you are trying to fit into specific locations.

        Top of page.

        Stop Writing Notes To A Debtor

        Q - Sometimes I need Collect! to write to debtor notes that a letter was sent, and sometimes I don't. Is there any way to control this?

        A - There is a global system switch to control whether a noteline is written when any debtor letter is sent. Click "System\ Preferences\ Options, Sounds and Colors. This will open the Screen and Messages window.

        If you want the notes written to file when you send debtor correspondence, check the box beside "Write note to file when printing".

        If you don't want the notes written to file when you send debtor correspondence, uncheck the box beside "Write note to file when printing".

        Top of page.

        Record Not Legal Member Of Set

        Q - I am trying to print a report and I am getting System DB "Error -19 Record Not Legal Member Of Set". Why?

        A - This error indicates that you have not set up your Loop structure correctly. Did you edit your report recently? Perhaps you removed a necessary reference to a loop.

        Check the record layouts in the Printable Information field name tables available in the Help pages as well as in "Print\Settings\Printable Information". Is your report trying to pull information from a file or sub-file that is not related to your "Start On" file? Refer to Report Writer Topics or contact Technical Services for advanced assistance with custom reports at the Timed Services Billable rate.

        Top of page.

        Security Levels For Printing Letters

        Q - We want to restrict the ability to print letters to certain Operator levels. Does the user level assigned affect the ability to print in any way?

        What we are trying to accomplish is to take away the ability of unauthorized users from being able to create and print their own "custom" letters. This introduces a risk factor to our company since legislation and our client's directives dictate content rules, regional restrictions and visual appearance requirements which we must remain in compliance with.

        A - Operators, such as collectors can only print custom letters through Collect! if they have access to Edit Reports. If they have access to Word or any other text program outside of Collect!, this would have to be controlled by your internal IT Tech and network access rights.

        The best way to limit access to reports in Collect! is to put security levels on a report itself so that only certain levels can print it. That is set in the Report Options window. To view this security entry area, click "Print\Customized Printing\ Edit Report Templates". Enter any report and click the Options button in the lower left corner of the window. The Report Options window will open. Within this screen, there are a series of User Level entry areas with an arrow drop-down to select the level from a pick list. You can select a single user level that will be allowed access this report or you can you can enter a Min level to Max level range that is permitted. All other levels outside of the designated range will not be permitted to see the report in the Report Menu - not to select it to print it or to select it to run it.

        The safest security recommendation is to create separate libraries of reports for different user levels that they need so that access is compatible with job function. Your collectors need to be able to generate basic dunning letters. They do not need to be able to access the Customize Printing option which allows editing of reports. You can control their Access Rights to eliminate any access to report editing and create user level specific report libraries that are defined as their access in the Operator Setup screen, Detail Tab. See the Help pages for more details on creating new report libraries and Operator Setup topics.

        Top of page.

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:

RMA RMA Canada ACA Member