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 : 06
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 059 - Capítulo 07 - Um formulário genérico para pesquisas

Para finalizar este capítulo vamos criar um formulário que permite pesquisas genéricas por até três critérios:

  • País de destino.
  • Ano do pedido.
  • Parte do endereço.

O formulário permite que sejam feitas pesquisa utilizando um ou mais destes critérios. Na Figura 7.27 temos um exemplo do formulário – geral.asp, onde o usuário pode selecionar por quais campos deseja pesquisar a tabela Orders e qual o valor para cada campo.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.27 O formulário onde o usuário define os critérios a serem utilizados – geral.asp.

Na Listagem 7.8, temos o código para a página geral.asp.

Listagem 7.8 – O formulário para definição dos critérios de pesquisa – geral.asp.

1          <%@ Language=VBScript %>

2          <HTML>

3          <HEAD>

4          </HEAD>

5          <BODY bgColor=silver>

6          <HR>

7          <FONT color=White style="BACKGROUND-COLOR: navy">

8          <B>

9          Formulário para pesquisas na

10        tabela de Pedidos.<BR>

11        <FONT color=White>

12        Selecione por qual ou quais campos deseja fazer a pesquisa,

13        <BR>

14        depois defina valores para os campos selecionados.<BR>

15        <HR>

16        <%

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

18        'Para isto crio um objeto do tipo Connection.

19        'Cria um Objeto do Tipo ADODB.Connection

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

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

22        'utilizando OLE DB.

             

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

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

24        conn.Open

25        'Agora criamos os Objetos RecordSet.

26        'para criação das listas com os nomes dos países e

27        'com a lista de Anos para os quais existem pedidos.

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

29        Set Anos = Server.CreateObject("ADODB.Recordset")

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

31        Anos.Open "Select Year(OrderDate) As AnoPedido from Orders Group By            Year(OrderDate) Order By Year(OrderDate)", conn, 3, 3

   

32        'Neste ponto tenho os objetos RecordSet necessários para a

33        'criação das listas.

34        %>

35        <FORM action=pesquisa.asp method=post id=form1 name=form1>

           

36        Pesquisar por País ?

37        <INPUT id=pesqpais name=pesqpais type=radio value=Sim>Sim

38        <INPUT CHECKED id=pesqpais name=pesqpais type=radio value=Nao>Não<BR>

39        </FONT></B></FONT>

40        <SELECT id=listapaises name=listapaises>

41        <%

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

43        'dados obtidos da tabela Orders.

44        Do While Not Paises.EOF

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

46        Paises.MoveNext 

47        Loop

48        %>

49        </SELECT>

50        <FONT color=White style="BACKGROUND-COLOR: navy">

51        <B>

52        <HR>

53        Pesquisar pelo Ano ?

54        <INPUT id=pesqano name=pesqano type=radio value=Sim>Sim

55        <INPUT CHECKED id=pesqano name=pesqano type=radio value=Nao>Não

56        <BR>

57        </FONT>

58        </B>

59        </FONT>

60        <SELECT id=listaano name=listaano>

61        <%

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

63        'dados obtidos da tabela Orders.

64        'Para cada ano obtido, crio uma nova opção

65        'na lista.

66        Do While Not Anos.EOF

67            Response.Write "<OPTION value=" & Chr(34) & Anos.Fields("AnoPedido")

                & Chr(34) & ">" & Anos.Fields("AnoPedido")& "</OPTION>"

68            Anos.MoveNext 

69        Loop

70        %>

71        </SELECT>

72        <FONT color=White style="BACKGROUND-COLOR: navy">

73        <B>

74        <HR>

75        O campo endereço deve conter ?

76        <INPUT id=pesqend name=pesqend type=radio value=Sim>Sim

77        <INPUT CHECKED id=pesqend name=pesqend type=radio value=Nao>Não

78        <BR>

79        Digite parte do endereço:</FONT></B></FONT>

80        <INPUT type="text" id=partend name=partend size=25 maxlength=25>

           

81        <HR>

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

