Olá pessoal…
Na vídeo aula de hoje, irei mostrar alguns conceitos básicos de MVC em AdvPL, e criaremos tabelas e campos que serão usadas nas próximas aulas.
Fonte de exemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 | //Bibliotecas #Include "Protheus.ch" /*/{Protheus.doc} zUpdTab Função que cria tabelas, campos e índices para utilização nos exemplos de MVC @type function @author Atilio @since 23/04/2016 @version 1.0 /*/ User Function zUpdTab() Local aArea := GetArea() Processa( {|| fAtualiza()}, "Processando..." ) RestArea(aArea) Return /*---------------------------------------------------------------------* | Func: fAtualiza | | Autor: Daniel Atilio | | Data: 23/04/2016 | | Desc: Função que chama as rotinas para criação | *---------------------------------------------------------------------*/ Static Function fAtualiza() ProcRegua(6) //ZZ1 - Artistas IncProc( 'Atualizando ZZ1 - Artistas...' ) fAtuZZ1() //ZZ2 - CDs IncProc( 'Atualizando ZZ2 - CDs...' ) fAtuZZ2() //ZZ3 - Músicas do CD IncProc( 'Atualizando ZZ3 - Músicas do CD...' ) fAtuZZ3() //ZZ4 - Venda de CDs IncProc( 'Atualizando ZZ4 - Venda de CDs...' ) fAtuZZ4() Return /*---------------------------------------------------------------------* | Func: fAtuZZ1 | | Autor: Daniel Atilio | | Data: 23/04/2016 | | Desc: Função que cria a tabela ZZ1 | *---------------------------------------------------------------------*/ Static Function fAtuZZ1() Local aSX2 := {} Local aSX3 := {} Local aSIX := {} //Tabela // 01 02 03 04 05 // Chave Descrição Modo Modo Un. Modo Emp. aSX2 := { 'ZZ1' , 'Artista' , 'C' , 'C' , 'C' } //Campos // 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 // Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta aAdd(aSX3,{ 'ZZ1_FILIAL' , .T., FWSizeFilial(), 0, 'C' , "Filial" , "Filial do Sistema" , "" , 1, "" , .F., "" , "" , "" , "" , "N" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ1_COD' , .F., 06, 0, 'C' , "Codigo" , "Codigo Artista" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ1_DESC' , .F., 50, 0, 'C' , "Descricao" , "Descricao / Nome" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) //Índices // 01 02 03 04 05 06 07 // Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq aAdd(aSIX,{ "ZZ1" , "1" , "ZZ1_FILIAL+ZZ1_COD" , "Codigo" , "U" , "" , "S" }) //Criando os dados u_zCriaTab(aSX2, aSX3, aSIX) Return /*---------------------------------------------------------------------* | Func: fAtuZZ2 | | Autor: Daniel Atilio | | Data: 23/04/2016 | | Desc: Função que cria a tabela ZZ2 | *---------------------------------------------------------------------*/ Static Function fAtuZZ2() Local aSX2 := {} Local aSX3 := {} Local aSIX := {} //Tabela // 01 02 03 04 05 // Chave Descrição Modo Modo Un. Modo Emp. aSX2 := { 'ZZ2' , 'CDs' , 'C' , 'C' , 'C' } //Campos // 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 // Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta aAdd(aSX3,{ 'ZZ2_FILIAL' , .T., FWSizeFilial(), 0, 'C' , "Filial" , "Filial do Sistema" , "" , 1, "" , .F., "" , "" , "" , "" , "N" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ2_CODART' , .F., 06, 0, 'C' , "Cod. Artista" , "Codigo Artista" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ2_CODCD' , .F., 06, 0, 'C' , "Cod. CD" , "Codigo CD" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ2_DESC' , .F., 50, 0, 'C' , "Descricao" , "Descricao / Nome" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ2_PRECO' , .F., 06, 2, 'N' , "Preco" , "Preco" , "@E 999.99" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) //Índices // 01 02 03 04 05 06 07 // Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq aAdd(aSIX,{ "ZZ2" , "1" , "ZZ2_FILIAL+ZZ2_CODCD" , "Codigo CD" , "U" , "" , "S" }) aAdd(aSIX,{ "ZZ2" , "2" , "ZZ2_FILIAL+ZZ2_CODART+ZZ2_CODCD" , "Codigo Artista + Codigo CD" , "U" , "" , "S" }) //Criando os dados u_zCriaTab(aSX2, aSX3, aSIX) Return /*---------------------------------------------------------------------* | Func: fAtuZZ3 | | Autor: Daniel Atilio | | Data: 23/04/2016 | | Desc: Função que cria a tabela ZZ3 | *---------------------------------------------------------------------*/ Static Function fAtuZZ3() Local aSX2 := {} Local aSX3 := {} Local aSIX := {} //Tabela // 01 02 03 04 05 // Chave Descrição Modo Modo Un. Modo Emp. aSX2 := { 'ZZ3' , 'Musicas do CD' , 'C' , 'C' , 'C' } //Campos // 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 // Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta aAdd(aSX3,{ 'ZZ3_FILIAL' , .T., FWSizeFilial(), 0, 'C' , "Filial" , "Filial do Sistema" , "" , 1, "" , .F., "" , "" , "" , "" , "N" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ3_CODART' , .F., 06, 0, 'C' , "Cod. Artista" , "Codigo Artista" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ3_CODCD' , .F., 06, 0, 'C' , "Cod. CD" , "Codigo CD" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ3_CODMUS' , .F., 06, 0, 'C' , "Cod. Musica" , "Codigo Musica" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ3_DESC' , .F., 50, 0, 'C' , "Descricao" , "Descricao / Nome" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) //Índices // 01 02 03 04 05 06 07 // Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq aAdd(aSIX,{ "ZZ3" , "1" , "ZZ3_FILIAL+ZZ3_CODCD+ZZ3_CODMUS" , "Codigo CD + Codigo Musica" , "U" , "" , "S" }) aAdd(aSIX,{ "ZZ3" , "2" , "ZZ3_FILIAL+ZZ3_CODART+ZZ3_CODCD+ZZ3_CODMUS" , "Codigo Artista + Codigo CD + Codigo Musica" , "U" , "" , "S" }) //Criando os dados u_zCriaTab(aSX2, aSX3, aSIX) Return /*---------------------------------------------------------------------* | Func: fAtuZZ4 | | Autor: Daniel Atilio | | Data: 23/04/2016 | | Desc: Função que cria a tabela ZZ4 | *---------------------------------------------------------------------*/ Static Function fAtuZZ4() Local aSX2 := {} Local aSX3 := {} Local aSIX := {} //Tabela // 01 02 03 04 05 // Chave Descrição Modo Modo Un. Modo Emp. aSX2 := { 'ZZ4' , 'Vendas dos CDs' , 'C' , 'C' , 'C' } //Campos // 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 // Campo Filial? Tamanho Decimais Tipo Titulo Descrição Máscara Nível Vld.Usr Usado Ini.Padr. Cons.F3 Visual Contexto Browse Obrigat Lista.Op Mod.Edi Ini.Brow Pasta aAdd(aSX3,{ 'ZZ4_FILIAL' , .T., FWSizeFilial(), 0, 'C' , "Filial" , "Filial do Sistema" , "" , 1, "" , .F., "" , "" , "" , "" , "N" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ4_CODVEN' , .F., 06, 0, 'C' , "Codigo" , "Codigo Venda" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ4_DESC' , .F., 50, 0, 'C' , "Descricao" , "Descricao / Nome" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ4_CODCD' , .F., 06, 0, 'C' , "Codigo CD" , "Codigo do CD" , "@!" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ2_QUANT' , .F., 03, 0, 'N' , "Quantidade" , "Quantidade" , "@E 999" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ2_PRECO' , .F., 06, 2, 'N' , "Preco" , "Preco" , "@E 999.99" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) aAdd(aSX3,{ 'ZZ2_TOTAL' , .F., 08, 2, 'N' , "Total" , "Total" , "@E 99,999.99" , 1, "" , .T., "" , "" , "A" , "R" , "S" , .T., "" , "" , "" , "" }) //Índices // 01 02 03 04 05 06 07 // Índice Ordem Chave Descrição Propriedade NickName Mostr.Pesq aAdd(aSIX,{ "ZZ4" , "1" , "ZZ4_FILIAL+ZZ4_CODVEN" , "Codigo" , "U" , "" , "S" }) //Criando os dados u_zCriaTab(aSX2, aSX3, aSIX) Return |
Se quiser fazer o download desse código ou do conteúdo mostrado na vídeo aula, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 017 – MVC).
Link que contém o fonte para criação das tabelas: Clique Aqui
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Olá Daniel tudo bem ?,
Primeiramente parabéns pela qualidade das aulas, estou aprendendo muito com elas.
Gostaria de saber se há previsão para a publicação de novos videos de serie MVC, no final da aula 017 fiquei com a impressão de que a sequencia, será um projeto com MVC, seria isso mesmo ?.
Boa tarde Edson, tudo bem?
Muito obrigado.
Sim, a sequência serão novas aulas em MVC, por exemplo, a Aula 018 é um cadastro simples em MVC, é acabei ficando enrolado com uns projetos, e não tive tempo de montar, mas irei postar sim.
Um grande abraço.
Se tiver sugestões, pode entrar em contato.