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