• Nenhum resultado encontrado

4.6 Desenvolvimento e Codificação do Sistema

4.6.1 Tela Principal

Na Figura 14 observa-se a tela principal do protótipo. Na parte superior da tela, tem-se os menus principais, cada um deles composto por sub-menus. Também na parte superior da tela localiza-se a barra de botões de atalho, que tem por objetivo fornecer acesso rápido aquelas funcionalidades que o usuário utiliza com mais frequência, como por exemplo, Agendamentos, Ficha Animal, Clientes e Vacinas.

Figura 14 – Tela Principal 4.6.2 Classes

A principal classe do projeto foi codificada utilizando os conceitos de orientação a objeto estudados nas disciplinas da graduação.

No desenvolvimento por intermédio da ferramenta Microsoft Visual Basic 2005 Express Edition, os métodos e campos declarados no projeto podem ser private (privados) ou public (públicos).

Primeiramente foi feita a codificação da classe de conexão ao banco de dados. No Quadro 1 apresenta-se como foram declaradas as variáveis e métodos pertencentes à classe de conexão.

Quadro 1 – Código: Classe de Conexão com o Banco de Dados

No Quadro 2 observa-se a implementação de um dos cenários passíveis da refatoração, que permitirá a modificação do código do sistema para melhorar a

Imports System.Data.SqlClient

Imports System.Data

Public Class ConexaoSQLServer

Private ocn As SqlConnection

Private sConexao As String

Public Sub New()

sConexao = "Data Source=.\SQLEXPRESS;Initial Catalog=ShoPetSys;User Id=sa; password=asd123"

ocn = New SqlConnection(sConexao) End Sub

Public Property SqlConnection() As String

Get

Return sConexao End Get

Set(ByVal value As String) sConexao = value

End Set

End Property

Public Property ConexaoSQL() As SqlConnection

Get

Return ocn End Get

Set(ByVal value As SqlConnection) ocn = value

End Set

End Property

Public Sub Abrir()

ocn.Open() End Sub

Public Sub Fechar()

ocn.Close() End Sub

estrutura interna sem alterar o comportamento externo, por meio do encapsulamento de campos, ao gerar os métodos get e set para os atributos de uma classe, fazendo com que sejam atualizadas todas as referências dos atributos em código associados. Cantú (2003) diz que, para uma melhor abordagem orientada a objetos, os dados referentes aos atributos de uma classe, ou como eles são manipulados por ela, podem ser escondidos das outras classes, sob a forma de métodos de acesso.

O conceito nomeado como encapsulamento é utilizado na POO, por exemplo, para limitar o risco de gerar situações inválidas e permite ao autor da classe obter um código-fonte claro e de fácil manutenção, podendo modificar sua representação interna em uma versão futura.

Neste mesmo quadro são apresentadas as funções que possuem os métodos referentes à inserção, edição, exclusão e listagem das informações contidas no banco de dados. As demais classes do protótipo seguem o mesmo padrão da apresentada no Quadro 2.

Quadro 2 – Código: Classe Animais

Public Class Animais

Private nCodigo As Integer

Private sNome As String

Private sCor As String

Private dDt_Nasc_Ani As Date

Private nCodRaca As Integer

Private sSexo As String

Private nCodCli As Integer

Private nCodEspecie As Integer

Public Property codAni() As Integer

Get

Return nCodigo End Get

Set(ByVal value As Integer) nCodigo = value

End Set

End Property

Public Property nomeAni() As String

Get

Return sNome End Get

Set(ByVal value As String) sNome = value

End Set

End Property

Public Property cor() As String

Return sCor End Get

Set(ByVal value As String) sCor = value

End Set

End Property

Public Property dt_Nascimento_Ani() As Date

Get

Return dDt_Nasc_Ani End Get

Set(ByVal value As Date) dDt_Nasc_Ani = value End Set

End Property

Public Property codRaca() As Integer

Get

Return nCodRaca End Get

Set(ByVal value As Integer) nCodRaca = value

End Set

End Property

Public Property sexo() As String

Get

Return sSexo End Get

Set(ByVal value As String) sSexo = value

End Set

End Property

Public Property codCli() As Integer

Get

Return nCodCli End Get

Set(ByVal value As Integer) nCodCli = value

End Set

End Property

Public Property codEspecie() As Integer

Get

Return nCodEspecie End Get

Set(ByVal value As Integer) nCodEspecie = value End Set

End Property

Public Function Inserir _

(ByVal pCN As SqlConnection) As Boolean

Dim oCmd As New SqlCommand( _ "Insert Into

"Values(@nomeAni,@cor,@dt_Nascimento_Ani,@codRaca,@sexo,@codCli,@codEspecie)",

pCN)

Dim p1 As New SqlParameter("nomeAni", sNome) Dim p2 As New SqlParameter("cor", sCor)

Dim p3 As New SqlParameter("dt_Nascimento_Ani", Format(dDt_Nasc_Ani,

"dd/MM/yyyy"))

Dim p4 As New SqlParameter("codRaca", nCodRaca) Dim p5 As New SqlParameter("sexo", sSexo)

Dim p6 As New SqlParameter("codCli", nCodCli)

Dim p7 As New SqlParameter("codEspecie", nCodEspecie) With oCmd.Parameters .Add(p1) .Add(p2) .Add(p3) .Add(p4) .Add(p5) .Add(p6) .Add(p7) End With If oCmd.ExecuteNonQuery() = 1 Then Return True Else Return False End If End Function

Public Function Editar _

(ByVal pCN As SqlConnection) As Boolean

Dim oCmd As New SqlCommand( _

"UPDATE Animais set nomeAni = @nomeAni, cor = @cor, " & _

"dt_Nascimento_Ani = @dt_Nascimento_Ani, codRaca = @codRaca, sexo = @sexo, codCli = @codCli, " & _

"codEspecie = @codEspecie where codAni = @codAni", pCN)

Dim p1 As New SqlParameter("nomeAni", sNome) Dim p2 As New SqlParameter("cor", sCor)

Dim p3 As New SqlParameter("dt_Nascimento_Ani", Format(dDt_Nasc_Ani,

"dd/MM/yyyy"))

Dim p4 As New SqlParameter("codRaca", nCodRaca) Dim p5 As New SqlParameter("sexo", sSexo)

Dim p6 As New SqlParameter("codCli", nCodCli)

Dim p7 As New SqlParameter("codEspecie", nCodEspecie) Dim p8 As New SqlParameter("codAni", nCodigo)

With oCmd.Parameters .Add(p1) .Add(p2) .Add(p3) .Add(p4) .Add(p5) .Add(p6) .Add(p7) .Add(p8)

If oCmd.ExecuteNonQuery() = 1 Then Return True Else Return False End If End With End Function

Public Function Excluir _

(ByVal pCN As SqlConnection) As Boolean

Dim oCmd As New SqlCommand( _

"Delete from Animais where codAni = @codAni", pCN)

Dim p1 As New SqlParameter("codAni", nCodigo) With oCmd.Parameters .Add(p1) End With If oCmd.ExecuteNonQuery() = 1 Then Return True Else Return False End If End Function

Public Function Listar _

(ByVal pCN As SqlConnection) As DataTable Dim dt As New DataTable

Dim da As New SqlDataAdapter( _

"Select Animais.codAni, Animais.nomeAni, Animais.cor," & _

"Animais.dt_Nascimento_Ani, Animais.codRaca, Animais.sexo,"

& _

"Animais.codCli, Animais.codEspecie from " & _ "(Animais inner join Racas on Animais.codRaca = Racas.codRaca) " & _

"inner join Clientes on Animais.codCli = Clientes.codCli", pCN) da.Fill(dt) Return dt End Function End Class 4.6.3 Cadastros

Cada formulário de cadastro possui sua classe do formulário de interface do banco de dados. A chamada das telas de cadastro é padrão, com cliques nas

opções de menu, além de permitir a inserção de novos registros, edição dos existentes, exclusão e geração de relatório, apresenta na tela os registros contidos no banco de dados na tabela respectiva do cadastro solicitado. Um exemplo de código da chamada de um desses cadastrados pode ser visualizada no Quadro 3.

Quadro 3 – Código: Carrega Cadastro de Animais

Imports System.Data.SqlClient

Public Class FormPai

Private Sub AbreCadastroFichaAnimal()

Dim oForm As New frmCadastro_FichaAnimal oForm.MdiParent = Me

oForm.Show() End Sub

Private Sub btnFichaAnimal_Click(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles btnFichaAnimal.Click AbreCadastroFichaAnimal()

End Sub

Private Sub FichaAnimalToolStripMenuItem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

FichaAnimalToolStripMenuItem.Click

My.Forms.frmCadastro_FichaAnimal.MdiParent = Me

My.Forms.frmCadastro_FichaAnimal.Show() End Sub

End Class

Na Figura 15 apresenta-se uma das telas de cadastro. A tela possui componentes de campo de texto (TextBox) e combos (Combobox) para inserção de informações, a grade (DataGridView) que apresenta e recebe as informações inseridas e os botões (Button), responsáveis pelas operações.

Figura 15 – Exemplo de Tela de Cadastro

Na parte inferior da tela de cadastro se encontram os botões de manipulação dos dados. A classe do formulário pode ser visualizada no Quadro 4.

Quadro 4 – Código: Classe de Manipulação de Informações

Imports System.IO

Imports System.Data.SqlClient

Public Class frmCadastro_Animais

Dim nCodAniCorrente As Integer

Dim sCaminho As String

Private Sub AnimaisBindingNavigatorSaveItem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

AnimaisBindingNavigatorSaveItem.Click Me.Validate()

Me.AnimaisBindingSource.EndEdit()

Me.AnimaisTableAdapter.Update(Me.ShoPetSysDataSet1.Animais) End Sub

Private Sub CarregaCombo_Racas()

Dim oConexao As New ConexaoSQLServer Dim oRacas As New Racas

cmbRaca.DataSource = oRacas.Listar(oConexao.ConexaoSQL) cmbRaca.DisplayMember = "nomeRaca"

cmbRaca.ValueMember = "codRaca"

End Sub

Private Sub CarregaCombo_Especies()

Dim oConexao As New ConexaoSQLServer Dim oEspecies As New Especies

cmbEspecie.DataSource = oEspecies.Listar(oConexao.ConexaoSQL) cmbEspecie.DisplayMember = "nomeEspecie"

cmbEspecie.ValueMember = "codEspecie"

End Sub

Private Sub CarregaCombo_Clientes()

Dim oConexao As New ConexaoSQLServer Dim oClientes As New Clientes

cmbCodCli.DataSource = oClientes.Listar(oConexao.ConexaoSQL) cmbCodCli.DisplayMember = "nomeCli"

cmbCodCli.ValueMember = "codCli"

End Sub

Private Sub frmCadastro_Animais_Load(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles MyBase.Load

'TODO: This line of code loads data into the

'ShoPetSysDataSet1.Animais' table. You can move, or remove it, as needed. Me.AnimaisTableAdapter.Fill(Me.ShoPetSysDataSet1.Animais) CarregaCombo_Racas() CarregaCombo_Especies() CarregaCombo_Clientes() CarregaGridAnimais() End Sub

Private Sub CarregaGridAnimais()

Dim oConexao As New ConexaoSQLServer Dim oAnimais As New Animais

AnimaisDgv.DataSource = _ oAnimais.Listar(oConexao.ConexaoSQL) FormataGridAnimais() txtCodAni.Clear() txtNomeAni.Clear() txtCor.Clear() cmbRaca.SelectedValue = 0 cmbSexo.Text = "" cmbCodCli.SelectedValue = 0 cmbEspecie.SelectedValue = 0

End Sub

Private Sub CadastroAnimais()

Dim oAnimais As New Animais

Dim oConexao As New ConexaoSQLServer

'EXECUTANDO METODO SET das PROPRIEDADES DO OBJETO oAnimais.nomeAni = txtNomeAni.Text oAnimais.cor = txtCor.Text oAnimais.dt_Nascimento_Ani = dtNascimento.Value oAnimais.codRaca = cmbRaca.SelectedValue oAnimais.sexo = cmbSexo.Text oAnimais.codCli = cmbCodCli.SelectedValue oAnimais.codEspecie = cmbEspecie.SelectedValue oConexao.Abrir() If oAnimais.Inserir(oConexao.ConexaoSQL) Then

MsgBox("Animal cadastrado com sucesso!") End If

oConexao.Fechar() CarregaGridAnimais() End Sub

Private Sub FormataGridAnimais()

AnimaisDgv.Columns(0).Visible = False

AnimaisDgv.Columns(1).HeaderText = "Nome Animal"

AnimaisDgv.Columns(2).HeaderText = "Cor"

AnimaisDgv.Columns(3).HeaderText = "Data Nascimento"

AnimaisDgv.Columns(4).HeaderText = "Raca"

AnimaisDgv.Columns(5).HeaderText = "Sexo"

AnimaisDgv.Columns(6).HeaderText = "Nome Proprietário"

AnimaisDgv.Columns(7).HeaderText = "Espécie"

End Sub

Private Sub btnInserir_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles btnInserir.Click If nCodAniCorrente = 0 Then CadastroAnimais() Else EditaDadosAnimais() End If CarregaGridAnimais() End Sub

Private Sub EditaDadosAnimais()

Dim oAnimais As New Animais

Dim oConexao As New ConexaoSQLServer oAnimais.nomeAni = txtNomeAni.Text oAnimais.cor = txtCor.Text oAnimais.dt_Nascimento_Ani = dtNascimento.Value oAnimais.codRaca = cmbRaca.SelectedValue oAnimais.sexo = cmbSexo.SelectedValue oAnimais.codCli = cmbCodCli.SelectedValue oAnimais.codEspecie = cmbEspecie.SelectedValue oConexao.Abrir() If oAnimais.Editar(oConexao.ConexaoSQL) Then

End If oConexao.Fechar() CarregaGridAnimais() nCodAniCorrente = 0 btnInserir.Text = "Inserir" End Sub

Private Sub LimparDadosAnimais()

If nCodAniCorrente = 0 Then txtCodAni.Clear() txtNomeAni.Clear() txtCor.Clear() cmbRaca.SelectedValue = 0 cmbSexo.Text = "" cmbCodCli.SelectedValue = 0 cmbEspecie.SelectedValue = 0 End If End Sub

Private Sub PreparaEdicao()

'Jogar os dados do GRID para as TXTBoxes Dim nIndiceLinha As Integer

Dim oConexao As New ConexaoSQLServer

nIndiceLinha = AnimaisDgv.CurrentRow.Index With AnimaisDgv.Rows(nIndiceLinha) nCodAniCorrente = _ .Cells(0).Value txtCodAni.Text = _ .Cells(0).Value txtNomeAni.Text = _ .Cells(1).Value txtCor.Text = _ .Cells(2).Value dtNascimento.Value = _ .Cells(3).Value cmbRaca.SelectedValue = _ .Cells(4).Value cmbSexo.SelectedValue = _ .Cells(5).Value cmbCodCli.SelectedValue = _ .Cells(6).Value cmbEspecie.SelectedValue = _ .Cells(7).Value btnInserir.Text = "Salvar" End With End Sub

Private Sub btnEditar_Click(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnEditar.Click PreparaEdicao()

End Sub

Private Sub SalvarArquivoTexto()

Dim file As FileStream 'Simboliza o trabalho com arquivos.. Dim sw As StreamWriter

Dim oAnimais As New Animais

Dim oConexao As New ConexaoSQLServer Dim sNomeAni As String

Dim sCor As String

Dim sDataNasc As String

Dim sRaca As String

Dim sSexo As String

Dim sNomeCli As String

Dim sResultado As String

'Representa .doc, dizendo que poderá ser aberto ou criado file = New FileStream(sCaminho, _

FileMode.OpenOrCreate, _ FileAccess.Write)

'Objeto que ESCREVE caracteres no FILE (arquivo texto) sw = New StreamWriter(file)

sw.BaseStream.Seek(0, SeekOrigin.End)

sw.WriteLine("***************ANIMAIS***************") sw.WriteLine()

For i As Integer = 0 To AnimaisDgv.Rows.Count - 1 sNomeAni = "NOME ANIMAL: " &

AnimaisDgv.Rows(i).Cells(1).Value

sCor = "COR: " & AnimaisDgv.Rows(i).Cells(2).Value sDataNasc = "DATA NASCIMENTO: " &

AnimaisDgv.Rows(i).Cells(3).Value

sRaca = "RAÇA: " & AnimaisDgv.Rows(i).Cells(4).Value sSexo = "SEXO: " & AnimaisDgv.Rows(i).Cells(6).Value sNomeCli = "NOME PROPRIETÁRIO: " &

AnimaisDgv.Rows(i).Cells(7).Value

sResultado = sNomeAni & vbCrLf & sCor & vbCrLf _

& sDataNasc & vbCrLf & sRaca & vbCrLf & sSexo & vbCrLf & sNomeCli

sw.WriteLine(sResultado) Next

'Para finalizar a operação é necessário FECHAR tanto o objeto que ESCREVE, quanto o DOCUMENTO

sw.Close() file.Close()

MsgBox("Arquivo Criado Com sucesso!", _ MsgBoxStyle.Information)

Private Sub SalvarCaminho()

'determina o filtro da caixa de diálogo que será apresentada... dlgSalvar.Filter = ".txt|*.txt"

'Apresenta a caixa de diálogo e só salva caso o usuário pressionar o botao de OK (Salvar)

If dlgSalvar.ShowDialog() = Windows.Forms.DialogResult.OK Then

sCaminho = dlgSalvar.FileName SalvarArquivoTexto()

End If

End Sub

Private Sub btnExportar_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles btnExportar.Click SalvarCaminho()

End Sub

Private Sub ExcluiAnimais()

Dim oAnimais As New Animais

Dim oConexao As New ConexaoSQLServer Dim nIndiceLinha As Integer

nIndiceLinha = AnimaisDgv.CurrentRow.Index

oAnimais.codAni = AnimaisDgv.Rows(nIndiceLinha).Cells(0).Value If oAnimais.codAni <= 0 Then Exit Sub

oConexao.Abrir()

If oAnimais.Excluir(oConexao.ConexaoSQL) Then

MsgBox("Registro(s) excluído(s)!") End If

oConexao.Fechar() End Sub

Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles btnExcluir.Click ExcluiAnimais()

CarregaGridAnimais() End Sub

'Chama formulário relatório

Private Sub AbreFormularioRel()

Dim oForm As New frmVisual_Relatorio_Animais oForm.Show()

End Sub

'Evento que abre tela do formulário

Private Sub btnRelatorio_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles btnRelatorio.Click AbreFormularioRel()

End Sub

ByVal e As System.EventArgs) PreparaEdicao() End Sub

Private Sub frmCadastro_Animais_Shown(ByVal sender As Object, ByVal e

As System.EventArgs) Handles Me.Shown LimparDadosAnimais()

End Sub

End Class

4.6.4 Lançamentos

O formulário de lançamentos de vendas pode ser acessado tanto pelo menu Financeiro quanto pela barra de botões, que ficam na tela principal do protótipo. Este formulário possui sua classe para acesso às informações contidas no banco de dados. Abaixo, no Quadro 5, é apresentado o código da classe pertencente ao formulário de vendas.

Quadro 5 – Código: Classe do Formulário de Lançamentos de Vendas

Imports System.IO

Imports System.Data.SqlClient

Public Class frmCadastro_Vendas

Dim nCodVendaCorrente As Integer

Dim sCaminho As String

Private Sub VendasBindingNavigatorSaveItem_Click(ByVal sender As

System.Object, ByVal e As System.EventArgs) Handles

VendasBindingNavigatorSaveItem.Click Me.Validate()

Me.VendasBindingSource.EndEdit()

Me.VendasTableAdapter.Update(Me.ShoPetSysDataSet1.Vendas) End Sub

Private Sub CarregaCombo_Produtos()

Dim oConexao As New ConexaoSQLServer Dim oProdutos As New Produtos

cmbProduto.DataSource = oProdutos.Listar(oConexao.ConexaoSQL) cmbProduto.DisplayMember = "nomeProd"

cmbProduto.ValueMember = "codProd"

Private Sub CarregaCombo_Clientes() Dim oConexao As New ConexaoSQLServer Dim oClientes As New Clientes

cmbCliente.DataSource = oClientes.Listar(oConexao.ConexaoSQL) cmbCliente.DisplayMember = "nomeCli"

cmbCliente.ValueMember = "codCli"

End Sub

Private Sub CarregaCombo_TipoPgtoVenda()

Dim dt As New DataTable Dim dr As DataRow

dt.Columns.Add("Nome", GetType(System.String)) dr = dt.NewRow() dr("Nome") = "Dinheiro" dt.Rows.Add(dr) dr = dt.NewRow() dr("Nome") = "Cheque" dt.Rows.Add(dr) dr = dt.NewRow()

dr("Nome") = "Cheque Pré-Datado"

dt.Rows.Add(dr) dr = dt.NewRow() dr("Nome") = "Cartão" dt.Rows.Add(dr) With cmbTipoPgtoVenda .DataSource = dt .DisplayMember = "Nome" .ValueMember = "Nome" .SelectedIndex = 0 End With End Sub

Private Sub CarregaCombo_StatusVenda()

Dim dt As New DataTable Dim dr As DataRow

dt.Columns.Add("Nome", GetType(System.String)) dr = dt.NewRow()

dr("Nome") = "Recebida"

dt.Rows.Add(dr) dr = dt.NewRow()

dr("Nome") = "A Receber"

dt.Rows.Add(dr) With cmbStatusVenda .DataSource = dt .DisplayMember = "Nome" .ValueMember = "Nome" .SelectedIndex = 0 End With End Sub

Private Sub frmCadastro_Vendas_Load(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles MyBase.Load

'TODO: This line of code loads data into the

'ShoPetSysDataSet1.Vendas' table. You can move, or remove it, as needed. Me.VendasTableAdapter.Fill(Me.ShoPetSysDataSet1.Vendas) CarregaCombo_Produtos() CarregaCombo_Clientes() CarregaCombo_TipoPgtoVenda() CarregaCombo_StatusVenda() CarregaGridVendas() End Sub

Private Sub CarregaGridVendas()

Dim oConexao As New ConexaoSQLServer Dim oVendas As New Vendas

dgvVendas.DataSource = oVendas.Listar(oConexao.ConexaoSQL) FormataGridVendas() txtCodVenda.Text = "" cmbProduto.SelectedValue = 0 cmbCliente.SelectedValue = 0 txtValorVenda.Text = "" cmbTipoPgtoVenda.SelectedValue = 0 cmbStatusVenda.SelectedValue = 0 End Sub

Private Sub CadastroVendas()

Dim oVendas As New Vendas

Dim oConexao As New ConexaoSQLServer

'EXECUTANDO METODO SET das PROPRIEDADES DO OBJETO oVendas.codProd = cmbProduto.SelectedValue oVendas.codCli = cmbCliente.SelectedValue oVendas.valorVenda = txtValorVenda.Text oVendas.dataVenda = dtDataVenda.Value oVendas.tipoPgtoVenda = cmbTipoPgtoVenda.SelectedValue oVendas.statusVenda = cmbStatusVenda.SelectedValue oVendas.codVenda = nCodVendaCorrente oConexao.Abrir() If oVendas.Inserir(oConexao.ConexaoSQL) Then

MsgBox("Venda cadastrada com sucesso!") End If

oConexao.Fechar() CarregaGridVendas() End Sub

Private Sub FormataGridVendas()

dgvVendas.Columns(0).Visible = False

dgvVendas.Columns(1).Visible = False

dgvVendas.Columns(2).HeaderText = "Produto"

dgvVendas.Columns(3).Visible = False

dgvVendas.Columns(4).HeaderText = "Cliente"

dgvVendas.Columns(5).HeaderText = "Valor Venda"

dgvVendas.Columns(6).HeaderText = "Data"

dgvVendas.Columns(6).DefaultCellStyle.Format = "dd/MM/yyyy"

dgvVendas.Columns(7).DefaultCellStyle.Format = "00,00"

dgvVendas.Columns(7).HeaderText = "Tipo Pagamento"

dgvVendas.Columns(8).HeaderText = "Status Venda"

End Sub

Private Sub btnInserir_Click(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles btnInserir.Click If nCodVendaCorrente = 0 Then CadastroVendas() Else EditaDadosVendas() End If CarregaGridVendas() btnInserir.Text = "Inserir" End Sub

Private Sub EditaDadosVendas()

Dim oVendas As New Vendas

Dim oConexao As New ConexaoSQLServer

oVendas.codProd = cmbProduto.SelectedValue oVendas.codCli = cmbCliente.SelectedValue oVendas.valorVenda = txtValorVenda.Text oVendas.dataVenda = dtDataVenda.Value oVendas.tipoPgtoVenda = cmbTipoPgtoVenda.SelectedValue oVendas.statusVenda = cmbStatusVenda.SelectedValue oVendas.codVenda = nCodVendaCorrente oConexao.Abrir() If oVendas.Editar(oConexao.ConexaoSQL) Then

MsgBox("Dado(s) da Venda editado(s) com sucesso!") End If oConexao.Fechar() CarregaGridVendas() nCodVendaCorrente = 0 btnInserir.Text = "Inserir" End Sub

Private Sub PreparaEdicao()

'Jogar os dados do GRID para as TXTBoxes Dim nIndiceLinha As Integer

nIndiceLinha = dgvVendas.CurrentRow.Index With dgvVendas.Rows(nIndiceLinha) nCodVendaCorrente = _ .Cells(0).Value txtCodVenda.Text = _ .Cells(0).Value cmbProduto.SelectedValue = _ .Cells(1).Value

cmbCliente.SelectedValue = _ .Cells(3).Value txtValorVenda.Text = _ .Cells(5).Value dtDataVenda.Value = _ .Cells(6).Value cmbTipoPgtoVenda.SelectedValue = _ .Cells(7).Value cmbStatusVenda.SelectedValue = _ .Cells(8).Value btnInserir.Text = "Salvar" End With End Sub

Private Sub dgvVendas_DoubleClick(ByVal sender As System.Object,

ByVal e As System.EventArgs) Handles dgvVendas.DoubleClick

PreparaEdicao() End Sub

Private Sub btnEditar_Click_1(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles btnEditar.Click PreparaEdicao()

End Sub

Private Sub SalvarArquivoTexto()

Dim file As FileStream 'Simboliza o trabalho com arquivos.. Dim sw As StreamWriter

Dim oVendas As New Vendas

Dim oConexao As New ConexaoSQLServer Dim sProduto As String

Dim sCliente As String

Dim nValor As String

Dim dtData As String

Dim sTipoPgtoVenda As String

Dim sStatusVenda As String

Dim sResultado As String

'Representa o .doc, dizendo que poderá ser aberto ou criado file = New FileStream(sCaminho, _

FileMode.OpenOrCreate, _ FileAccess.Write)

'Objeto que ESCREVE caracteres no FILE (arquivo texto) sw = New StreamWriter(file)

sw.BaseStream.Seek(0, SeekOrigin.End)

sw.WriteLine("***************VENDAS***************") sw.WriteLine()

For i As Integer = 0 To dgvVendas.Rows.Count - 1

sProduto = "PRODUTO: " & dgvVendas.Rows(i).Cells(2).Value sCliente = "CLIENTE: " & dgvVendas.Rows(i).Cells(4).Value nValor = "VALOR VENDA: " & dgvVendas.Rows(i).Cells(5).Value

'dgvVendas.Columns(5).DefaultCellStyle.Format = "###,##0.00 dtData = "DATA: " & dgvVendas.Rows(i).Cells(6).Value

' dtData = "DATA: " &

dgvVendas.Rows(i).Cells(6).FormattedValue("dd/mm/yyyy") sTipoPgtoVenda = "TIPO PAGAMENTO: " &

dgvVendas.Rows(i).Cells(7).Value

sStatusVenda = "STATUS VENDA: " & dgvVendas.Rows(i).Cells(8).Value

sResultado = sProduto & vbCrLf & sCliente & vbCrLf & nValor & vbCrLf & dtData & vbCrLf _

& sTipoPgtoVenda & vbCrLf & sStatusVenda & vbCrLf sw.WriteLine(sResultado)

Next

'Para finalizar a operação é necessário FECHAR tanto o objeto que ESCREVE, quanto o DOCUMENTO

sw.Close() file.Close()

MsgBox("Arquivo Criado Com sucesso!", _ MsgBoxStyle.Information)

End Sub

Private Sub SalvarCaminho()

'determina o filtro da caixa de diálogo que será apresentada... dlgSalvar.Filter = ".doc|*.doc"

'Apresenta a caixa de diálogo e só salva caso o usuário pressionar o botao de OK (Salvar)

If dlgSalvar.ShowDialog() = Windows.Forms.DialogResult.OK Then

sCaminho = dlgSalvar.FileName SalvarArquivoTexto()

End If

End Sub

Private Sub btnExportar_Click_1(ByVal sender As System.Object, ByVal

e As System.EventArgs) Handles btnExportar.Click SalvarCaminho()

End Sub

Private Sub ExcluiVenda()

Dim oVendas As New Vendas

Dim oConexao As New ConexaoSQLServer Dim nIndiceLinha As Integer

nIndiceLinha = dgvVendas.CurrentRow.Index

oVendas.codVenda = dgvVendas.Rows(nIndiceLinha).Cells(0).Value If oVendas.codVenda <= 0 Then Exit Sub

oConexao.Abrir()

If oVendas.Excluir(oConexao.ConexaoSQL) Then

MsgBox("Registro(s) excluído(s)!") End If

oConexao.Fechar() End Sub

Private Sub btnExcluir_Click_1(ByVal sender As System.Object, ByVal e

As System.EventArgs) Handles btnExcluir.Click ExcluiVenda()

CarregaGridVendas() End Sub

'Chama formulário relatório

No documento Protótipo de gerenciamento de pet shops (páginas 52-76)

Documentos relacionados