83        </FORM>

84        </BODY>

85        </HTML>

Observe que mais uma vez as listas com os nomes dos países e com  alista de Anos, para os quais existem pedidos, foram construídas dinamicamente, a partir dos dados da tabela Orders. Ao construir as listas dinamicamente, evitamos que o usuário tente pesquisar, por exemplo, os pedidos para um país que não existe na tabela Orders. Com isso o usuário não perde tempo e faz as pesquisas apenas para os países para os quais realmente existem pedidos cadastrados. O mesmo é válida para a lista com os anos para os quais existem pedidos cadastrados.

O próximo passo é construir a página pesquisa.asp. Esta página ira montar uma instrução SQL de acordo com as opções selecionadas pelo usuário na página geral.asp. Por exemplo, se o usuário marcar sim somente para a lista de países e selecionar Argentina na lista, a página pesquisa.asp terá que montar uma instrução SQL que pesquisa a tabela Orders e retorna somente os pedidos em que o campo ShipCountry for igual a Argentina.

Então vamos a construção da página pesquisa.asp. O ponto central da página pesquisa.asp é a montagem da instrução SQL com base nas opções selecionadas pelo usuário. O usuário possui três opções para definir parâmetros de pesquisa:

  • País
  • Data
  • Endereço.

O usuário poderá selecionar uma ou mais destas opções. Com isto teremos oito possibilidades a serem consideradas, as quais são:

  • O usuário está pesquisando apenas pelo nome do país.
  • O usuário está pesquisando apenas pelo ano da data do pedido.
  • O usuário está pesquisando apenas pelo endereço ou parte do endereço.
  • O usuário está pesquisando pelo nome do país e pelo ano da data do pedido.
  • O usuário está pesquisando pelo nome e pelo endereço ou parte do endereço.
  • O usuário está pesquisando pelo ano da data do pedido e pelo endereço ou parte do endereço.
  • O usuário está pesquisando com base nos três critérios.
  • O usuário não especificou nenhum critério de pesquisa.

A página pesquisa.asp terá que analisar estas oito possibilidades e montar uma instrução SQL diferente para cada uma delas.

Na Listagem 7.9, temos o código para a página pesquisa.asp.

Listagem 7.9 – O formulário para definição dos critérios de pesquisa – pesquisa.asp.

1          <%@ Language=VBScript %>

2          <HTML>

3          <HEAD>

4          <TITLE>Resultado da pesquisa ! </TITLE>

5          </HEAD>

6          <BODY bgColor=silver>

           

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 passamos a analisar cada uma das oito possibilidades.

           

17        '**************************************************

18        'A primeira possibilidade é o caso em que o usuário

19        'selecionou apenas um país na lista de países.

           

20        If (Request.Form("pesqpais")="Sim" And Request.Form("pesqano")="Nao" And

            Request.Form("pesqend")="Nao") Then

21          inst_sql="Select * from orders where ShipCountry='" & Request.Form("listapaises") & "'"

22          Response.Write "Você pesquisou pelo critério País = <B>" & Request.Form("listapaises")              & "</B><HR>"

23        End If

           

24        '**************************************************

25        'A segunda possibilidade é o caso em que o usuário

26        'selecionou apenas um ano na lista de anos.

           

27        If (Request.Form("pesqpais")="Nao" And Request.Form("pesqano")="Sim" And

            Request.Form("pesqend")="Nao") Then

28           inst_sql="Select * from orders where Year(OrderDate)=" & Request.Form("listaano")

29           Response.Write "Você pesquisou pelo critério Ano = <B>" & Request.Form("listaano")    & "</B><HR>"

30        End If

           

31        '**************************************************

32        'A terceira possibilidade é o caso em que o usuário

33        'digitou um critério para pesquisar no endereço.

           

34        If (Request.Form("pesqpais")="Nao" And Request.Form("pesqano")="Nao" And             Request.Form("pesqend")="Sim") Then

35           inst_sql="Select * from orders where ShipAddress Like '%" & Request.Form("partend")                & "%'"

36           Response.Write "Você pesquisou pelo critério Endereço contendo: <B>" &                                    Request.Form("partend") & "</B><HR>"

37        End If

           

38        '**************************************************

39        'A quarta possibilidade é o caso em que o usuário

40        'selecionou um país na lista de países e também

41        'selecionou um ano na lista de anos.

           

42        If (Request.Form("pesqpais")="Sim" And Request.Form("pesqano")="Sim" And             Request.Form("pesqend")="Nao") Then

43           inst_sql="Select * from orders where ShipCountry='" & Request.Form("listapaises") & "'               and Year(OrderDate)=" & Request.Form("listaano")

44           Response.Write "Você pesquisou pelos seguintes critérios <BR>"

45           Response.Write "País = <B>" & Request.Form("listapaises") & "</B><BR>"

46           Response.Write "Ano  = <B>" & Request.Form("listaano") & "</B><BR><HR>"

47        End If

           

48        '**************************************************

49        'A quinta possibilidade é o caso em que o usuário

50        'selecionou um país na lista de países e também

51        'digitou um critério para pesquisar no endereço.

           

52        If (Request.Form("pesqpais")="Sim" And Request.Form("pesqano")="Nao" And             Request.Form("pesqend")="Sim") Then

53           inst_sql="Select * from orders where ShipCountry='" & Request.Form("listapaises") & "'               and ShipAddress Like '%" & Request.Form("partend")& "%'"

54           Response.Write "Você pesquisou pelos seguintes critérios <BR>"

55           Response.Write "País = <B>" & Request.Form("listapaises") & "</B><BR>"

56           Response.Write "Endereço contendo:<B>" & Request.Form("partend") &                                       "</B><BR><HR>"

57        End If

           

58        '**************************************************

59        'A sexta possibilidade é o caso em que o usuário

60        'selecionou um ano na lista de anos e também

61        'digitou um critério para pesquisar no endereço.

           

62        If (Request.Form("pesqpais")="Nao" And Request.Form("pesqano")="Sim" And             Request.Form("pesqend")="Sim") Then

63           inst_sql="Select * from orders where Year(OrderDate)=" & Request.Form("listaano") & "              and ShipAddress Like '%" & Request.Form("partend")& "%'"

64           Response.Write "Você pesquisou pelos seguintes critérios <BR>"

65           Response.Write "Ano  = <B>" & Request.Form("listaano") & "</B><BR>"

66           Response.Write "Endereço contendo:<B>" & Request.Form("partend") &                                       "</B><BR><HR>"

67        End If

           

68        '**************************************************

69        'A sétima possibilidade é o caso em que o usuário

70        'não selecionou nenhum dos três critérios.

                       

71        If (Request.Form("pesqpais")="Nao" And Request.Form("pesqano")="Nao" And             Request.Form("pesqend")="Nao") Then

72           inst_sql="Select * from orders"

73           Response.Write "Você não especificou nenhum critério. <BR>"

74           Response.Write "Foram retornados todos os registros.<HR>"

75        End If

           

76        '**************************************************

77        'A oitava possibilidade é o caso em que o usuário

78        'selecionou os três critérios

                       

79        If (Request.Form("pesqpais")="Sim" And Request.Form("pesqano")="Sim" And             Request.Form("pesqend")="Sim") Then

80           inst_sql="Select * from orders where Year(OrderDate)=" & Request.Form("listaano") & "              and ShipAddress Like '%" & Request.Form("partend")& "%' and ShipCountry='" &                     Request.Form("listapaises") & "'"

81           Response.Write "Você pesquisou pelos seguintes critérios <BR>"

82           Response.Write "País = <B>" & Request.Form("listapaises") & "</B><BR>"

83           Response.Write "Ano  = <B>" & Request.Form("listaano") & "</B><BR>"

84           Response.Write "Endereço contendo:<B>" & Request.Form("partend") &                                       "</B><BR><HR>"

85        End If

           

                       

86        'Agora criamos um Objeto RecordSet.

           

