NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosProgweb : Sistemaasp002
Quer receber novidades e e-books gratuitos?

Sistema ASP 3.0 utilizando 3 camadas – Parte 2

 

Na “Parte 1” mostrei como criar a “Stored Procedure”, a “function” dentro do Visual Basic 6.0 e por final a página ASP 3.0 responsável por enviar os parâmetros esperados pelos outros dois componentes. Para maiores detalhes, acesso link abaixo:

 

http://www.aspneti.com/visualizar/downloadArtigo.aspx?ch_artigos=269

 

Nesta “Parte 2”, tenho o objetivo de ensinar e mostrar como funciona a parte de “pesquisa” na mesma página criada anteriormente, ou seja, o usuário mandará os parâmetros pela página, a página ASP 3.0 chamará o componente Visual Basic 6.0 e por final chamará a “Stored Procedure” para buscar os resultados. Os resultados retornados serão transformados em ARRAY e mostrados dentro da página ASP 3.0. Os parâmetros enviados vão direto da página até chegar na “Stored Procedure”; esse procedimento será mostrado claramente no decorrer do documento.

 

O primeiro passo seria criar o banco de dados, mas como na “Parte 1” já foi criado, passaremos para a criação da Stored Procedure. No fornecedor, os dois campos que podem ser pesquisados ou digitados dados para a busca são: NOME e CNPJ. (Referência 2.1)

 

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

go

 

CREATE PROCEDURE [dbo].[PRJSP099_SELECIONAR_FORNECEDOR]

 

      @FOR_NOME         AS NVARCHAR(100),

      @FOR_CNPJ         AS NVARCHAR(14)

 

AS

 

      DECLARE @SQL      AS VARCHAR(4000)

 

      SET @SQL = ' SELECT

            FOR_NU_SEQUENCIAL,

            FOR_NOME,

            FOR_CNPJ,

            FOR_OPTANTE_SIMPLES,

            FOR_IE,

            FOR_TELEFONE,

            FOR_TELEFONE1,

            FOR_FAX,

            FOR_CONTATO,

            FOR_ENDERECO,

            FOR_BAIRRO,

            FOR_CIDADE,

            FOR_ESTADO,

            FOR_CEP,

            FOR_BANCO,

            FOR_AGENCIA,

            FOR_CONTA,

            FOR_EMAIL

      FROM

            CPETB042_FORNECEDOR

      WHERE 1=1 '

 

      IF (@FOR_NOME IS NOT NULL)

      BEGIN

            SET @SQL = @SQL + ' AND FOR_NOME = "' + CONVERT(VARCHAR, @FOR_NOME) + '"'

      END

      IF (@FOR_CNPJ IS NOT NULL)

      BEGIN

            SET @SQL = @SQL + ' AND FOR_CNPJ = "' + CONVERT(VARCHAR, @FOR_CNPJ)  + '"'

      END

EXECUTE(@SQL)

 

Referência: 2.1

 

Explicação:

 

A “Stored Procedure” foi criada com o nome “PRJSP099_SELECIONAR_FORNECEDOR” esperando dois parâmetros de entrada. Um do tipo NVARCHAR(100) e outro do tipo NVARCHAR(14), os números entre parêntese é a capacidade de caracteres esperados, ou seja, o limite de caracteres esperados. (Referência 2.2)

 

CREATE PROCEDURE [dbo].[PRJSP099_SELECIONAR_FORNECEDOR]

 

      @FOR_NOME         AS NVARCHAR(100),

      @FOR_CNPJ         AS NVARCHAR(14)

 

Referência: 2.2

 

No decorrer da “Stored Procedure” declarei algumas variáveis para armazenamento e criei um select dinâmico armazenando o resultado na “@SQL”. Verifico se o primeiro parâmetro não veio NULL usando a condição IF (@FOR_NOME IS NOT NULL) para atribuir mais uma condição no select armazenado anteriormente. Fiz da mesma forma para o segundo parâmetro e no final mando executar o “@SQL”.

 

