Boa tarde!
Pessoal após marcado as linhas, como percorrer o browser e pegar somente as marcadas, e principalmente, o conteúdo de um campo do browser
na imagem tem duas linhas selecionadas
como pegar somente essas duas linhas e o conteúdo da coluna "Numero SC", individualmente de cada linha selecionada!
esse FwMarkBrowser é um select com filtro da tabela SC1
detalhe : a idéia é percorrer o browser e ver quem está selecionado, pegar o conteúdo de uma coluna, sem precisar percorrer "novamente" a tabela com base no campo setado como Mark pelo FwMakBrowser!
algo como ter algum um método do FwMarkBrowser ou FwBroser (herdado) que consiga isso do "que está na tela"
abraço!
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
É para funcionar semelhante ao markbrowse montar o fwmarkbrowse precisa definir o campo da tabela que vai receber as 'marcas':
//campo que recebera a marca
oMark:SetFieldMark( "C1_OK" )
Aí quando marcar a linhas a rotina grava no banco um string nesses registros e dá para saber quem está marcado na tela.
Referência rápida:
https://rafaelvieceli.wordpress.com/2011/06/13/fwmarkbrowse/
Agora que eu entendi que não deseja percorrer a tabela SC1, nesse caso vale a pena parar o debug com fwmarkbrowse aberto e ‘fuçar’ nas propriedades do objeto, é para ter uma propriedade browse com array das linhas dentro da mesma…
Se nada mais der certo, talvez seja o caso de apelar para uma tabela temporária para controlar melhor o loop de análise de linhas…
então Josue, o debug eu até já fiz e fuçei, mas não encontrei nada!
e, pra ser sincero, não queria apelar pra tabela temporaria.
estava esperando que tivesse uma propriedade ou metodo na classe que me trouxesse isso!
por enquanto, obrigado!
Boa noite, Luciano!
Já utilizei para uma tabela temporária, mas acredito que você possa fazer da mesma maneira apenas trocando o Alias da tabela, segue exemplo:
TRB->(DbGoTop())
While(!TRB->(EOF()))
If(TRB->TMP_OK = oMarkBrow:Mark())
oExcel:AddCell(_nLin, 2,TRB->TMP_CLIENT , Iif(_nLin%2 == 0,oCellTex2,oCellTex1))
oExcel:AddCell(_nLin, 3,TRB->TMP_LOJA , Iif(_nLin%2 == 0,oCellTex2,oCellTex1))
EndIf
TRB->(DbSkip())
EndDo
Percorra a tabela desejada e verifique se o campo de marca é igual o usado pelo MarkBrowse. No caso, oMarkBrow:Mark().
Se sim, basta realizar o processo desejado. No meu caso, foi montar uma planilha em Excel.
Bom dia Giordano!
Então, fiz dessa forma!
Só que não na tabela temporária, que não é meu caso, e sim, na tabela SC1, direto!
Pelo jeito não temos algum metodo na classe para fazer isso, sem precisar percorrer a tabela novamente verificando se está marcada ou não.
abraço!
Boa tarde Luciano,
Segue em anexo um fonte utilitário que tenho, onde cria um FwMarkBrowse para escolha de empresas/filiais e retorna um array com o que foi selecionado.
Pode haver uma ou outra gambiarra nele (sorry!), porém acredito que possa lhe auxiliar.
Segue anexo.
Obs: Utilizei este artigo como base para desenvolver.
Abraço!
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Eu faço isso utilizando uma FwTemporaryTable e no momento do processamento, obtenho todas as linhas selecionadas com uma select na base. Para isso, use o método GetRealName para obter o nome da tabela temporária no banco de dados. Depois é só percorrer os registros selecionados.
Local cTableTMP := oTMP1:GetRealName()
Local cMarca := oBrowse:Mark()
Local cQuery := ''
cQuery := "SELECT * FROM " + cTableTMP
cQuery += " WHERE D_E_L_E_T_ = '' "
cQuery += " AND MK = '" + cMarca + "' "