Description
Standard checking of connections for MfgPro. This includes creating the right aliases, both for Progress type database as for Oracle dataserver type database connections. (copy of code in mfcqa.p)
Parameters
ihClass | input | handle | Handle to class instance |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program1/progress.p)
assign oiReturnStatus = -98.
do on error undo, return:
/*MUST HAVE DATABASE(S) CONNECTED*/
if num-dbs = 0 then do:
/* If databases are not connected, we cannot retrieve a message */
/* Therefore, message must be hard-coded and not translated */
<M-81 run ErrorMessage
(input 'No databases are connected.' (icMessage),
input '' (icArguments),
input '' (icFieldName),
input '' (icFieldValue),
input '' (icRowid),
input ? (ihClass)) in Progress>
assign oiReturnStatus = -1.
return.
end.
assign vlQaddbConnected = no.
do viSdb = 1 to num-dbs:
assign vlQaddbConnected = vlQaddbConnected or ldbname(viSdb) = "qaddb":U.
end.
if not vlQaddbConnected
then do:
/* ASSIGN ALIASES QADDB AND QAD. ALIAS QADDB POINTS TO THE
MFG/PRO DATABASE THUS IF WE ARE RUNNING WITH A NON-PROGRESS DB
THE ALIAS QADDB MUST POINT TO THE FOREIGN DATABASE NOT THE FIRST
CONNECTED DATABASE. */
if pdbname("qaddb":U) = ? then do:
if not can-do(gateways,"oracle":U) then
create alias qaddb for database value(ldbname(1)).
else do:
do viSdb = 1 to num-dbs:
if dbtype(viSdb) <> "PROGRESS":U
and sdbname(viSdb) = sdbname(ldbname(1))
then do:
create alias qaddb for database value(ldbname(viSdb)).
create alias qad for database value(ldbname(1)).
leave.
end.
end.
if ldbname(1) <> sdbname("qaddb":U) then
create alias qaddb for database value(ldbname(1)).
end.
end.
/* IF LDBNAME("QADDB":U) <> ? THEN MIGHT NEED TO RESET ALIASES */
else if sdbname("qaddb":U) <> ldbname(1) then do:
do viSdb = 1 to num-dbs:
if dbtype(viSdb) <> "PROGRESS":U and
sdbname(viSdb) = sdbname(ldbname(1))
then do:
if pdbname("qaddb":U) <> pdbname(ldbname(viSdb)) then
create alias qaddb for database value(ldbname(viSdb)).
if pdbname("qad":U) <> pdbname(ldbname(1)) then
create alias qad for database value(ldbname(1)).
leave.
end.
end.
if ldbname(1) <> sdbname("qaddb":U) then
create alias qaddb for database value(ldbname(1)).
end.
/* IF ALIAS QADDB FOR FOREIGN DB IS SET BUT ALIAS QAD IS NOT */
if sdbname("qaddb":U) = ldbname(1) and
dbtype("qaddb":U) <> "PROGRESS":U and
pdbname("qad":U) <> pdbname(ldbname(1))
then
create alias qad for database value(ldbname(1)).
end.
assign oiReturnStatus = 0.
end.