project QadFinancials > class Persistence (Progress) > method CheckAliases

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


ihClassinputhandleHandle to class instance
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method Progress.AfterDBConnections


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.