Postagem em destaque
- Gerar link
- Outros aplicativos
BlackTDN :: Tips & Tricks ~ mBrowse e Tabelas Temporárias
Bem, até que o paradigma do MVC se torne um fato muita gente ainda utilizará as funções já conhecidas. Dentre elas a mBrowse.
A dica de hoje surgiu em função da necessidade de alteração em um programa que usava a MarkBrow(se). O caso é o que segue:
O Analista que me contatou disse o seguinte: “Baixamos o último RPO do portal do Cliente e alguns programas deixaram de apresentar as Cores no ‘Browse’”.
Analisando o código enviado, verifiquei que o desenvolvedor do código, por desconhecimento e/ou falta de documentação mais detalhada, simulou a mBrowse através da MarkBrow(se). Ao invés de ficar quebrando a cabeça para tentar descobrir o porquê, a partir da atualização do RPO, as cores deixaram de aparecer no ‘Browse” preferi ajustar a rotina para usar mBrowse ao invés da MarkBrow(se) uma vez que no programa original a MarkBrow(se) não era utilizada com a sua finalidade primeira: Permitir “marcar” um determinado registro.
As alterações de fato, foram bem pequenas, mas para fazê-las deveria saber o seguinte a respeito da mBrowse:
- Para usar Tabela Temporária com a mBrowse o parâmetro aFixe deve ser passado com as seguintes características:
aFixe A estrutura do array é diferente para arquivos que que fazem parte do dicionário de dados e para arquivos de trabalho.
aFixe[n][1] Descrição do campo aFixe[n][2] Nome do campo
aFixe[n][1] Descrição do campo aFixe[n][2] Nome do campo aFixe[n][3] Tipo aFixe[n][4] Tamanho aFixe[n][5] Decimal aFixe[n][6] Picture - Os três primeiros bytes do Alias da Tabela Temporária devem ser, obrigatoriamente, “TRB” lembrando que um Alias pode ter até 10 Caracteres;
- a mBrowse obriga que a tabela seja Indexada. Logo, a Tabela Temporária deve possuir, no mínimo, uma ordem.
Com base nas premissas acima, as alterações para que o programa voltasse a funcionar apresentando corretamente as Cores no ‘Browse’ foram as seguintes:
O desenvolvedor utilizou, corretamente, GetNextAlias() para retornar o próximo Alias disponível para uso e a alteração feita foi a seguinte:
Original | Modificação |
cTRB := GetNextAlias() | cTRB := Eval(bGetTrb) Onde: bGetTrb bGetTrb := { || "TRB"+SubStr(GetNextAlias(),4) } Testado como: While ( Select( cTRB ) > 0 ) |
Utilizava a MarkBrow(se) para apresentar o Browse.
Original | Modificação |
MarkBrow(cTRB,,,aCampos,.F.,,"",,,, "cFunction”,,,,aCores) | mBrowse(0,0,0,0,cTRB,aCampos,NIL,NIL,NIL,NIL,aCores) |
Uma consideração sobre aCampos de MarkBrow(se) e aCampos de mBrowse: Suas estruturas são diferentes.
Original | Modificação |
SX3->(dbSetOrder(2)) | SX3->(dbSetOrder(2)) |
A Tabela temporária não estava indexada, e como mBrowse espera uma Tabela Indexada um Índice temporário foi criado usando a função IndRegua().
Original | Modificação |
Sem Índice | IndRegua(cTRB,cInd,"C5_FILIMPR+C9_PEDIDO+C9_ITEM") |
Uma outra modificação, ocorrida devido a uma particularidade da MarkBrow(se) que em seu 11o. Parâmetro permite a passagem de uma função a ser executada no “Duplo Clique”, foi transportar a ação do “Duplo Clique” para o menu aRotina.
Feitas essas alterações o programa voltou a funcionar conforme o esperado. O Cliente ficou satisfeito e menos um problema para o suporte da TOTVS resolver.
[]s
иαldσ dj
- Gerar link
- Outros aplicativos
Postagens mais visitadas
BlackTDN :: RLeg ~ Desvendando a Função ParamBox
- Gerar link
- Outros aplicativos
Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login
- Gerar link
- Outros aplicativos
Comentários
Postar um comentário