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
Eu até consegui montar usando o FWFormBrowse porém a pesquisa apresenta um erro log:
THREAD ERROR ([11160], cirilorocha, NBK061) 30/01/2023 16:44:39 type mismatch on compare on FWBROWSE:SEEKACTION(FWBROWSE.PRW) 13/12/2022 14:23:45 line : 8090
[TOTVS build: 7.00.210324P-20221215] Called from {|| SELF:SEEKACTION(), SELF:SETFOCUS() }(FWBROWSE.PRW) 13/12/2022 14:23:45 line : 10090 Called from {||SELF:VALIDSEEK( SELF:CSEEK ) .AND. EVAL(SELF:BACTION,SELF:CSEEK,SELF:ORDERSELECTED())}(FWSEEK.PRW) 13/12/2022 14:23:45 line : 1015 Called from ::MSDIALOG:ACTIVATE
— Cirilo Rocha 30 de Jan de 2023Acho que deu erro pelo fato que você passou o aIndex, sendo que o alias de query não possui index, acho que seria melhor fazer com tabela temporária mesmo, já tentou?
— Saulo Gomes Martins 30 de Jan de 2023