Versão atual:

FWMBrowse usando query ou tabela temporária

Estou desenvolvendo uma tela onde preciso usar uma query com os dados a serem apresentados em um browse. Tentei montar usando o FWMBrowse porém eu não consigo fazer a pesquisa funcionar fica apresentando erro log.

THREAD ERROR ([17620], cirilorocha, NBK061)   30/01/2023 16:13:15
array out of bounds ( 3 of 2 )  on FWMBROWSE:SEEKCHANGE(FWMBROWSE.PRW) 30/12/2022 14:25:06 line : 2623

[TOTVS build: 7.00.210324P-20221215]
Called from FWMBROWSE:ACTIVATE(FWMBROWSE.PRW) 30/12/2022 14:25:06 line : 556
Called from U_CXTESTE(CXTESTE.prw) 30/01/2023 16:12:57 line : 43

Queria fazer a tela de forma a manter o máximo das facilidades desse componente (como filtros, pesquisa, etc.). Não tenho certeza se o componente mais indicado é este ou outro, também eu poderia gravar os dados em uma tabela temporária se for necessário. Só queria mesmo manter essas característica de filtro e pesquisa, vão ajudar muito meu usuário a operar esta tela.

Abaixo o fonte que eu comecei a montar, este é só um exemplo resumido do que pretendo fazer:

#INCLUDE 'RWMake.ch'
#INCLUDE 'Totvs.ch'
#INCLUDE 'ParmType.ch'
#INCLUDE 'FWBrowse.ch'

User Function CXTeste()    AS Logical

    Local lRet         := .F.
    Local aArea        := GetArea()
    Local cAlias    := GetNextAlias()
    Local cQuery    := ""
    Local oBrw        := NIL

    Local aIndex    := {"A1_COD"}
    Local aSeek     := {{"Código", {"LookUp","C",TamSX3("A1_COD")[1],0,"",,} ,1,.t. }}

    cQuery += " SELECT A1_COD,A1_NOME,CC2_MUN "+CRLF
    cQuery += "FROM "+RetSqlName('SA1')+" SA1 "+CRLF
    cQuery += "INNER JOIN "+RetSqlName('CC2')+" CC2 "+CRLF
    cQuery += "    ON CC2.D_E_L_E_T_='' "+CRLF
    cQuery += "    AND CC2_FILIAL = '' "+CRLF
    cQuery += "    AND CC2_EST = A1_EST "+CRLF
    cQuery += "    AND CC2_CODMUN = A1_COD_MUN "+CRLF

    oBrw := FWMBrowse():New()
    oBrw:SetDataQuery()
    oBrw:SetAlias(cAlias)
    oBrw:SetQuery(cQuery)

    oBrw:AddButton( 'OK'    , {|| lRet := .T., oBrw:End() } ,, 2 ) //"Confirmar"
    oBrw:AddButton( 'Fechar', {|| oBrw:End() } ,, 2 ) //"Cancelar"

    oBrw:SetQueryIndex(aIndex)
    oBrw:SetSeek(.T.,aSeek)

    ADD COLUMN oColumn DATA {|| A1_COD     } TITLE 'Código'    SIZE TamSX3('A1_COD')[1]  OF oBrw //"Chave"
    ADD COLUMN oColumn DATA {|| A1_NOME    } TITLE 'Nome'         SIZE TamSX3('A1_NOME')[1] OF oBrw //"Descrição"
    ADD COLUMN oColumn DATA {|| CC2_MUN    } TITLE 'Município'    SIZE TamSX3('CC2_MUN')[1] OF oBrw //"Descrição"

    oBrw:Activate()

    RestArea(aArea)

Return lRet

Versão (1):

Ver a versão formatada

FWMBrowse usando query ou tabela temporária

Comentário

new question