The database is an AS400; the database is VERY BADLY DESIGNED (and there's nothing I can do about it). I am only returning the fields that I need rather than SELECT *. I decided not to build my SQL into the code (which I have in the past), but use the parameters because the queries are long and complex (see below for some examples).
What I have is a Main form where the user enters search criteria (Case Number, or Name, or Name & DOB, or Booking Number). If the user enters a case number then I run qryMain (because I need one piece of information from this query as a param, and this is the only query that does a SELECT *, but there are no joins, and I need almost all the information that is returned). Once I get that additional piece of information I run:
qryArrest
qryCashBonds (if not empty then run qryCashBondTransactions with info from qryCashBonds as param)
qrySuretyBonds (if not empth the run qrySuretyBondTrans with info from qrySuretyBonds as param)
qryCaseNotes
qryFileLocation
qryHearingInfo
etc.
Whether or not any of these queries returns any rows determines if a TTabSheet will be displayed in Form_CaseInformation.
Here are a few sample queries:
qryMain:
SELECT * FROM CMPDEFMF WHERE CASPRE = :CASPRE AND CASNUM = :CASNUM
qryArrest

this is one of the longer & more complex queries)
SELECT CMPARRST."BOOKING#", ARHDAT, ARRTIM, ARROFF, ARROFN,
CMPAGNCY.AGNAME, ARRLOC, BNDSET, BNDPAY, RECVDAT, 'Cash' AS BONDTYPE, 'None' AS POSNAM
FROM CMPARRST
INNER JOIN CMPAGNCY ON CMPARRST.ARRAGC = CMPAGNCY.AGENCY
INNER JOIN ACPCBDMF ON CMPARRST."BOOKING#" = ACPCBDMF."BOOKING#"
WHERE CMPARRST.CASPRE = :CASPREC AND CMPARRST.CASNUM = :CASNUMC
AND DEFSEQ =

EFSEQC
UNION
SELECT CMPARRST."BOOKING#", ARHDAT, ARRTIM, ARROFF, ARROFN,
CMPAGNCY.AGNAME, ARRLOC, BNDSET, BNDPAY, TRANDATE AS RECVDAT, 'Surety' AS BONDTYPE, POSNAM
FROM CMPARRST
INNER JOIN CMPAGNCY ON CMPARRST.ARRAGC = CMPAGNCY.AGENCY
INNER JOIN ACPSBDMF ON CMPARRST."BOOKING#" = ACPSBDMF."BOOKING#"
INNER JOIN ACPSBDTF ON ACPSBDMF.BNDNUM = ACPSBDTF.BNDNUM
WHERE CMPARRST.CASPRE = :CASPRES AND CMPARRST.CASNUM = :CASNUMS
AND DEFSEQ =

EFSEQS
ORDER BY ARHDAT
qryCashBond: SELECT BNDNUM, RECVDAT, POSNAM, ACPCBDMF."BOOKING#",
BNDAMT, RFNAME
FROM ACPCBDMF
WHERE CASPRE = :CASPRE AND CASNUM = :CASNUM
qryCashTrans:
SELECT BNDNUM, ACPCBDTF.TRNCDE, TRNDSC, TRANDATE, TRNAMT
FROM ACPCBDTF
INNER JOIN ACPCBDTR ON ACPCBDTF.TRNCDE = ACPCBDTR.TRNCDE
WHERE BNDNUM = :BONDNUM
qryFileLocation:SELECT LOCDATE, LOCTIME, LOCDESC, EMPNAM
FROM CMPFILLO
INNER JOIN CMPLOCAT ON CMPFILLO.LOCCODE = CMPLOCAT.LOCCODE
INNER JOIN HRPEMPMF ON CMPFILLO."BADGE#" = HRPEMPMF."BADGE#"
WHERE CASPRE = :CASPRE AND CASNUM = :CASNUM
Thanks for your assistance!
Leslie