Com a procedure criada, passo agora para a classe dentro do Visual Basic 6.0 chamada “clsFornecedor.cls”, criei uma “function” com o nome “SelectionFornecedor” passando dois parâmetros e retornando um valor do tipo “Variant”, ou seja, um array para quando se trabalha com Visual Basic 6.0. (Referência 2.3)

 

Public Function SelecionarFornecedor(ByVal FOR_NOME As String, _

                                     ByVal FOR_CNPJ As String) As Variant

Static sSql As String

Static vRetorno As Variant

Static bConexao As Boolean

On Error GoTo error

    bConexao = AbreConexao("open")

 

    If bConexao Then

 

        sSql = "PRJSP099_SELECIONAR_FORNECEDOR " & _

                                IIf(FOR_NOME = "", "NULL", "'" & FOR_NOME & "'") & ", " & _

                                IIf(FOR_CNPJ = "", "NULL", "'" & FOR_CNPJ & "'") & " "

        vRetorno = ExecutaSQLArray(sSql)

    End If

error:

 

   If Err.Number <> 0 Then

        GerarLog "SelecionarFornecedor", DescricaoErro(1)

   End If

 

   SelecionarFornecedor = vRetorno

   If bConexao Then

       AbreConexao "close"

   End If

End Function

 

Referência: 2.2

 

Explicação:

 

Analisando a assinatura do método: (Referência 2.3)

 

Public Function SelecionarFornecedor(ByVal FOR_NOME As String, _

                                     ByVal FOR_CNPJ As String) As Variant

 

Referência: 2.3

 

O método é público, espera dois parâmetros do tipo String, o primeiro chamado FOR_NOME e o Segundo FOR_CNPJ e no final retornará valores do tipo VARIANT. Seguindo ainda com a análise, declarei algumas variáveis e coloquei o tratamento de erro. Dentro do tratamento, chamei a função chamada “AbreConexao” informando o valor significativo ao abrir a conexão com o banco de dados. (Referência 2.4)

 

Static sSql As String

Static vRetorno As Variant

Static bConexao As Boolean

On Error GoTo error

    bConexao = AbreConexao("open")

 

Referência: 2.4

 

Após abrir o banco de dados, verifico se a variável declarada está true e na linha abaixo chamo a stored procedure passando os parâmetros recebidos. Utilizo a condição “IIF” que verifica se o parâmetro está vazio, caso sim, o mesmo atribui o valor “NULL” enviado a procedure. Lembre-se que foi feita uma verificação em relação NOT NULL anteriormente na camada de dados. Essa verificação dentro da “function” fiz para os dois parâmetros. (Referência 2.5).

 

If bConexao Then

 

        sSql = "PRJSP099_SELECIONAR_FORNECEDOR " & _

                           IIf(FOR_NOME = "", "NULL", "'" & FOR_NOME & "'") & ", " & _

                           IIf(FOR_CNPJ = "", "NULL", "'" & FOR_CNPJ & "'") & " "

        vRetorno = ExecutaSQLArray(sSql)

 

    End If

 

Referência: 2.5

 

Toda verificação é feita, verifico se há algum erro, e retorno o valor para o objeto que chamou. (Referência 2.6)

 

error:

 

   If Err.Number <> 0 Then

        GerarLog "SelecionarFornecedor", DescricaoErro(1)

   End If

 

   SelecionarFornecedor = vRetorno

   If bConexao Then

       AbreConexao "close"

   End If

 

Referência: 2.6

 

Depois de criado a parte de dados e a parte de negócio, basta criar a  apresentação, ou seja, a página ASP 3.0. (Referência 2.7)

 

Referência: 2.7

 

A tela criada (Referência 2.7) mostra circulados os dois campos que podem ou não serem preenchidos pelo usuário e em seguida clicar no botão “PESQUISAR” logo abaixo no final da página. O HTML da página foi mostrado no passo anterior. Mostrarei a parte de pesquisa e acesso ao objeto criado.

 

Na parte HTML, especificamente no botão PESQUISAR chamo uma function criada em JAVASCRIPT. (Referência 2.8)

 

