AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI
| « 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 |
|||
|---|---|---|---|
| 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:
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.
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:
O usuário poderá selecionar uma ou mais destas opções. Com isto teremos oito possibilidades a serem consideradas, as quais são:
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.
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.
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.
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.
Agora vamos fazer uma pesquisa envolvendo os três critérios. Vamos definir os seguintes critérios:
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.
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.
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. |
|||
| « Lição anterior | Δ Página principal | ¤ Capítulos | Próxima lição » |
|
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI (Online, Vitalício, Prático e Atualizado)! |
|
|
NÃO PROCURE VAGAS, SEJA PROCURADO! |
|
Para Todos os Detalhes, Acesse:
https://juliobattisti.com.br/curso-infra-ti.asp
|
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-2026 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI