lparameters tcUsGrLink_pk, tdDate, ; tcAlias, tcFilter, tcField local lcSQLStr, lcFilter, ; lcSQLStrTemp, lcDateTime, ; lcFieldList, lcGroupBy, llReturn, ltTime private pcInfo ltTime = datetime() if empty(m.tcUsGrLink_pk) lcFilter = "" else lcFilter = [Usgrlink.cUsGrLink_pk = "] + m.tcUsGrLink_pk + [" AND ] endif if empty(m.tcAlias) tcAlias = 'c_EmployeesQueuesInfo' endif if empty(m.tdDate) tdDate = date() endif if empty(m.tcFilter) tcFilter = "" endif do case case empty(m.tcField) lcFieldList = [Trans.cTrans_pk, Usgrlink.cUsGrlink_pk, ] + ; [Users.cUserID, Trans.yCurrent_balance_amount ] lcGroupBy = "" case m.tcField = 'cusgrlink_pk' *!* lcFieldList = [COUNT(Trans.cTrans_pk) as iAccounts_Count, ] + ; *!* [Usgrlink.cUsGrlink_pk, ] + ; *!* [MAX(Users.cUserID) as cUserID, ] + ; *!* [SUM(Trans.yCurrent_balance_amount) as yCurrent_balance_amount] lcFieldList = [COUNT(cTrans_pk) as iAccounts_Count, ] + ; [cUsGrlink_pk, ] + ; [MAX(cUserID) as cUserID, ] + ; [SUM(yCurrent_balance_amount) as yCurrent_balance_amount] * lcGroupBy = [GROUP BY UsGrlink.cUsGrLink_pk] lcGroupBy = [GROUP BY cUsGrLink_pk] case m.tcField = 'cuserid' *!* lcFieldList = [COUNT(Trans.cTrans_pk) as iAccounts_Count, ] + ; *!* [Users.cUserID, ] + ; *!* [SUM(Trans.yCurrent_balance_amount) as yCurrent_balance_amount] lcFieldList = [cUserID, COUNT(cTrans_pk) as iAccounts_Count, SUM(yCurrent_balance_amount) as yCurrent_balance_amount] *lcGroupBy = [GROUP BY Users.cUserID] lcGroupBy = [GROUP BY cUserID] endcase lcDateTime = TimeToStr(dtot(m.tdDate + 1)-1) text to lcFilter noshow textmerge <<m.lcFilter>> Trans_Employees_Queues.iActive_Flag = 1 ; AND Employee_queue_schedules.tScheduled_time <= <<m.lcDateTime>> ; AND Employee_queue_schedules.iActive_Flag = 1 ; and Trans.cResolution_Codes_fk is NULL ; <<m.tcFilter>> endtext TEXT TO lcSQLStr NOSHOW TEXTMERGE PRETEXT 7 SELECT Trans_Employees_Queues.cTrans_Employees_Queues_pk , ; Trans_Employees_Queues.cCommission_Owner_UsGrLink_fk as cUsGrlink_pk ; FROM Trans_Employees_Queues ; INNER JOIN Employee_queue_schedules ; ON Trans_employees_queues.cTrans_employees_queues_pk = ; Employee_queue_schedules.cTrans_employees_queues_fk ; inner join Trans on Trans_Employees_Queues.cTrans_fk = Trans.cTrans_pk ; WHERE <<m.lcFilter>> ENDTEXT SET DELETED off *set optimize off SYS(3092, "SQLLog.TXT") sys(3054,12,"pcInfo") llReturn = RunSQL(m.lcSQLStr, m.tcAlias) *set optimize on _cliptext = m.lcSQLStr + chr(13) + chr(10) + m.pcInfo *sys(3054,0) SET DELETED on index on cUsGrLink_pk tag cUsgrlink =messagebox(datetime() - m.ltTime) =errorMsg(m.pcInfo) return m.llReturn endfuncOnce I ran this program, and then DO MAIN.prg, I see all Rushmore info on the screen. I do use the third parameter, as you see.