<input type="button" onClick="pesquisar();"    title="Clique aqui para Pesquisar"         name="btnPesquisar"  value="Pesquisar">

 

Referência: 2.8

 

No atributo “onClick” do input existe uma chamada para a function “pesquisar();” cujo não recebe qualquer parâmetro. No passo passado foi falado que o form está com o atributo action para a mesma página, ou seja, os valores preenchidos são pegos e tratados na mesma página. (Referência 2.9)

 

<script>

      function pesquisar() {

           document.form.action = "frmManterFornecedor.asp?sAcao=Pesquisar";

           document.form.submit();

      }

</script>

 

Referência: 2.9

 

A function (Referência 2.9) apenas atribui a ação da página para ela própria passando um parâmetro chamado “sAcao” com o valor “Pesquisar”. Após a atribuição, é chamado o comando de submit. No começo da página ASP 3.0, foram declaradas constantes e variáveis para serem enviadas, ou seja, cada campo digitado será pego pelo request.  (Referência 2.10)

 

<%

CONST FOR_NU_SEQUENCIAL              = 0

CONST FOR_NOME                               = 1

CONST FOR_CNPJ                                = 2

CONST FOR_OPTANTE_SIMPLES          = 3

CONST FOR_IE                                    = 4

CONST FOR_TELEFONE                       = 5

CONST FOR_TELEFONE1                     = 6

CONST FOR_FAX                                 = 7

CONST FOR_CONTATO                        = 8

CONST FOR_ENDERECO                      = 9

CONST FOR_BAIRRO                            = 10

CONST FOR_CIDADE                            = 11

CONST FOR_ESTADO                           = 12

CONST FOR_CEP                                 = 13

CONST FOR_BANCO                            = 14

CONST FOR_AGENCIA                          = 15

CONST FOR_CONTA                             = 16

CONST FOR_EMAIL                              = 17

 

dim sAcao

dim iCont

 

'############### declaracao

dim cmbEstado

dim txtCNPJ

dim txtNome

dim txtInscricaoEstadual

dim txtEndereco

dim txtBairro

dim txtCidade

dim txtCEP

dim txtTelefone1

dim txtTelefone2

dim txtFax

dim txtEmail

dim txtNuBanco

dim txtNuAgencia

dim txtNuConta

dim txtContato

dim rdOptante

dim hdNuSequencial

 

dim oFornecedor

dim vFornecedor

dim bFornecedor

 

'################ pegando valores

 

txtNuConta                       = Request("txtNuConta")

cmbEstado                       = Request("cmbEstado")

txtCNPJ                           = Request("txtCNPJ")

txtNome                           = Request("txtNome")

txtInscricaoEstadual           = Request("txtInscricaoEstadual")

txtEndereco                      = Request("txtEndereco")

txtBairro                          = Request("txtBairro")

txtCidade                         = Request("txtCidade")

txtCEP                             = Request("txtCEP")

txtTelefone1                     = Request("txtTelefone1")

txtTelefone2                     = Request("txtTelefone2")

txtFax                             = Request("txtFax")

txtEmail                           = Request("txtEmail")

txtNuBanco                      = Request("txtNuBanco")

txtNuAgencia                    = Request("txtNuAgencia")

txtNuConta                       = Request("txtNuConta")

txtContato                       = Request("txtContato")

rdOptante                        = Request("rdOptante")

txtContato                       = Request("txtContato")

hdNuSequencial                 = Request("hdNuSequencial")

sAcao                              = Request("sAcao")

 

set oFornecedor = Server.CreateObject("CPETabelas.clsFornecedor")

 

if sAcao = "Pesquisar" then

         vFornecedor = oFornecedor.SelecionarFornecedor(txtNome, txtCNPJ)
end if

%>

 

Referência: 2.10

 

Explicação:

 

No começo do código, adicionei algumas constantes com seus respectivos valores, estes valores serão usados para mostrar o relatório gerado; ou seja; para não utilizar números utilizo constante. Os números atribuídos é a posição retornada do select da “stored procedure” com seus respectivos campos. Mais abaixo, pego todos os dados utilizando o Request explicado no passo anterior.

 

set oFornecedor = Server.CreateObject("CPETabelas.clsFornecedor")

 

Referência: 2.11

 

Atribuo a variável “oFornecedor” o server.createObject que significa fazer a comunicação entre o componente gerado anteriormente pelo Visual Basic 6.0. Após criar a dll, registrei os componentes dentro do COM PLUS. Caso não haja nenhum erro, a variável “oFornecedor” estará disponível para uso e todas as functions públicas.

 

if sAcao = "Pesquisar" then

         vFornecedor = oFornecedor.SelecionarFornecedor(txtNome, txtCNPJ)

end if

 

Referência: 2.12

 

Logo abaixo, verifico se variável “sAcao” é igual ao valor “Pesquisar” caso seja, atribuo ao meu vetor o objeto criado chamando a function SelectionFornecedor passando o nome e o cnpj que são os campos da tela e pegos pelo Request. Com o vetor preenchido, poderei utilizá-lo mais abaixo mostrando ao usuário os campos retornados.

 

No próximo exemplo mostrado abaixo é uma interação entre o HTML e ASP 3.0 para mostrar um verdadeiro retorno ao usuário final ou do sistema. (Referência 2.13).

 

<%

      if IsArray(vFornecedor) then

%>

 

<table CELLSPACING="1" cellpadding="0" class="formulario" WIDTH="90%" title="Dados do Afastamento Cadastrado">

      <tr>

<th >CNPJ</th>

<th width="" >Nome</th>

<th width="" ><b>Telefone</b></th>

<th width=""><b>Telefone 1</b></th>

<th width=""><b>Fax</b></th>

<th width=""><b>E-mail</b></th>

</tr>

<%

      if IsArray(vFornecedor) then

         for iCont=0 to UBound(vFornecedor, 2)

%>

             <tr align="center">

                 <td>

<%

                   if Trim(vFornecedor(FOR_CNPJ, icont)) <> "" then

                      Response.Write vFornecedor(FOR_CNPJ, icont)

                  else

                      Response.Write "-"

                            end if

%>&nbsp;

</td>

<td title="<%=vFornecedor(FOR_NOME, icont)%>">

<%

if Trim(vFornecedor(FOR_NOME, icont)) <> "" then

         Response.Write mid(vFornecedor(FOR_NOME, icont),1,10)

