Dúvida Rotina MVC Modelo 1

Boa tarde pessoal,

Estou desenvolvendo uma rotina MVC 1.

Gostaria de saber se alguém tem algum caso em que utilizam tabela temporária via SQL, ou seja, ao invés do meu alias ser um tabela já pronta, eu monto ela via query no SQL e depois atribuo seus valores.

Exemplo:

BeginSql alias “TMP_BUSCA”
SELECT
B1_COD AS COD,
B1_GRUPO AS GRUPO,
B1_C_DESC1 AS DESC1,
B1_C_DESC2 AS DESC2,
B1_C_DESC3 AS DESC3,
B1_C_DESC4 AS DESC4,
B1_DESC AS DESCR,
B1_UM AS UM,
B1_C_GONDU AS GONDU
FROM
%table:SB1% SB1
WHERE
SB1.%NotDel% AND
SB1.%NotDeL% AND
B1_MSBLQL = 2 AND
B1_FILIAL = %xFilial:SB1%
EndSql

dbselectarea("TMP_BUSCA")
While !TMP_BUSCA->(Eof())

	Reclock( cAliasCab, .T. )
        (cAliasCab)->COD     := AllTrim(TMP_BUSCA->COD)
        (cAliasCab)->GRUPO   := AllTrim(TMP_BUSCA->GRUPO)
        (cAliasCab)->DESC1   := AllTrim(TMP_BUSCA->DESC1)
        (cAliasCab)->DESC2   := AllTrim(TMP_BUSCA->DESC2)
        (cAliasCab)->DESC3   := AllTrim(TMP_BUSCA->DESC3)
        (cAliasCab)->DESC4   := AllTrim(TMP_BUSCA->DESC4)
        (cAliasCab)->DESCR   := AllTrim(TMP_BUSCA->DESCR)
        (cAliasCab)->UM      := AllTrim(TMP_BUSCA->UM)
        (cAliasCab)->GONDU   := AllTrim(TMP_BUSCA->GONDU)
	    (cAliasCab)->( MsUnlock() )

	TMP_BUSCA->(dbSkip())

Enddo

A questão que estou tendo um pequeno problema: eu queria que ao carregar o browse ele me trouxesse somente 3 campos (B1_COD | B1_DESC | GRUPO) e quando eu fosse fazer a alteração (o objetivo da rotina) ele me trouxesse todos os campos passados na query. Só que quando eu monto meu browse, eu preciso passar todos os campos para serem exibidos, se não ele estoura em um erro.

Olá,

O modelo 1 tem apenas campos num formulário e não em um grid, logo já não está de acordo com o que você pretende.

Agora se for um modelo 3 e você deseja trabalhar com dados já preenchidos no grid, você pode usar o método SetActivate da FWFormModel, criando um bloco de código para preencher o grid etc:
TDN - FWFormModel

É possível criar MVC com tabela temporária? É sim, o MVC não está vinculado com o dicionário de dados do Protheus, tenho um exemplo que criou o MVC sem tabela alguma inclusive, pode lhe auxiliar:
Dadinel/advpl_examples · GitHub

2 curtidas

Bom dia,

Certo, vou irei usar o Modelo 3.

Agora a única dúvida que fica é a seguinte: vou montar toda minha estrutura baseada em uma query que criará a tabela temporária.

O que eu queria saber é se ao carregar minha rotina, na tela inicial da rotina (digamos assim), eu precisava que aparecesse somente os seguintes campos:

Código do Produto → B1_COD
Descrição Produto → B1_DESC
Grupo → B1_GRUPO
Unidade → B1_UM

E ao entrar no processo de alteração do produto, ele carregasse os outros campos que passei na query (além desses que já estão na tela principal).

Precisava de uma função igual o RemoveField() mas que eu passasse ele para remover na tela inicial da rotina.