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

FILTRO DE TUTORIAIS:


 

Sistema de Enquetes baseado em WebServices –Parte IV

 

Olá pessoal,

 

Chegamos a quarta etapa do nosso tutorial, agradeço a todos que têm lido e aprendido com este material. Nos primeiros tutoriais desta série, aprendemos a implementar e consumir um WebService. Por isso, se você ainda têm dúvidas sobre isso, é melhor que leia novamente a parte I,II, e III.

 

Hoje trabalharemos com WebServices retornando DataSets. Começaremos a desenvolver o código que exibe uma determinada enquete e seus itens, e também já implementaremos uma interface de exibição destes dados.

 

Abra o projeto Enquetes que já havíamos criado anteriormente.

 

 

Adicione um novo arquivo ao projeto do tipo WebService, e dê a ele o nome de EnqueteServices.asmx:

 

 

Clique no botão ViewCode para exibir o código do arquivo.

 

Vamos criar agora o serviço ObterEnquete, na qual irá selecionar uma das enquetes cadastradas no banco de dados e também selecionará seus itens. Estes dados serão armazenados em um DataSet com duas tabelas. Deverá ser passado o parâmetro IDEnquete. Para isso, digite o código conforme está abaixo:

 

//Descrição do serviço

            [WebMethod(Description="Seleciona a enquete através de um parâmetro de identificação")]

                  //Assinatura do método, passando o parâmetro IDEnquete

            public DataSet ObterEnquete(int IDEnquete) {

                  //Cria o adaptador de dados para obter a enquete

            OleDbDataAdapter OledbAdp1=new OleDbDataAdapter("Select IDEnquete,Pergunta from TbEnquetes where IDEnquete=" + IDEnquete + "",Conexao);

 

                  //Cria o adaptador de dados para obter os itens da enquete selecionada

            OleDbDataAdapter OledbAdp2=new OleDbDataAdapter("Select IDItem,Texto,Votos from TbItens where IDEnquete=" + IDEnquete + "",Conexao);

 

                  //Cria o DataSet

                  DataSet dsEnquetes=new DataSet();

 

                  //Anexa os dados dos adaptadores em tabelas do Dataset

                  OledbAdp1.Fill(dsEnquetes,"Enquete");

                  OledbAdp2.Fill(dsEnquetes,"Itens");

 

                  //Retorna o DataSet

                  return dsEnquetes;

 

            }

 

Um detalhe importante neste código é que a conexão não foi criado neste trecho. Mas por quê?

 

Bem, como vamos utilizar esta mesma conexão em todos os serviços. Declaramos esta conexão como pública. Então faça esta declaração em seu código logo após a declaração da classe:

 

public class EnqueteService : System.Web.Services.WebService {

            //Cria a conexão a ser utilizada no projeto

            public OleDbConnection Conexao=new

OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data

source=E:/SistemaDeEnquetes.mdb");

 

Lembre-se: digite somente o trecho referente ao objeto OleDbConnection, pois a declaração da classe já havia sido feita automaticamente

 

No método ObterEnquete não encontramos muitas novidades, a não ser na utilização de dois DataAdapters no mesmo DataSet. Como o DataSet é uma estrutura de Base de Dados ele permite a inclusão de várias tabelas, por isso, não houve a necessidade de criar mais um DataSet. Vamos fazer o teste do WebService, mas antes disso é necessário incluir pelo menos uma enquete no banco de dados e seus itens. Abra o banco de dados e faça isso, se quiser pode utilizar o meu exemplo:

 

 

Cadastrando a enquete...

 

 

Cadastrando os itens...

 

Agora vou executar o WebService e informar o valor 1 para o parâmetro IDEnquete:

 

 

Exibindo os serviços disponíveis...

 

 

Selecionando o serviço ObterEnquete e passando o valor do parâmetro IDEnquete...

 

 

Resultado do serviço...

 

Ok, vejam que os resultados foram retornados. Isso significa que sua enquete já pode ser visualizada. Então vamos construir agora a interface que consumirá este serviço.

 

Adicione um novo arquivo do tipo WebForm e dê a ele o nome VisualizarEnquete.aspx

 

 

Defina o Set StartPage para este arquivo:

 

 

Agora, conforme o modelo abaixo insira os seguintes WebControls:

 

 

Panel – Apenas para a organização dos elementos.

 

DataList – ID=dlEnquete

 

RadioButtonList – ID=rdItens

 

Button –ID=btnResultado – Text=Ver Resultado

 

Button – ID=btnVotar – Text=Votar

 

Vamos agora configuar o DataList para que ele exiba a pergunta da enquete.

 

Clique com o botão direito sobre o dlEnquete, vá em Edit Templates >Item Templates

 

 

Arraste um Label para a região ItemTemplate. Selecione o Label e na caixa de propriedades clique na opção DataBindings

 

 

Na parte da direita da tela que se abriu, expanda o item Container e clique em DataItem:

 

 

Marque a opção Custom binding expression e escreva a expressão conforme a imagem abaixo:

 

 

Ok, agora vamos saía da edição do templates do DataList. Vamos fazer referência ao serviço no qual iremos consumir. Clique com o  botão direito sobre o projeto e escolha Add Web Reference....Caso não saiba como fazer a referência, leia o tutorial anterior a este.

 

 

Vejam dei o nome localhost como referência ao meu serviço.

 

Clique no botão view Code para visualizarmos o código do arquivo VisualizarEnquete.aspx

 

Vamos criar o método que exibirá a enquete. Digite o código abaixo:

 

private void MostrarEnquete(int IDEnquete)

            {

                  //Cria a instãncia do serviço

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

                  //Anexa ao DataList o conteúdo da tabela Enquete que está no DataSet do WebService

                 dlEnquete.DataSource=es.ObterEnquete(IDEnquete).Tables["Enquete"];

                  dlEnquete.DataBind();

                  //Anexa ao RadiobuttonList o conteúdo que está na tabela Itens do DataSet

                  rdItens.DataTextField="Texto";

                  rdItens.DataValueField="IDItem";

                  rdItens.DataSource=es.ObterEnquete(IDEnquete).Tables["Itens"];

                  rdItens.DataBind();

 

            }

 

Viram como foi simples? Em outras tecnologias seria no mínimo necessário o uso de alguns ifs e loops, mas em .Net, seus controles já estão preparados para receber dados em coleções.

 

Não esqueça de chamar este código no PageLoad:

 

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

            {

                  if(!Page.IsPostBack){

                  MostrarEnquete(1);

 

                  }

            }

 

Agora formate sua aplicação, se quiser usem o meu modelo como sugestão:

 

 

Agora vamos aos testes:

 

 

Exibindo a enquete...

 

Faça o teste cadastrando mais enquetes e não esqueça de mudar o parâmetro IDItem:

 

 

Alterando o IDEnquete para mostrar uma outra enquete...

 

Até mais pessoal,

 

No próximo implementaremos a votação  da enquete!

 

Lano de Castro

 

lanodecastro@hotmail.com

 

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-2020 ®

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

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