else

          Response.Write "-"

                                      end if

                                      %>&nbsp;

                            </td>

                            <td>

                                      <%

                                      if Trim(vFornecedor(FOR_TELEFONE, icont)) <> "" then

                                               Response.Write  vFornecedor(FOR_TELEFONE, icont)

                                      else

                                               Response.Write "-"

                                      end if

                                      %>&nbsp;

                            </td>

                            <td >

                                      <%

                                      if Trim(vFornecedor(FOR_TELEFONE1, icont)) <> "" then

                                               Response.Write  (vFornecedor(FOR_TELEFONE1, icont)

                                      else

                                               Response.Write "-"

                                      end if

                                      %>&nbsp;

                            </td>

                            <td>

                                      <%

                                      if Trim(vFornecedor(FOR_FAX, icont)) <> "" then

                                               Response.Write vFornecedor(FOR_FAX, icont)

                                      else

                                               Response.Write "-"

                                      end if

                                      %>&nbsp;

                            </td>

                            <td>

                                      <%

                                      if Trim(vFornecedor(FOR_EMAIL, icont)) <> "" then

                                               Response.Write vFornecedor(FOR_EMAIL, icont)

                                      else

                                               Response.Write "-"

                                      end if

                                      %>&nbsp;

                            </td>

                   </tr>

         <%

                   next

         else

         %>

                   <tr align="center"><td colspan="10"><b>Nenhum registro encontrado</b></td></tr>

         <%

         end if

         %>             

</table>

<%

end if

%>

 

Referência: 2.13

 

Explicação:

 

Essa interação do ASP 3.0 e HTML é simples e fácil. O primeiro de tudo no código, verifico se o meu vetor é um array. Caso não seja, o sistema mostrará uma mensagem informando ao usuário que não retornou registro. (Referência 2.14)

 

<%

         if IsArray(vFornecedor) then

%>

 

Referência: 2.14

 

Após a verificação, montei o cabeçalho do relatório ao usuário. Essa parte do relatório foi criada mais abaixo da página, ou seja, no final da página ASP 3.0. (Referência 2.15)

 

<tr>

<th >CNPJ</th>

<th width="" >Nome</th>

<th width="" ><b>Telefone</b></th>

<th width=""><b>Telefone 1</b></th>

<th width=""><b>Fax</b></th>

<th width=""><b>E-mail</b></th>

</tr>

 

Referência: 2.15

 

Montei o cabeçalho do relatório, agora falta apenas montar o corpo. Para a montagem, irei fazer um “for” no vetor, lembre-se que esse vetor possui um array bidimensional dentro dele. Dessa forma, utilizarei o UBOUND do “for”. E em seguida, utilizarei o Response.Write para mostrar os valores dentro das “tr”s montadas. (Referência 2.16)

 

<%

         for iCont=0 to UBound(vFornecedor, 2)

%>

         <tr align="center">

                   <td>

                            <%

                            if Trim(vFornecedor(FOR_CNPJ, icont)) <> "" then

                                      Response.Write vFornecedor(FOR_CNPJ, icont)

                            else

                                      Response.Write "-"

                            end if

                            %>&nbsp;

                   </td>

            </tr>

            <tr>

                    <td>

                   ‘aqui coloco outros campos que gostaria de mostrar ao usuário

                    </td>

            </tr>

<%

          next

%>

 

Referência: 2.16

 

Faço um “for” de ICount para UBound(vetor, 2). Dentro do “for”, montei as “tr”s não esquecendo de verificar se o resultado do vetor é diferente de vazio para mostrá-lo utilizando o Response.Write. Note que utilizei dentro do vetor a constante “FOR_CNPJ”, a mesma foi declarada logo acima com um número, esse número que está sendo usado para a verificação. Caso não possua valor neste campo, o mesmo mostrará apenas um traço. Isso eu fiz para todos os campos que gostaria de mostrar ao usuário.

 

Em seguida, utilizei a página clicando no botão PESQUISAR. Note que o mesmo trouxe resultados mostrados na tela. (Referência 2.17)

 

Referência: 2.17

 

Note que a parte circulada é todo resultado mostrado dentro do sistema.

 

Bom, fico por aqui, qualquer dúvida favor entrar em contato pelo e-mail mauricio@aspneti.com. Espero ter ajudado de alguma forma.

 

Livros publicados pelo autor:

 

 

Mauricio Junior

 

www.aspneti.com

www.mauriciojunior.org

 

Untitled Document
ASP BÁSICO
1 Cálculo de Frete Internacional com ASP e Access
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 1
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 2
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 3
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 4
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 5
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 6
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 7
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 8
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 9
1 Sistema de Login com ASP 3.0 usando três camadas – Parte 10
1 ASP 3.0 utilizando 3 camadas - Parte 1
1 ASP 3.0 utilizando 3 camadas - Parte 2
1 ASP 3.0 utilizando 3 camadas - Parte 3
COLDFUSION
1 Criando um formulário em Flash usando o ColdFusion MX 7
FLASH - ACTIONSCRIPT
1 Movimentar objeto – Parte 01
1 Movimentar objeto – Parte 02
1 Jogo – Acerte o Alvo
1 Como Movimentar um Objeto utilizando Botões
1 Exibir frases Aleatórias
1 Ações Básicas do ActionScript
1 Criando Botões com MovieClip no Flash
1 Criando Links em Botões Flash
1 Integrando Flash com Fireworks na Criação de Botões
1 Interpolação Motion (Movimento)
1 Interpolação Shape (Forma)
1 Principais Eventos do Mouse (Flash/ActionScript)
1 Criando Máscaras no Flash (Mask) Parte 1
1 Criando Máscaras no Flash (Mask) Parte 2
1 Galeria de Fotos Carregando Arquivos Externos (Flash e ActionScript)
PHP BÁSICO
1 Introdução ao PHP
1 Lógica em PHP
1 Trabalhando com Formulários HTML
1 Utilizando Arquivos – Criando um Scrap Book
1 Banco de Dados em Arquivos Texto
1 PHP - Sistema de busca de preços - Parte 1
1 PHP - Sistema de busca de preços - Parte 2
1 PHP - Sistema de busca de preços - Parte 3
1 PHP - Sistema de busca de preços - Parte 4
1 PHP - Sistema de busca de preços - Parte Final
1 Primeiros Scripts
1 Guardando dados em memória
1 Um pouco mais sobre variáveis
1 Manipulando variáveis
1 Estruturas de controle - Parte 1
1 Estruturas de controle - Parte 2
1 Estruturas de controle - Parte 3
1 Estruturas de controle - Parte 4
1 Estruturas de controle - Parte 5
1 Criação de Funções no PHP
1 Funções – Um pouco mais Sobre Parâmetros - Parte 1
1 Funções – Um pouco mais Sobre Parâmetros - Parte 2
1 Funções – Alguns Truques
1 Funções – Últimos Truques
1 Arrays – Noções Básicas
1 Arrays – Um pouco Mais Sobre Criação de Arrays
PHP COM BANCO DE DADOS
1 Criando um Sistema Ficha Cadastral Clientes - Parte 1
1 Criando um Sistema Ficha Cadastral Clientes - Parte 2
1 Criando um Sistema Ficha Cadastral Clientes - Parte Final
1 Controle Horarios Funcionários - Parte 1
1 Controle Horarios Funcionários - Parte 2
1 Controle Horarios Funcionários - Parte 3
1 Controle Horarios Funcionários - Parte 4
1 Controle Horarios Funcionários - Parte 5
1 Controle Horarios Funcionários - Parte 6
1 Controle Horarios Funcionários - Parte 7
1 Controle Horarios Funcionários - Parte 8
1 Controle Horarios Funcionários - Parte 9
1 Controle Horarios Funcionários - Parte 10
1 Controle Horarios Funcionários - Parte 11
1 Controle Horarios Funcionários - Parte 12
1 Controle Horarios Funcionários - Parte 13 - Conclusão
1 Instalando o PHP no Windows XP
1 Instalando o MySQL no Windows XP
1 Sistema Controle Extintores -Parte 1
1 Sistema Controle Extintores -Parte 2
1 Sistema Controle Extintores -Parte 3
1 Sistema Controle Extintores -Parte 4
1 Sistema Controle Extintores -Parte 5
1 Sistema Controle Extintores -Parte - Conclusão
1 PHP - Controle dos Correios - Parte 1
1 PHP - Controle dos Correios - Parte 2
1 PHP - Controle dos Correios - Parte 3
1 PHP - Controle dos Correios - Parte 4
1 PHP - Controle dos Correios - Parte 5
1 PHP - Controle dos Correios - Parte 6
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 1
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 2
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 3
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 4
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 5
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 6
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 7
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 8
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 9
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 10
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 11
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 12
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 13
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 14
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 15
1 Sistema Para Controle do IMC - Índice de Massa Corporal - Parte 16
JAVASCRIPT BÁSICO
1 JavaScript Básico - Lição 1
1 JavaScript Básico - Lição 2
1 JavaScript Básico - Lição 3
1 JavaScript Básico - Lição 4
1 JavaScript Básico - Lição 5
1 JavaScript Básico - Lição 6
1 JavaScript Básico - Lição 7
1 JavaScript Básico - Lição 8 - Instruções If e Else
1 JavaScript Básico - Lição 9 - Tópicos Diversos
1 JavaScript Básico - Lição 10 - Objetos Math e Date
1 JavaScript Básico - Lição 11 - Trabalhando com o objeto Browser
1 JavaScript - Criando Seus Próprios Objetos
1 JavaScript - Virtual Earth – Primeiro Passo
1 JavaScript - Virtual Earth – Segundo Passo
Quer receber novidades e e-books gratuitos?

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2021 ®

[LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI