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: PrincipalArtigos › ASP 3.0 › Capítulo 07 : 04
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
SITES DINÂMICOS COM ASP 3.0 - CURSO COMPLETO
Autor: Júlio Battisti


Promoção: Livro Windows Server 2012 R2 e Active Directory - Curso Completo, 2100 Páginas. Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

Promoção: Livro Windows Server 2012 R2 e Active Directory

Curso Completo, 2100 páginas.

Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

MAIS DETALHES | COMPRAR ESTE LIVRO


Lição 057 - Capítulo 07 - Utilizando o objeto Command para passar parâmetros para uma consulta Parametrizada

Neste item vamos utilizar o objeto Command e a sua coleção Parameters para acessar a consulta con_pedidos e passar um valor para o parâmetro Pais da consulta. Vamos criar um formulário, onde temos uma lista, gerada dinamicamente pelo ASP, na qual temos a listagem dos países em ordem alfabética. O usuário seleciona um país na lista e clica no botão Pesquisar. Feito isso será chamada uma página procurapais.asp, a qual passa o valor selecionado na lista como parâmetro para a consulta con_pedidos, a qual retorna a listagem dos pedidos para o país selecionado. A página inicial, na qual construiremos a listagem de países será chamada de command2.asp.

Na Figura 7.10 temos um diagrama do funcionamento do nosso exemplo.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.10 Diagrama de funcionamento do exemplo proposto.

Na Listagem 7.2 temos o código que cria a página command2.asp.

Listagem 7.2 – Criando a lista com o nome dos países – command2.asp.

1          <%@ Language=VBScript %>

2          <HTML>

3          <HEAD>

4          </HEAD>

5          <TITLE>Selecione o País de destino.</TITLE>

6          <BODY>

7          <%

8          'O Primeiro passo é criar a conexão com o Banco de dados.

9          'Para isto crio um objeto do tipo Connection.

10        'Cria um Objeto do Tipo ADODB.Connection

11        Set conn=Server.CreateObject("ADODB.Connection")

12        'Agora abro uma conexão com o arquivo nwind.mdb

13        'utilizando OLE DB.

             

14        conn.ConnectionString = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;

            DATA SOURCE=c:\meus documentos\nwind.mdb"

15        conn.Open

16        'Agora criamos um Objeto RecordSet.

17        'Este Objeto irá acessar o campo ProductName

18        'da tabela Produtos

19        Set Paises = Server.CreateObject("ADODB.Recordset")

20        Paises.Open "Select ShipCountry from Orders Group By ShipCountry Order By     ShipCountry", conn, 3, 3

21        'Neste ponto tenho o objeto Paises com uma listagem

22        'em ordem ascendente, dos países para os quais existem

23        'pedidos efetuados.

24        %>

25        <P><B>Selecione o país a ser pesquisado.</B></P>

26        <P><B><I>Depois clique no botão Pesquisar.</I></B></P>

27        <FORM action=procurapais.asp method=post id=form1 name=form1>

28        <SELECT id=listapaises name=listapaises>

29        <%

30        'Agora construo a lista de opções a partir dos

31        'dados obtidos da tabela Orders.

32        'Para cada país obtido, crio uma nova opção

33        'na lista.

34        Do While Not Paises.EOF

35             Response.Write "<OPTION value=" & Chr(34) & Paises.Fields("ShipCountry") &                          Chr(34) & ">" & Paises.Fields("ShipCountry")& "</OPTION>"

36        Paises.MoveNext 

37        Loop

38        %>

39        </SELECT>

40        <BR>

41        <HR>

42        <INPUT type="submit" value=Pesquisar id=Pesquisar name=Pesquisar>

43        </FORM>

44        </BODY>

45        </HTML>

Agora precisamos construir a página procurapais.asp. Esta página receberá o valor selecionado na lista, passará este valor para o parâmetro Pais da consulta con_pedidos, a qual irá retornar somente os pedidos para o país selecionado. A página procurapais.asp também exibirá os resultados obtidos.

Na Listagem 7.3 temos o código que cria a página procurapais.asp.

Listagem 7.3 – Passando um valor para o parâmetro Pais da consulta con_pedidos.

1          <%@ Language=VBScript %>

2          <HTML>

3          <HEAD>

4          </HEAD>

5          <TITLE>Resultados da pesquisa.</TITLE>

6          <BODY>

7          <%

8          'O Primeiro passo é criar a conexão com o Banco de dados.

9          'Para isto crio um objeto do tipo Connection.

10        'Cria um Objeto do Tipo ADODB.Connection

11        Set conn=Server.CreateObject("ADODB.Connection")

12        'Agora abro uma conexão com o arquivo nwind.mdb

13        'utilizando OLE DB.

             

14        conn.ConnectionString = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;

            DATA SOURCE=c:\meus documentos\nwind.mdb"

15        conn.Open

16        'Agora criamos um Objeto RecordSet para reapresentar

17        'a lista de países no final, para que o usuário possa

18        'fazer uma nova pesquisa.

19        Set Paises = Server.CreateObject("ADODB.Recordset")

20        Paises.Open "Select ShipCountry from Orders Group By ShipCountry Order By     ShipCountry", conn, 3, 3

21        'Agora crio um objeto do tipo Command

22        'defino a conexão ativo utilizando a propriedade ActiveConnection.

23        'Depois defino o tipo de comando utilizando a propriedade

24        'CommandType. O valor 4 significa que é um Stored Procedure.

25        'Para o caso de consultas do Microsoft Access devemos definir

26        'o tipo como sendo Stored Procedure.

27        'Ao invés do valor 4 poderíamos utilizar a constante

28        'adCmdStoredProc

29        Set com_paises = Server.CreateObject("ADODB.Command")

           

30        com_paises.ActiveConnection = conn

31        com_paises.CommandType  = 4

           

32        'Agora começo a definir as características do parâmetro.

33        'Crio variável para definir o nome do parâmetro.

           

34        nome_par = "Pais"

           

35        'Crio uma variável para conter o valor do parâmetro.

36        'Defino este valor como sendo o valor selecionado

37        'na lista de países.      

38        valor_par= Request.Form("listapaises")

           

39        'Agora crio variáveis que definem as demais

40        ' características do parâmetro.

41        tipo_par = 129  'parâmetro do tipo string.

42        tama_par = 50   'define o tamanho do parâmetro.

43        dire_par = 1     'define um parâmetro de entrada.

44        'Agora crio um objeto do tipo Parameter

45        Set pais_par=com_paises.CreateParameter

                                   (nome_par,tipo_par,dire_par,tama_par,valor_par)

46        'Adiciono o parâmetro a coleção Parameters.

47        com_paises.Parameters.Append pais_par

48        'Defino o comando a ser executado como sendo o nome

49        'da consulta con_pedidos

50        com_paises.CommandText = "con_pedidos"

           

51        'Crio um objeto RecordSet e utilizo o método

52        'execute do objeto Command para retornar valores

53        'para o objeto RecordSet.

54        Set Resultados = Server.CreateObject("ADODB.RecordSet")

55        Set Resultados = com_paises.Execute  

           

56        'Reexibo a lista de países para que o usuário possa

57        'pesquisar os pedidos para um outro país.

58        %>

59        <P><B>Para pesquisar outro país, selecione na lista.</B></P>

60        <P><B><I>Depois clique no botão Pesquisar.</I></B></P>

61        <FORM action=procurapais.asp method=post id=form1 name=form1>

62        <SELECT id=listapaises name=listapaises>

63

64        <%

65        'Agora construo a lista de opções a partir dos

66        'dados obtidos da tabela Orders.

67        'Para cada país obtido, crio uma nova opção

68        'na lista.

69        Do While Not Paises.EOF

70                    Response.Write "<OPTION value=" & Chr(34) & Paises.Fields("ShipCountry") &              Chr(34)

                       

71                    If Paises.Fields("ShipCountry")= Request.Form("listapaises") Then

72                          Response.Write " SELECTED"

73                    End If

74                    Response.Write ">" & Paises.Fields("ShipCountry")& "</OPTION>"

75                    Paises.MoveNext 

76                    Loop

77        %>

78        </SELECT>

79        <INPUT type="submit" value="Pesquisar" id=Pesquisar name=Pesquisar>

80        </FORM>

81        <%

82        'Exibo os resultados obtidos a partir da consulta

83        'con_pedidos.

84        %>

           

85        <B>Relação de pedidos para: <% =Request.Form("listapaises") %>.</B>

86        <HR>

87        <% 'Agora exibo os resultados utilizando uma tabela. %>

88        <TABLE border=1>

89                    <TR>

90                       <TD><B>Código</B></TD>

91                       <TD><B>Data</B></TD>

92                       <TD><B>Cidade</B></TD>

93                       <TD><B>País</B></TD>

94                    </TR>

95        <%

96                    Do While Not Resultados.EOF

97        %>

98                    <TR>

99                       <TD><% =Resultados.Fields("OrderID")     %></TD>

100                     <TD><% =Resultados.Fields("OrderDate")   %></TD>

101                     <TD><% =Resultados.Fields("ShipCity")    %></TD>

102                     <TD><I><% =Resultados.Fields("ShipCountry") %></I></TD>

103                  </TR>

104      <% Resultados.MoveNext

105      Loop

106      %>

107      </TABLE>

108      <BR>

109      <HR>

110      </BODY>

111      </HTML>

A Listagem 7.3 salienta diversos pontos importantes na utilização do objeto Command para a execução de consultas Parametrizadas, através da passagem de parâmetros utilizando o objeto Parameter.

Vamos detalhar alguns trechos desta listagem.

  • Observe o seguinte trecho de código:

29        Set com_paises = Server.CreateObject("ADODB.Command")

30        com_paises.ActiveConnection = conn

31        com_paises.CommandType  = 4

Inicialmente criamos um objeto do tipo Command, depois definimos a sua propriedade ActiveConnection como sendo a conexão conn. Por último definimos a propriedade CommandType com o valor 4. Ao invés do valor 4 poderíamos ter utilizado a constante adCmdStoredProc, o que significa que o valor passado para a propriedade CommandText deve ser o nome de uma consulta – no caso do Microsoft Access, ou de um Stored Procedure – no caso do Microsoft SQL Server. Como queremos executar a consulta con_pedidos, definimos a propriedade CommandType com o valor 4.

Na Tabela 7.3 estão listados os valores e respectivas constantes para a propriedade CommandType.

  • Em seguida começo a definir as características do parâmetro que será criado e passado para a consulta. Isto é feito com o seguinte trecho de código:

32        'Agora começo a definir as características do parâmetro.

33        'Crio variável para definir o nome do parâmetro.

           

34        nome_par = "Pais"

           

35        'Crio uma variável para conter o valor do parâmetro.

36        'Defino este valor como sendo o valor selecionado

37        'na lista de países.      

38        valor_par= Request.Form("listapaises")

           

39        'Agora crio variáveis que definem as demais

40        ' características do parâmetro.

41        tipo_par = 129  'parâmetro do tipo string.

42        tama_par = 50   'define o tamanho do parâmetro.

43        dire_par = 1     'define um parâmetro de entrada.

Primeiro definimos o nome do parâmetro, o qual deve ser o mesmo nome que utilizamos para a definição do parâmetro, quando da criação da consulta no Microsoft Access. Neste caso criamos uma variável chamada nome_par e definimos o seu valor como “Pais”.

Logo em seguida criamos a variável valor_par, a qual irá conter o valor que será passado para o parâmetro Pais. Este valor é o valor selecionado na lista de países da página command2.asp, conforme indicado pelo código abaixo:

38        valor_par= Request.Form("listapaises")

Seguindo as definições, criamos uma variável para o tipo do parâmetro – tipo_par. A esta variável foi atribuído o valor 129. Ao invés do valor 129 poderíamos ter utilizado a constante adChar, o que define o parâmetro como sendo uma String, isto é, do tipo texto. Na Tabela 7.5 temos uma listagem com os principais valores e respectivas constantes que podem ser definidas para o tipo do parâmetro.

