*---------------------- Location Section ------------------------ * Library: Aquicksearchbiz.vcx * Class: Quicksearchobject * Method: Populatecursor() *----------------------- Usage Section -------------------------- *) Description: *) * Scope: Public * Parameters: *$ Usage: *$ * Returns: *--------------------- Maintenance Section ---------------------- * Change Log: * CREATED 01/05/2005 - NN * MODIFIED *-- CHANGE - NN - January 19, 2005 - 12:46:46 ** -- CHANGE - NN - February 01, 2005 - 15:13:16 *-- CHANGE - NN - February 09, 2005 - 11:47:23 **-- CHANGE - NN - March 22, 2005 - 11:40:58 *---------------------------------------------------------------- LPARAMETERS tcClientAcctNum, tcLast, ; tcFirstName, tcMiddle, tcAreaCode, tcExchange, tcFour, ; tcSSN, tcPolicyNumber, tcMedicaidNumber LOCAL loSelect, loDE, loCursor, lcSelectCMDFilter, lcBaseSelectCMD, lcCountSelectCMD, loCursorAdapter loDE = this.GetDataEnvironment() loCursor = m.loDE.GetCursorObject("ca_QuickSearch") loCursorAdapter = loCursor.oCursorAdapter lcSelectCMDFilter = "" #define VFP_NEWLINE CHR(13) + CHR(10) TEXT TO lcBaseSelectCMD NOSHOW PRETEXT 2 SELECT Trans.ctrans_pk AS ctrans_pk, ; Trans.cclient_account_number, ; Patients.ddob, ; Trans.tadmit_date AS dos, ; PADR(NVL(ALLTRIM(Names.cl_name)+", ", "") + NVL(ALLTRIM(Names.cf_name)+" ", "") + NVL(Names.cm_initial, ""), 50) AS cpatient_name, ; Product_lines.cproduct_line, ; Trans.cCommissioned_Owner as cUserID, ; IIF(ISNULL(Trans.cResolution_Codes_fk) OR cResolution_Codes_Fk=="", ; VisC.cCode_Description, VisCo.cCode_Description) as cStatus ; FROM mmviscollect!patients INNER ; JOIN mmviscollect!trans ; ON Patients.cpatients_pk = Trans.cpatients_fk INNER ; JOIN mmviscollect!product_lines ; ON Product_lines.cproduct_lines_pk = Trans.cproduct_lines_fk INNER ; JOIN mmviscollect!names ; ON Patients.cpatients_pk = Names.cpointer_fk ; LEFT JOIN mmVisCollect!VisCodes VisC ON Trans.cStatus_codes_fk = VisC.cVisCodes_pk ; LEFT JOIN mmVisCollect!VisCodes VisCo ON Trans.cResolution_codes_fk = VisCo.cVisCodes_pk endtext #define FILTER_PREFIX IIF(EMPTY(m.lcSelectCMDFilter),"", m.lcSelectCMDFilter + " AND ") WITH THIS .lRepeatRequery = .f. * loSelect = .SelectAlias() .EmptySearchResult() && Always start with the empty result set * Exact vs not exact match is only relevant to names and Client_Account_Number IF .lExactMatch lcSelectCMDFilter = IIF(EMPTY(m.tcClientAcctNum),m.lcSelectCMDFilter, FILTER_PREFIX + [Trans.cClient_Account_Number == '] + m.tcClientAcctNum + [']) lcSelectCMDFilter = IIF(EMPTY(m.tcLast),m.lcSelectCMDFilter,FILTER_PREFIX + [Names.cl_name == '] + m.tcLast + [']) lcSelectCMDFilter = IIF(EMPTY(m.tcFirstName),m.lcSelectCMDFilter,FILTER_PREFIX + [Names.cf_name == '] + m.tcFirstName + [']) lcSelectCMDFilter = IIF(EMPTY(m.tcMiddle),m.lcSelectCMDFilter,FILTER_PREFIX + [Names.cm_initial == '] + m.tcMiddle + [']) ELSE lcSelectCMDFilter = IIF(EMPTY(m.tcClientAcctNum),m.lcSelectCMDFilter,FILTER_PREFIX + [Trans.cClient_Account_Number LIKE '] + m.tcClientAcctNum + [%']) lcSelectCMDFilter = IIF(EMPTY(m.tcLast),m.lcSelectCMDFilter,FILTER_PREFIX + [Names.cl_name LIKE '] + m.tcLast + [%']) lcSelectCMDFilter = IIF(EMPTY(m.tcFirstName),m.lcSelectCMDFilter,FILTER_PREFIX + [Names.cf_name LIKE '] + m.tcFirstName + [%']) lcSelectCMDFilter = IIF(EMPTY(m.tcMiddle),m.lcSelectCMDFilter,FILTER_PREFIX + [Names.cm_initial = '] + m.tcMiddle + [']) ENDIF lcSelectCMDFilter = IIF(EMPTY(m.tcAreaCode),m.lcSelectCMDFilter,FILTER_PREFIX + [Phones.cArea_Code = '] + m.tcAreaCode + [']) lcSelectCMDFilter = IIF(EMPTY(m.tcExchange),m.lcSelectCMDFilter,FILTER_PREFIX + [Phones.cExchange + Phones.cLast_Four = '] + m.tcExchange + m.tcFour + [']) lcSelectCMDFilter = IIF(EMPTY(m.tcSSN),m.lcSelectCMDFilter,FILTER_PREFIX + [Patients.cSSN LIKE '] + m.tcSSN + [%']) lcSelectCMDFilter = IIF(EMPTY(m.tcPolicyNumber),m.lcSelectCMDFilter,FILTER_PREFIX + [Insurances.cPolicy_Number LIKE '] + m.tcPolicyNumber + [%']) lcSelectCMDFilter = IIF(EMPTY(m.tcMedicaidNumber),m.lcSelectCMDFilter, ; FILTER_PREFIX + [(Insurances.cPolicy_Number LIKE '] + ; m.tcMedicaidNumber + ; [%' OR Insurances.cCaid_Number LIKE '] + m.tcMedicaidNumber + [%')]) IF "Phones." $ lcSelectCMDFilter lcBaseSelectCMD = m.lcBaseSelectCMD + [INNER JOIN mmVisCollect!Phones ON Patients.cpatients_pk = Phones.cpointer_fk] ENDIF IF "Insurances." $ lcSelectCMDFilter lcBaseSelectCMD = m.lcBaseSelectCMD + [INNER JOIN mmVisCollect!Insurances ON Patients.cpatients_pk = Insurances.cpatients_fk] ENDIF lcBaseSelectCMD = STRTRAN(STRTRAN(m.lcBaseSelectCMD,";",[]), VFP_NEWLINE, []) lcCountSelectCMD = [SELECT count(*) as cntRecs] + SUBSTR(m.lcBaseSelectCMD, AT(" FROM ", m.lcBaseSelectCMD)) ** These commands should change CursorAdapter's SelectCMD loCursorAdapter.cBaseSelectCmd = m.lcCountSelectCMD loCursorAdapter.cSelectCmdFilter = m.lcSelectCMDFilter LOCAL lnRequeryResult lnRequeryResult = .REQUERY(.t., "ca_QuickSearch") * I found, that requery returns -3 if interrupted - this is not documented in the Help DO WHILE .lRepeatRequery = .t. and m.lnRequeryResult <> REQUERY_SUCCESS && the user tried to stop it lnRequeryResult = .REQUERY(.t., "ca_QuickSearch") .lRepeatRequery = .f. ENDDO ** What if requery returns 0 - it means some problems with the view LOCAL lnReccount IF VARTYPE(m.plStop) = "L" AND m.plStop = .T. lnReccount = 0 ELSE lnReccount = ca_QuickSearch.cntRecs loCursorAdapter.cBaseSelectCmd = m.lcBaseSelectCMD IF m.lnReccount <= .nMaxRecordsToDisplay lnReccount = .CreateFinalResult() ENDIF ENDIF ENDWITH RETURN m.lnReccount>Hi everybody,
>loDE = this.GetDataEnvironment() >loCursor = m.loDE.GetCursorObject("ca_QuickSearch")>