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: PrincipalArtigosNet : Webservices006
Quer receber novidades e e-books gratuitos?

Sistema de Enquetes baseado em WebServices –Parte VI

Olá pessoal,

Hoje finalmente concluiremos nosso sistema. Nesta etapa iremos apenas criar o serviço que armazenará o voto do participante, bem como a interface que consumirá este serviço.

Abra o VS .Net 2003 , e no projeto Enquetes, abra o arquivo VisualizarEnquete.aspx.

Arraste um controle de validação do tipo RequiredFieldValidator:

Configure as seguintes propriedades:

ErrorMessage=É necessário escolher uma das alternativas

ControlToValidate=rdItens

Isto impedirá a possibilidade de voto sem escolher alguma das alternativas.

Clique uma vez apenas no Button btnResultado. Vá na guia de propriedades e na propriedade CausesValidation marque false. Isto é para que seja possível visualizar o resultado sem escolher uma das alternativas.

Agora, abra o arquivo que contém nossos WebServices, o arquivo EnqueteService.asmx.

Vamos implementar o código que armazenará o voto. Para isso, toda vez que este serviço for implementado, será necessário passar o IDItem como parâmetro. Digite o código conforme segue abaixo:

      public bool AddVoto(int IDItem)

            {

                  //Instancia um novo objeto OleDbCommand

                  OleDbCommand OleDbCmd=new OleDbCommand();

                  //Indica o tipo de comando

                  OleDbCmd.CommandType=CommandType.Text;

                  //string que fará a adição de mais um voto

                  OleDbCmd.CommandText="Update TbItens set Votos=Votos+1 where IDItem=" + IDItem + "";

                  //Indica qual a conexão a ser usada

                  OleDbCmd.Connection=Conexao;

                  //Abre a conexão

                  Conexao.Open();

                  //Executa o comando

                  try

                  {

                        OleDbCmd.ExecuteNonQuery();

                        return true;

                  }

                        //Caso ocorra uma excessão retorna falso

                  catch(OleDbException)

                  {

                        return false;

                  }

                        //Encerra a conexão idependente do erro

                  finally

                  {

                        Conexao.Close();

                        Conexao.Dispose();

                  }

A novidade para nós está no tratamento de erros através dos blocos Try, Catch e Finally. Em um próximo tutorial abordaremos este tema com mais ênfase.

Vejam que nosso serviço não retornará nenhum dado do banco de dados, mas retornará um valor do tipo verdadeiro ou falso para facilitar a execução do código.

Ótimo, agora implementaremos o serviço no arquivo VisualizarEnquete.aspx.

No evento Click do btnVotar, digite o seguinte código, conforme mostrado abaixo:

private void btnVotar_Click(object sender, System.EventArgs e)

            {

                  //Verifica se o cookie Enquetes existe

                  if(Request.Cookies["Enquetes"]==null)

                  {

                        //Caso não exista cria uma nova instância do serviço

                        localhost.EnqueteService es=new Enquetes.localhost.EnqueteService();

                        //Adiciona e ao mesmo tempo verifica se o voto foi adicionado

                        if(es.AddVoto(Convert.ToInt32(rdItens.SelectedValue)))

                        {

                             //Cria um Cookie que impede que o usuário vote mais de uma vez

                             Response.Cookies["Enquetes"].Value="Gravado";

                             //Indica que o Cookie expirará em 1 dia

Response.Cookies["Enquetes"].Expires=System.DateTime.Now.AddDays(1);

                             //Emite a resposta ao usuário através da caixa de diálogo do JavaScript

                             Response.Write("<script>alert('Voto Computado!Obrigado por participar!')</script>");

                        }

                       

                  }

                        //Caso o cookie já exista

                  else

                  {

                        //Emite a resposta ao usuário através da caixa de diálogo do JavaScript

                        Response.Write("<script>alert('Você já votou nesta enquete!')</script>");

                  }

            }

Vejam que o código é bem simples. Vejam que quando é executado o código para a inclusão de um novo voto, ao mesmo tempo é verificado seu retorno (true/false), isto porque criamos um serviço do tipo Bool.

Outra questão importante é que criamos um Cookie para assegurarmos de que o usuário não votará mais de uma vez. É claro que se ele excluir os cookies de sua máquina será possível votar, mas pelo menos estamos impedindo que ele clique várias vezes no botão, votando sequencialmente sem parar.

O cookie foi configurado para expirar em um dia. Isto é opcional, depende de quanto em quanto tempo as enquetes serão publicadas no site.

Vamos aos nossos testes:

Tentativa de votar sem escolher um item...

Voto computado...

Nova tentativa de voto, mas sem sucesso...

Exibição do gráfico...

Pois é pessoal, concluímos aqui nosso tutorial. É claro que este sistema pode melhorar, e você é bem capaz de fazer isso.

Espero que tenham gostado e que seja muito útil para a comunidade desenvoldedora.

Um abraço e até mais,

Lano de Castro

1 Visão geral do .NET Framework e do CLR
1 Comunicação .NET e VB 6.0 (com Visual Studio.NET 2005) - Parte I
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 1
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 2
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 3
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 4
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 5
1 VB: Menu Principal, Menu PopUp e Arquivos Texto
Visual Studio
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control
1 Visual Web Developer - 2005 - Beta 2 - Introdução
1 ASP.NET 2.0 - Conhecendo o GridView
1 ASP.NET 2.0 - Utilizando o GridView e DetailsView
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control - Parte 2
1 ASP.NET 2.0 - Utilizando o XmlDataSource
1 Envio de e-mail através de formulário web
1 ADO.NET 2.0 - Conhecendo as novidades parte 1
1 Série Visual Source Safe - Parte 1
1 Série Visual Source Safe - Parte 3
1 URL Indexável – Reescrever URL de uma forma amigável
1 Permissão de Página Utilizando Web.Config
1 Usando public interface
1 Trabalhando com o componente TabContainer
1 Adicionando Menu no DataGridView
ASP.NET
1 Conhecendo o ambiente integrado do WebMatrix
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte I
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte II
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte III
1 Acessando um banco de dados facilmente com ADO.Net e Datagrid
1 Desvendando os segredos do Dataset- Parte I
1 Construindo um Sistema de Publicação de Notícias – Parte 1
1 Construindo um Sistema de Publicação de Notícias – Parte 2
1 Construindo um Sistema de Publicação de Notícias – Parte 3
1 Construindo um Sistema de Publicação de Notícias – Parte 4
1 Construindo um Sistema de Publicação de Notícias – Parte 5
1 Login com Perfil de Acesso
1 Guest Book com XML - Parte 1
1 Guest Book com XML - Parte 2
1 Agendando Datas no Calendário com XML
1 Filtrando e Organizando Dados com o Controle DataView
1 Lista de Dados com Subitens – Parte 1
1 Lista de Dados com Subitens – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 1
1 Trabalhando com Arquivos e Diretórios – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 3
1 Sistema de Enquetes baseado em WebServices – Parte 1
1 Sistema de Enquetes baseado em WebServices – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 3
1 Upload de Arquivos
1 Crie seu próprio código de verificação
1 Login e Senha com FormsAuthentication – Parte 1
1 Login e Senha com FormsAuthentication – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 4
1 Sistema de Enquetes baseado em WebServices – Parte 5
1 Sistema de Enquetes baseado em WebServices – Parte 6