Valor/Constante Descrição
0x2000
adArray
Um valor de Flag indicativo de que temos um Array de valores, o qual deve ser combinado com outro valor indicativo de tipo. Este valor indica um array de parâmetros de um determinado tipo.
20
adBigInt
Indica um inteiro de 8 bytes;
128
adBibary
Indica um valor binário.
11
adBoolean
Indica um valor booleano, do tipo Verdadeiro ou Falso (Sim ou Não).
8
sdBSTR
Indica uma string de caracteres de terminação nula (Unicode).
129
adChar
Indica um valor de string, isto é, texto.
6
adCurrency
Indica um valor do tipo "currency", o qual é um número com quatro casas decimais fixas.
7
adDate
Indica um valor de data.
134
adDBTime
Indica um valor de hora, no formato hhmmss .
135
adDBTimeStamp
Indica um valor de data/hora no formato yyyymmddhhmmss .
14
adDecimal
Indica um valor decimal.
5
adDouble
Indica um valor numérico de precisão dupla.
0
adEmpty
Não define nenhum valor.
10
adError
Indica um código de erro de 32 bits.
72
adGUID
Indica um valor do tipo GUID - Globally Uniq Identifier.
3
adInteger
Indica um valor inteiro de 4 bytes.
4
adSingle
Indica um valor numérico de precisão simples.

Tabela 7.5 Principais Valores/Constantes para definição do tipo do parâmetro.

Em seguida definimos um tamanho máximo em bytes para o parâmetro, que no nosso exemplo foi definido para 50, conforme indicado pelo seguinte comando:

42        tama_par = 50   'define o tamanho do parâmetro.

Finalmente definimos uma variável para conter o valor de definição para a propriedade Direction do parâmetro. Este valor foi definido em 1, o que significa um parâmetro de entrada, isto é, um parâmetro que envia um valor para a consulta do Microsoft Access. Esta definição está indicada no código a seguir:

43        dire_par = 1     'define um parâmetro de entrada.

Ao invés do valor 1, poderíamos ter utilizado a constante adParamInput. Na Tabela 7.6 temos uma listagem com os valores e respectivas constantes que podem ser definidas para a propriedade Direction.

Valor/Constante Descrição
1
adParamInput
Indica um parâmetro de entrada. É o valor padrão.

2

adParamOutput

Indica que o parâmetro é um parâmetro de saída.

3
adParamInputOutput

Indica que o parâmetro é um parâmetro de entrada e saída.
4
adParamReturnValue
Indica que o parâmetro representa um valor de retorno.

0
adParamUnknown

Indica um parâmetro com direção desconhecida.

Tabela 7.6 Valores/Constantes para a propriedade Direction.

Criamos variáveis para conter estes valores. Depois passaremos estas variáveis para o método CreateParameter. Ao invés de criarmos as variáveis poderíamos passar os valores, diretamente para o método CreateParameter. Adotamos este procedimento para facilitar o entendimento do código.

  • O próximo passo é criar um objeto do tipo Parameter, utilizando o método CreateParameter do objeto Command. Chamamos este objeto de pais_par, conforme indicado abaixo:

44        'Agora crio um objeto do tipo Parameter

45        Set pais_par = com_paises.CreateParameter (nome_par,tipo_par,dire_par,tama_par,valor_par)

A sintaxe para o método CreateParameter é a seguinte:

Set nome_parameter = nome_command.CreateParameter (Name, Type, Direction, Size, Value)

Onde temos:

1.         Name : O nome do parâmetro.

2.         Type: O tipo do parâmetro. Os principais valores de tipo possíveis, estão listados na Tabela 7.5.

3.         Direction: Definição da direção do parâmetro. Os principais valores de direção possíveis, estão listados na Tabela 7.6.

4.         Size: Define o tamanho máximo para o parâmetro.

5.         Value: Define o valor do parâmetro. No nosso caso é o valor que será enviado para a consulta con_pedidos, valor esse que servirá como critério de filtragem para o campo ShipCountry.

  • Uma vez criado o parâmetro é hora de adicioná-lo a coleção Parameters do objeto Command. Para fazer isso, utilizamos o método Append da coleção Parameters, conforme indicado a seguir:

46        'Adiciono o parâmetro a coleção Parameters

47        com_paises.Parameters.Append pais_par

Observe que passamos para o método Append, o nome do objeto Parameter a ser adicionado a coleção Parameters. Utilizando Append, podemos adicionar novos parâmetros.

  • Agora preciso definir a propriedade CommandText do objeto com_paises. Como definimos a propriedade CommandType como 4 (Stored Procedure), vamos passar para o objeto CommandText o nome da consulta a ser executada, que no nosso exemplo é con_pedidos. Isto é feito com o seguinte código:

50        com_paises.CommandText = "con_pedidos"

  • O passo final é criar um objeto RecordSet e popular o objeto RecordSet, utilizando o método Execute do objeto Command. Isto é feito com o seguinte código:

54        Set Resultados = Server.CreateObject("ADODB.RecordSet")

55        Set Resultados = com_paises.Execute

Feito isso, o valor selecionado na lista de países é passado para a consulta con_pedidos. A consulta é executada e somente são retornados os registros em que o campo ShipCountry contém o valor selecionado na Lista de países.

Com a utilização do objeto Command e do objeto Parameter foi possível executar uma consulta Parametrizada no Microsoft Access, passando o valor do parâmetro para a consulta.

Utilizando o nosso exemplo.

Agora vamos utilizar o nosso exemplo, para comprovar o correto funcionamento do mesmo.

Ao carregar a página command2.asp, obtemos o resultado indicado na Figura 7.11

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.11 Selecione um país da Lista.

Vamos supor que o usuário selecionou “Norway”, na lista de países. Ao clicar no botão Pesquisar serão exibidos apenas os Pedidos o país selecionado, conforme indicado na Figura 7.12.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.12 Exibindo os pedidos para “Norway”

Observe que novamente é exibida a lista de países e o país selecionado anteriormente aparece selecionado na lista. Para pesquisar os pedidos para outro país é só selecionar o país desejado na lista e clicar no botão Pesquisar. Veja que com isso construímos um formulário de pesquisa bastante interativo. O usuário seleciona o país desejado e manda pesquisar. Cada vez que o usuário seleciona um país diferente na lista e clica no botão Pesquisar; o novo valor selecionado é passado como parâmetro para a consulta con_pedidos. A consulta é executada e retorna somente os registros que atendem ao critério passado como parâmetro.

Um desafio para o amigo leitor.

Agora que já conhecemos vários detalhes sobre o acesso a Bancos de dados, através de páginas ASP, fica aqui um pequeno desafio para o amigo leitor.

DASAFIO: Modificar o exemplo anterior fazendo as seguintes melhorias.

  • Modificar a consulta con_pedidos incluindo um parâmetro chamado AnoPedido. Este parâmetro será utilizado para filtrar somente os registros de um determinado ano. Adicionar um campo calculado à consulta, o qual exiba somente o ano do campo OrderDate.
  • Modificar a página command2.asp para que além de uma lista com os nomes dos países seja exibida uma lista com a relação de anos para os quais existem pedidos. Construir esta lista dinamicamente, assim como foi construída a lista para os países.
  • Modificar a página procurapais.asp, para que a mesma crie mais um parâmetro chamado ano_ped e passe esse parâmetro para a consulta con_pedidos, de tal forma que somente sejam retornados os pedidos para o País selecionado e para o Ano selecionado.

Vamos exemplificar como deve ser o resultado final, após estas alterações:

Ao carregar a página command2.asp, obtemos o resultado indicado na Figura 7.13

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.13 Selecione um país da lista Países e o ano na lista Ano.

Vamos supor que o usuário selecionou “Brazil”, na lista de países e 1994 na lista Ano. Ao clicar no botão Pesquisar serão exibidos apenas os Pedidos o país e ano selecionados, conforme indicado na Figura 7.14.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.14 Pedidos para o Brasil no ano de 1994.

Para fazer uma nova pesquisa, basta selecionar novos critérios e clicar no botão Pesquisar.

Em caso de dificuldades na criação da nova versão do nosso exemplo é só entrar em contato pelo e-mail: juliobattisti@hotmail.com. Mas antes de entrar em contato procure revisar os conceitos já apresentados até o momento. Praticar é importante para fixar os diversos conceitos apresentados.


Promoção: Livro Windows Server 2012 R2 e Active Directory - Curso Completo, 2100 Páginas. Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

Promoção: Livro Windows Server 2012 R2 e Active Directory

Curso Completo, 2100 páginas.

Tudo para você se tornar um administrador de redes altamente qualificado para o mercado de trabalho e levar a sua carreira para o próximo nível!

MAIS DETALHES | COMPRAR ESTE LIVRO


« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

Cursos Online

  • Banco de Dados
  • Carreira
  • Criação/Web
  • Excel/Projetos
  • Formação
  • + Todas as categorias
  • 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-2019 ®

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

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