In DBForms try where possible to use -E for Trusted Connections rather than hard coded usernames and passwords.
Use dbsvpdf.exe to output V1 outputs to PDF
For multi page, multi document outputs use a variable to control the end of page such as END_OF_DOC using a field you know will appear on the last page (For example Order totals in Sage Line 1000 are normally on the last page only).
Below are sniplets so may be missing supporting variables or extracts
Section [INPUT]
VARIABLE=ISQL_CMD , , " -s ^| -w 999 -h-1 -S -E"
VARIABLE=ISQL_CMD_SAGE
VARIABLE=END_OF_DOC , , 0
Section [EXTRACT]
LET END_OF_DOC=0
FIELD=XX, XX, XX, ORD_TOT
IF LENGTH( TRIM(ORD_TOT)) <> 0 THEN
{
LET END_OF_DOC=1
}
Section [DELIVERY]
"MAILME":
{
DEBUG "Got To MAIL"
LET EMAIL=""
LET SYSTEM_CMD=""
LET SYSTEM_CMD=ISQL_CMD_SAGE + QUOTED(("select mail from table where sage_user ='" + SAGE_USER) + "'")
REM DEBUG "SYSTEM_CMD=>"+whole(SYSTEM_CMD)+"<"
LET EMAIL= TRIM(EMAIL[1])
DEBUG "EMAIL = " + EMAIL
IF ( LENGTH( TRIM(EMAIL)) <> 0) AND ( TRIM(EMAIL) <> "XX") THEN
{
DEBUG "Going to MAIL_OUTPUT"
PDF_OUTPUT
MAILME_PDF_OUTPUT
}
ELSE
{
PRINT_OUTPUT
}
}
Section [OUTPUT]
OUTPUT=PDF_OUTPUT
INVOCATION="\\dbsvpdf"
PARAMETERS=
{
OUTPUT_FILE
PDF_FILENAME
}
MASK=
{
LET PDF_FILENAME=((PDF_BASE + "Order_") + REPLACE_STRING(ORD_NO," ","_")) + ".pdf"
DEBUG ("PDF_FILENAME=>" + WHOLE(PDF_FILENAME)) + "<"
IF LENGTH( TRIM(SUPP_CODE)) <> 0 THEN
{
DEFAULT_REFORMAT
IF END_OF_DOC = 1 THEN
{
INVOKE
}
}
}
OUTPUT=MAILME_PDF_OUTPUT
INVOCATION="\\dbmailsend"
PARAMETERS=
{
"-f"
QUOTED FROM_NAME
"-r"
QUOTED
"-s"
QUOTED SUBJECT
"-a"
PDF_FILENAME
"-t"
QUOTED EMAIL
OUTPUT_FILE
}
MASK=
{
IF LENGTH( TRIM(SUPP_CODE)) <> 0 THEN
{
LET FROM_NAME=EMAILCC
LET SUBJECT="Order " + ORD_NO
IF END_OF_DOC = 1 THEN
{
FORMAT_MAIL_MSG
INVOKE
}
LET DUMMY= EXECUTE("del " + PDF_FILENAME)
}
}