[comp.sys.ibm.pc] What is the best way to "print" in dBase?

peter@aucs.UUCP (Peter Steele) (04/13/88)

I've been doing some work in dBase and one weakness I've found is
in its printing. There seems to be a mish-mash of different commands
one has to use to send stuff to a printer.

If I have a report and want to print it, I do a

    REPORT FORM name TO PRINT

and that works fine. However, it also prints the report on the screen.
Is there any way I can print a report and not have it appear on the
screen as well?

There are other annoying things as well. If I have a print statement
such as

    ? 'Hello there'

the text appears on the screen. If I change this to

    set print on
    ? 'Hello there'
    set print off

the message is sent to the printer as well as the screen. Alternatively,
I could say

    @somerow,somecol say 'Hello there'

to print a message on the screen. However, if I add the set print on
command, this output statement still prints only to the screen, not the
printer. To get the @...SAY command to send text to the printer, I have
to say

    set device to print
    @somerow,somecol say 'Hello there'
    set device to screen

In this case, the output *only* goes to the printer, not the screen. This
is what I find to be a real pain. Because dBase's report generator isn't
very good, I have to do many reports in straight code. If I use a combination
of ? commands and @SAY commands to produce the report, I have to include
both set print on and set device to print in my procedure. This will produce
an acceptable report, but only the ? commands appear on the screen, giving
me a complete printed report, but only a partial report on screen. I would
rather nothing appear on the screen when I am printing a report but to do
so I have to use @SAY commands exclusively and that's not always convenient.
For example, to advance to a new line with @SAY, you have to say

    @prow()+1,0

It would be much simpler just to say

    ?

but then this prints a blank line on the screen as well.

After all this, my real question I guess is what is the best way to do the
sort of thing I've described above and get the output *only* on the printer,
not (partially) on the screen and printer both. This includes REPORTS and
all the other things that allow you to add "TO PRINT" to them. I want a
clean screen when I'm printing. Can it be done easily or do I have to fudge?
Any suggestions would be much appreciated. Please email to me if you can.
I'll sumarize if there seems to be any interest.


-- 
Peter Steele, Microcomputer Applications Analyst
Acadia University, Wolfville, NS, Canada B0P1X0 (902)542-2201x121
UUCP: {uunet|watmath|utai|garfield}dalcs!aucs!Peter
BITNET: Peter@Acadia  Internet: Peter%Acadia.BITNET@CUNYVM.CUNY.EDU