VB .NET - Criando uma aplicação Windows Completa V


Na primeira parte deste artigo -  VB 2005 - Criando uma aplicação Windows Completa I - definimos o escopo da nossa aplicação e criamos a primeira parte da interface usando os controles SplitContainer, ToolStrip, MenuStrip e StatusStrip.

Continuando com nossa tarefa este artigo irá mostrar como podemos armazenar as informações obtidas via WebService em um banco de dados local e como visualizá-las sem estar conectado na internet.

Se executarmos nossa aplicação iremos obter o resultado conforme mostrado na figura abaixo.

No artigo VB 2005 - Criando uma aplicação Windows Completa II criamos a base de dados amazon.mdf e os objetos de acesso aos dados que iremos usar. Apenas para lembrar os objetos criados foram: LivrosTableAdapter(representa um TableAdapter)  , LivrosBindingSource(representa um BindingSource)LivrosBindingNavigator( representa um BindingNavigator) e  AmazonDataSet (representa um dataset)

Já temos pois a base de dados pronta com seus campos definidos só nos resta então salvar os dados obtidos via WebService na tabela livros e para fazer isto iremos escrever as rotinas que realizarão esta tarefa. Para isto já temos o botão - Incluir Título - no formulário de forma que ao clicar neste botão os dados serão salvos no banco de dados local; mas queremos ir além, permitindo que o usuário possa modificar as informações que estão sendo exibidas no formulário antes de salvá-las no banco de dados. Vejamos como fazer isto...

1- Primeiro vamos incluir o código no evento Click do botão - Incluir Título - para isto clique duas vezes sobre o botão no formulário do projeto e inclua o seguinte código:

Private Sub btnIncTitulo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncTitulo.Click

    incluirLivro()

End Sub

A rotina incluirLivro() será responsável por gravar os detalhes das informações dos livros no banco de dados local : amazon.mdf. A rotina primeiro converte a imagem exibida no controle PictureBox em um array de bytes. O novo registro é então salvo no banco de dados usando o controle LivrosTableAdapter criado anteriormente no artigo II. O código completo da rotina fica assim:

Private Sub incluirLivro()

Try

    Dim ms As New System.IO.MemoryStream()

   picCover.Image.Save(ms, picCover.Image.RawFormat)

   Dim coverImage() As Byte = ms.GetBuffer

   ms.Close()

   LivrosTableAdapter.Insert(lblISBN.Text, txtTitle.Text, txtAuthors.Text, txtPublisher.Text, txtPrice.Text, coverImage)

   ToolStripStatusLabel1.Text += "Incluído"

Catch ex As Exception

    exibirMensagemErro("Erro ao incluir livro.")

End Try

End Sub

Inserindo dados com TableAdapter: (conforme MSDN Wiki)

Os TableAdapters fornecem maneiras diferentes para inserir novos registros em um banco de dados, dependendo dos requisitos do seu aplicativo.

Para inserir novos registros em um banco de dados você pode usar o método
TableAdapter.Update, ou um dos métodos DBDirect do TableAdapter (especificamente o método TableAdapter.Insert).

Obs: Se seu aplicativo não usar o TableAdapters, você pode usar objetos Command para interagir e inserir novos registros no banco de dados.

Use o método TableAdapter.Update quando seu aplicativo usar datasets para armazenar dados. O método Update envia todas as alterações (atualizações, inserções, e exclusões) para o banco de dados.

Use o método TableAdapter.Insert quando seu aplicativo usar objetos para armazenar dados, ou quando você desejar exercer um controle mais fino sobre a criação de novos registros no banco de dados.

Se seu TableAdapter não tiver um método Insert, significa que ou o TableAdapter está configurado para usar procedimentos armazenados ou sua propriedade GenerateDBDirectMethods está definida como false.

Tente definir a propriedade true do TableAdapter para GenerateDBDirectMethods a partir do Dataset Designer e então salve o dataset para regenerar o TableAdapter.

Se o TableAdapter ainda não tem um método
Insert
, então a tabela provavelmente não está fornecendo informações de esquema suficientes para distinguir entre linhas individuais (por exemplo, nenhuma chave primária está definida na tabela).

Se o seu aplicativo utiliza datasets para armazenar dados, você pode simplesmente adicionar novos registros para o DataTable  desejado no dataset, e em seguida, chamar o método TableAdapter.Update. O método TableAdapter.Update toma quaisquer alterações no DataTable e envia essas alterações ao banco de dados (incluindo registros excluídos e modificados).

Para saber mais leia o artigo :  VB.NET - Tratando meus dados com métodos TableAdapter

Outra  novidade no código acima é o controle ToolStripStatusLabel1 que incluímos no controle StatusStrip para exibir a mensagem de inclusão de livro no formulário. Neste ponto temos que o controle LivrosTableAdapter usa os recursos da ADO.NET para salvar os dados no banco de dados local.

Após salvar as informações vamos precisar de um novo  formulário para poder exibi-las em nossa aplicação local.  Vamos incluir no botão - Ver Catálogo - já criado no nosso formulário uma chamada a um novo formulário que iremos chamar de Catálogo. Para isso vamos usar o assistente de configuração Data Source e dois controles : DataGridView e BindingNavigator. Vamos a trabalho:

I- Para criar uma nova janela de Catálogo para exibir as informações salvas, vamos incluir um outro formulário na aplicação. Clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add e a seguir New Item. A seguir selecione o template Windows Forms e informe o nome frmcatalogo.vb;

II- Altere a propriedade Text  do formulário para : Catálogo de livros;

III- Vamos agora vincular o formulário frmcatalogo.vb ao formulário principal, para isto inclua o seguinte código no evento Click do botão - Ver Catálogo :

Private Sub btnVerCatalogo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerCatalogo.Click

frmcatalogo.ShowDialog()

End Sub

Quando o usuário clicar neste botão o formulário será exibido.

Vamos agora usar novamente as características de vinculação de dados do VB 2005 para exibir todos os registros de uma tabela do banco de dados no novo formulário adicionado ao projeto.

1- No menu Data , selecione a opção Show Data Sources. Você verá na janela Data Sources os data sources existentes na aplicação;

2- A seguir expanda o data source AmazonDataSet e altere o modo de vinculação da tabela livros para DataGridView:

3-Agora arraste e solte a tabela livros da janela Data Sources para o formulário frmcatalogo.vb. Você verá que um controle DataGridView e um controle DataBindingNavigator serão criados automaticamente. No menu de tarefas do DataGridView marque a caixa de verificação Enable Column Reordering de maneira a permitir que os usuários possam ordenar as linhas do catalogo de livros pelos campos:

4- Volte a janela Data Sources e selecione no data source amazonDataSet a tabela livros alterando o modo de vinculação para Details. A seguir arraste e solte a tabela livros no formulário e ajuste o leiaute conforme a figura abaixo:

Para encerrar inclua um botão - Fechar - no canto inferior direito do formulário acima de forma que quando o usuário clicar neste botão o formulário seja fechado. Dê ao botão o nome btnFechar a altere sua propriedade Text para - Fechar. Finalmente inclua o código abaixo no evento Click deste botão:

Private Sub btnFechar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFechar.Click

Close()

End Sub

Como último detalhe altere a propriedade SizeMode do controle PictureBox - para AutoSize.

Vamos testar ?

Execute a aplicação , informe um critério de busca. Você verá as informações dos livros obtidas do WebService da Amazon no formulário. Selecione um item da listagem e clique no botão - Incluir Título. Neste momento estas informações serão salvas na tabela livros do banco de dados local amazon.mdf. Agora clique no botão- Ver Catalogo - e o formulário frmcatalogo ira exibir as informações do banco de dados local no DataGridView e nos controles do formulário.

Conclusão : Não é que funciona mesmo !!!

Aguarde a última parte deste artigo (ainda não disponível) : VB 2005 - Criando uma aplicação Windows Completa VI -   onde iremos mostrar como distribuir a nossa aplicação usando o VB 2005.

Até mais ver...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti