Opa. Eu de novo. Como que faço quando informo no meu código que quero pegar o que está em memória. Mas traz nul. Por exemplo a tabela CTS onde eu quero pegar o M->CTS_CODPLA e fazer verificação. Porém ele só traz se eu pegar o que tá no meu Alias (CTS->CTS_CODPLA)
Bom dia Flavio, tudo joia? Depende da estrutura da tela, por exemplo, se for uma grid de uma tela antiga, ai você teria que usar o aCols, ao invés disso: M->CTS_CODPLA, ficaria isso: aCols[n][GDFieldPos("CTS_CODPLA")] Agora se for uma rotina em MVC, você pode ou dar um FWFldGet com o nome do campo ou capturar o Model ativo em memória e depois dar um GetValue (tem um exemplo na aula 43 do curso de MVC - terminaldeinformacao.com/2022/04/22/curso-mvc-em-advpl/ ). Um grande abraço.
@@TerminalDeInformacao Opa, cara muito obrigado. FWFldGet("CTS_CODPLA") fiz aqui. Então ess FWFldGet funciona como o variável de memoria. É que no padrão MVC tudo mudou né? Cara, de novo muito obrigado. Que Deus te abençoe imensagemente. Grande abraço.
Amém meu irmão. Bom dia, tudo joia? Então o FWFldGet serve para buscar uma informação no(s) model(s) em memória do MVC. Para as telas antigas, as rotinas passavam pelo RegToMemory (ficavam com o M->), para as rotinas em MVC, algumas (principalmente as que tem grid), ai você precisa ou capturar o model e dar GetValue ou usar a FWFldGet. Mas em alguns cenários, para manter a compatibilidade em algumas telas também funciona acionar o M-> e o nome do campo em uma tela em MVC. Um grande abraço.
@@TerminalDeInformacao ahhh entendi. Eu achei que ele substituiria o M-> . Aproveitando deixa eu perguntar... O jeito de fazer o If também muda? Por exemplo quero comparar dois valores if (fwfldger("Cts_codpla")
Bom dia Flavio, tudo joia? Para uma melhor manutenção do código, e até depuração, eu recomendaria isolar em uma variável e depois faria os testes com ela, por exemplo: -- //Pega o valor do campo cCodPla := FWFldGet("CTS_CODPLA") //Se tiver conteúdo e for igual a 2 If ! Empty(cCodPla) .And. Alltrim(cCodPla) == "2" // to-do EndIf -- Um grande abraço.
Excelente!
Opa, obrigado pelo comentário Giulliano. Grande abraço.
Ótimo conteúdo!!!!
Obrigado pelo comentário Jessé, grande abraço.
Opa. Eu de novo. Como que faço quando informo no meu código que quero pegar o que está em memória. Mas traz nul. Por exemplo a tabela CTS onde eu quero pegar o M->CTS_CODPLA e fazer verificação. Porém ele só traz se eu pegar o que tá no meu Alias (CTS->CTS_CODPLA)
Bom dia Flavio, tudo joia?
Depende da estrutura da tela, por exemplo, se for uma grid de uma tela antiga, ai você teria que usar o aCols, ao invés disso: M->CTS_CODPLA, ficaria isso: aCols[n][GDFieldPos("CTS_CODPLA")]
Agora se for uma rotina em MVC, você pode ou dar um FWFldGet com o nome do campo ou capturar o Model ativo em memória e depois dar um GetValue (tem um exemplo na aula 43 do curso de MVC - terminaldeinformacao.com/2022/04/22/curso-mvc-em-advpl/ ).
Um grande abraço.
@@TerminalDeInformacao Opa, cara muito obrigado. FWFldGet("CTS_CODPLA") fiz aqui. Então ess FWFldGet funciona como o variável de memoria. É que no padrão MVC tudo mudou né? Cara, de novo muito obrigado. Que Deus te abençoe imensagemente. Grande abraço.
Amém meu irmão. Bom dia, tudo joia?
Então o FWFldGet serve para buscar uma informação no(s) model(s) em memória do MVC.
Para as telas antigas, as rotinas passavam pelo RegToMemory (ficavam com o M->), para as rotinas em MVC, algumas (principalmente as que tem grid), ai você precisa ou capturar o model e dar GetValue ou usar a FWFldGet. Mas em alguns cenários, para manter a compatibilidade em algumas telas também funciona acionar o M-> e o nome do campo em uma tela em MVC.
Um grande abraço.
@@TerminalDeInformacao ahhh entendi. Eu achei que ele substituiria o M-> . Aproveitando deixa eu perguntar... O jeito de fazer o If também muda? Por exemplo quero comparar dois valores if (fwfldger("Cts_codpla")
Bom dia Flavio, tudo joia?
Para uma melhor manutenção do código, e até depuração, eu recomendaria isolar em uma variável e depois faria os testes com ela, por exemplo:
--
//Pega o valor do campo
cCodPla := FWFldGet("CTS_CODPLA")
//Se tiver conteúdo e for igual a 2
If ! Empty(cCodPla) .And. Alltrim(cCodPla) == "2"
// to-do
EndIf
--
Um grande abraço.