87        Set Pedidos = Server.CreateObject("ADODB.Recordset")

           

88        Pedidos.Open inst_sql, conn, 3, 3

       

89        'Neste ponto tenho o objeto RecordSet com

90        'os resultados da pesquisa.

           

91        '*************************************************

92        'Passo a exibir os resultados obtidos.

93        Response.Write "<B>Foram Encontrados : " & Pedidos.RecordCount & "    Registros</B><HR>"

94        %>

95        <A HREF="geral.asp">Clique aqui para fazer outra pesquisa.</A>

96        <HR>

97        <TABLE BORDER=1>

           

98        <TR>

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

100        <TD><B>Data    </B></TD>

101        <TD><B>Endereço</B></TD>

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

103      </TR>

           

104      <%

           

105      Do While Not Pedidos.EOF

           

106      %>

           

107      <TR>

108        <TD><% =Pedidos.Fields("OrderID")    %></TD>

109        <TD><% =Pedidos.Fields("OrderDate")  %></TD>

110        <TD><% =Pedidos.Fields("ShipAddress")%></TD>

111        <TD><% =Pedidos.Fields("ShipCountry")%></TD>

112      </TR>

113      <%

114      Pedidos.MoveNext

115      Loop

116      %>

117      </TABLE>

                                  

118      </BODY>

119      </HTML>

Observe que a página pesquisa.asp não tem nada de especial. Apenas testamos as oito possibilidades descritas anteriormente. Para cada uma das possibilidades montamos a instrução SQL correspondente e informamos os critérios de pesquisa especificados pelo usuário.

Utilizando o nosso formulário de pesquisa.

Agora vamos demonstrar a utilização do nosso formulário genérico para pesquisas na tabela Orders.

Na Figura 7.28 temos um exemplo onde o usuário apenas definiu um país como critério, no casso o país selecionado foi Austria.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.28 Pesquisando os pedidos para a Austria.

Ao clicar no botão Pesquisar, são obtidos os resultados indicados na Figura 7.29. Observe que foram encontrados 40 registros para a Austria.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.29 Listagem de pedidos para a Austria.

Agora vamos clicar no link “Clique aqui para fazer outra pesquisa”, com isso voltaremos para a página geral.asp, onde poderemos definir outros critérios de pesquisa.

Vamos refinar um pouco mais a nossa pesquisa. Selecione Austria na lista país e 1994 na lista de Anos. Não esqueça de marcar a opção Sim ao lado de cada critério selecionado, caso contrário o critério será ignorado. O formulário de pesquisa deverá estar igual ao indicado na Figura 7.30.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.30 Pesquisando os pedidos para a Austria no ano de 1994.

Ao clicar no botão Pesquisar, são obtidos os resultados indicados na Figura 7.31. Observe que foram encontrados 5 registros para a Austria no ano de 1994.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.31 Listagem de pedidos para a Austria no ano de 1994.

Agora vamos fazer uma pesquisa envolvendo os três critérios. Vamos definir os seguintes critérios:

  • País: Brazil
  • Ano: 1994
  • Endereço contendo: Rua

Clique no link “Clique aqui para fazer outra pesquisa”, com isso voltaremos para a página geral.asp. Defina os critérios de pesquisa conforme indicado na Figura 7.32.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.32 Pesquisando os pedidos para a Brazil no ano de 1994 e com o endereço contendo a palavra Rua.

Ao clicar no botão Pesquisar, são obtidos os resultados indicados na Figura 7.33. Observe que foram encontrados 6 registros para a Brazil no ano de 1994, com o endereço contendo a palavra Rua.

Curso Completo de ASP 3.0 - Júlio Battisti
Figura 7.33 Listagem de pedidos para Brazil no ano de 1994, com o endereço contendo a palavra Rua.

Veja que através deste exemplo, conseguimos criar um formulário de pesquisa extremamente versátil. Podemos definir de um a três critérios de pesquisa, além de definir o valor para cada critério. Este exemplo demonstra as possibilidades na utilização de ASP para a construção de sites dinâmicos.


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