Jump to content
informaster

Verificar DAtaGrid -SQLITE

Recommended Posts

informaster

Bom Dia Caros Amigos e Colegas

Tenho um problema, queria criar uma condição que tivesse a verificar o seguinte:

se apagar todas as linhas da data grid então não deixa gravar os campos na base de dados.

Ou melhor se apagares linha a linha na data grid e num dado momento não exister nenhuma

o botao gravar não fica activo.

O de ficar activo ou não já sei. O que para mim está dificil é criar essa condição dentro de estes dois codigos vou mostrar

FRM_SOBROU e FRM_APAGA_SOBROU  a frm sobrou é para dar entradas de stock o apaga é para apagar linha a linha no momento do engano.

Imports System.Data.SQLite
Imports System.Data
Imports System.IO

Public Class frm_sobrou
    Dim sConnectionString As String
    Public idsobrou As Integer = -1

    'Carrega entradas com filtro de empregado/so o documento que grava/e dia
    Public Sub carrega_sobrou()
        Try
            'define string de conexão com banco de dados SQLite
            'usando a criptografia
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            'abre a conexão
            Dim oConn As New SQLite.SQLiteConnection(sConnectionString)
            oConn.Open()
            'define o comando SQL para retornar todos os dados da tabela Movimentos Sobrou
            Dim dasobrou As New SQLite.SQLiteDataAdapter("Select id,cod,produto,quantidade,data,hora,empregado,iddoc From movsobrou Where empregado='" & frm_principal.txt_infoemp.Text & "' AND data = '" & frm_principal.txt_data.Text & "' AND iddoc = '" & txt_iddoc_sobrou.Text & "' order by id Desc", oConn)
            'define o dataset
            Dim ds As New DataSet("Northwind")
            'define o esquema da tabela
            dasobrou.FillSchema(ds, SchemaType.Source, "movsobrou")
            'preenche o dataset
            dasobrou.Fill(ds, "movsobrou")
            'exibe os dados no datagridview
            gdvDados_sobrou.DataSource = ds.Tables("movsobrou")
            'fecha a conexao
            oConn.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o banco de dados SQLite: " & ex.Message)
        End Try
    End Sub
    'Carrega valor dos produtos na combobox para apartir dai já poder actualiza-los
    Public Sub valores_produtos_sobrou()
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "Select * from produtos"

            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitorprodutos_sobrou As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitorprodutos_sobrou.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos PRODUTOS PARA STRING
                While leitorprodutos_sobrou.Read()
                    cb_produtosins.Items.Add(leitorprodutos_sobrou.Item("descricao")).ToString()
                    cb_produtosins.Text = leitorprodutos_sobrou.Item("descricao")
                    txt_stockactual.Text = leitorprodutos_sobrou.Item("stockactual")
                    txt_id.Text = leitorprodutos_sobrou.Item("id")
                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub
    'Carrega valor dos produtos actualizados na text´s box´s 
    Public Sub valores_actualizados_sobrou(ByVal actualizar2 As String)
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "SELECT * FROM produtos WHERE descricao = '" + actualizar2 + "'"


            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitorprodutos2_sobrou As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitorprodutos2_sobrou.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos Produtos PARA STRING
                While leitorprodutos2_sobrou.Read()
                    txt_stockactual.Text = leitorprodutos2_sobrou.Item("stockactual")
                    txt_id.Text = leitorprodutos2_sobrou.Item("id")

                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub

    Public Sub valores_actualizados2_sobrou()
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "SELECT * FROM produtos"


            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitorprodutos2_sobrou As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitorprodutos2_sobrou.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos Produtos PARA STRING
                While leitorprodutos2_sobrou.Read()
                    txt_stockactual.Text = leitorprodutos2_sobrou.Item("stockactual")
                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub
    'Lê o proximo numero a ler dos documentos gravados 1,2,3 documento de Sobrou
    Public Sub valores_iddocsobrou()
        Try

            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'executa a consulta
            SQLcommand.CommandText = "Select docnumero from docsobrou"

            'VARIAVEL LEITOR É UM DATA READER DO SQLITE E PODE SER IGUAL A UM COMANDO SQL . EXECUTANDO UM READER
            Dim leitordocsobrou As SQLiteDataReader = SQLcommand.ExecuteReader()

            'SE LEITOR  TIVER LINHAS ENTÃO
            If leitordocsobrou.HasRows Then

                'EXECUTA ATE LERES OS DADOS dos documentos de entradas PARA STRING
                While leitordocsobrou.Read()
                    txt_iddoc_sobrou.Text = (leitordocsobrou.Item("docnumero") + 1)
                End While
            End If

            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

    End Sub
    Private Sub frm_sobrou_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        frm_principal.Enabled = False
        bt_gravarsobrou.Enabled = False

        carrega_sobrou()
        valores_produtos_sobrou()
        valores_iddocsobrou()
    End Sub

    'Lê o proximo numero a ler dos documentos gravados 1,2,3 documento de entrada
    Private Sub bt_sairsobrou_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_sairsobrou.Click, bt_sairsobrou.Click
        'frm_principal novamente activa
        frm_principal.Enabled = True
        'fecha esta form entradas
        Me.Close()
    End Sub

    Private Sub bt_inserirlinha_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_inserirlinha.Click
        bt_sairsobrou.Enabled = False
        Try
            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            'Botao gravar está enable
            bt_gravarsobrou.Enabled = True

            Dim menosstock As String = txt_quantidade.Value
            Dim idproduto As String = txt_id.Text

            'INSERE OS REGISTOS DAS TEXTBOX´S NA BD SQLITE ENTRADAS DE PRODUTOS

            SQLcommand.CommandText = "INSERT INTO movsobrou(cod,produto,quantidade,data,hora,empregado,iddoc)  VALUES ('" + txt_id.Text.Replace("'", "''") + "','" + cb_produtosins.Text.Replace("'", "''") + "','" + txt_quantidade.Text.Replace("'", "''") + "','" + frm_principal.txt_data.Text.Replace("'", "''") + "','" + frm_principal.txt_hora.Text.Replace("'", "''") + "','" + frm_principal.txt_infoemp.Text.Replace("'", "''") + "','" + txt_iddoc_sobrou.Text.Replace("'", "''") + "')"
            'retorna o insert
            SQLcommand.ExecuteNonQuery()

            SQLcommand.CommandText = "UPDATE produtos SET stockactual = stockactual - ('" + menosstock.ToString + "') WHERE id=('" + idproduto.ToString + "')"
            'retorna o update 
            SQLcommand.ExecuteNonQuery()

            SQLcommand.Dispose()
            SQLconnect.Close()
            valores_actualizados_sobrou(cb_produtosins.Text)
            cb_produtosins.Text = String.Empty
            txt_quantidade.Value = "1"

        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try

        cb_produtosins.Focus()
        carrega_sobrou()
    End Sub

    Private Sub bt_gravarsobrou_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_gravarsobrou.Click
        Try
            'define um objeto Command
            Dim SQLcommand As SQLiteCommand
            sConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            Dim SQLconnect As New SQLite.SQLiteConnection(sConnectionString)
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand


            'INSERE OS REGISTOS DAS TEXTBOX´S NA BD SQLITE docentradas
            SQLcommand.CommandText = "INSERT INTO docsobrou(docnumero)  VALUES ('" + txt_iddoc_sobrou.Text.Replace("'", "''") + "')"

            'executa a consulta
            SQLcommand.ExecuteNonQuery()
            SQLcommand.Dispose()
            SQLconnect.Close()

            'Mensagem quando guarda
            'MsgBox("Foi inserido um novo documento de Saida DE STOCK Nº" + txt_iddoc.Text.ToUpper + "Por o empregado, " + frm_principal.txt_infoemp.Text)
            bt_sairsobrou.Enabled = True

            Me.Close()
            frm_print_sobrou.Show()
            frm_principal.Enabled = False



        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try


    End Sub
    Private Sub cb_produtosins_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_produtosins.SelectedIndexChanged
        valores_actualizados_sobrou(cb_produtosins.Text)
    End Sub
    Private Sub bt_apagaprodutos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_apagaprodutos.Click
        'apagar linha secionada
        If idsobrou >= 0 Then
            My.Forms.frm_apagasobrou.ShowDialog()
            carrega_sobrou()
        Else
            MsgBox("Selecione um produto a apagar...")
        End If
    End Sub

    Private Sub gdvDados_sobrou_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles gdvDados_sobrou.CellClick, gdvDados_sobrou.CellClick
        'se selecionar a coluna seleciona os valores para depois apagar mais tarde
        If gdvDados_sobrou.SelectedRows.Count > 0 Then
            Dim linhaAtual2 As DataGridViewRow = gdvDados_sobrou.SelectedRows(0)
            idsobrou = Convert.ToInt32(linhaAtual2.Cells(0).Value)
        End If
    End Sub
    Private Sub ProdutosBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Validate()
    End Sub

    Private Sub bt_reimprime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_reimprime.Click
        'frm_print_sobrou.Show()
    End Sub

End Class

Imports System.Data.SQLite

Public Class frm_apagasobrou
    Dim codigolinhasobrou As Integer

    Private Sub buscaregisto(ByVal id As Integer)
        Try
            Dim SQLconnect As New SQLite.SQLiteConnection()
            Dim SQLcommand As SQLiteCommand
            'define string de conexão com banco de dados SQLite
            'usando a criptografia
            SQLconnect.ConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            'abre a conexão
            SQLconnect.Open()
            'cria um comando
            SQLcommand = SQLconnect.CreateCommand
            'define a instrução sql
            SQLcommand.CommandText = "SELECT * FROM movsobrou WHERE id = " & id
            'executa o comando e retorna um datareader
            Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()
            'percorre e exibe os dados
            While SQLreader.Read()
                txt_linhaid.Text = SQLreader("id")
                txt_prodid.Text = SQLreader("cod")
                txt_produto.Text = SQLreader("produto")
                txt_quantidade.Text = SQLreader("quantidade")
            End While
            SQLcommand.Dispose()
            SQLconnect.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try
    End Sub

    Private Sub frm_apagaentradas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        codigolinhasobrou = frm_sobrou.idsobrou
        buscaregisto(codigolinhasobrou)
    End Sub

    Private Sub bt_apagasobrou_del_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_apagasobrou_del.Click
        Try
            Dim SQLconnect As New SQLite.SQLiteConnection()
            Dim SQLcommand As SQLiteCommand
            Dim menosstock As Integer = txt_quantidade.Text
            Dim idproduto As Integer = txt_prodid.Text

            'define string de conexão com banco de dados SQLite
            'usando a criptografia
            SQLconnect.ConnectionString = "Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;"
            SQLconnect.Open()
            SQLcommand = SQLconnect.CreateCommand

            SQLcommand.CommandText = "INSERT INTO apagasobrou(docid,produto,empregado,data,hora)  VALUES ('" + txt_linhaid.Text.Replace("'", "''") + "','" + txt_produto.Text.Replace("'", "''") + "','" + frm_principal.txt_infoemp.Text.Replace("'", "''") + "','" + frm_principal.txt_data.Text.Replace("'", "''") + "','" + frm_principal.txt_hora.Text.Replace("'", "''") + "')"
            'Executa a consulta para alterar
            SQLcommand.ExecuteNonQuery()

            SQLcommand.CommandText = "DELETE FROM movsobrou WHERE id = " & codigolinhasobrou
            'Executa a consulta para alterar
            SQLcommand.ExecuteNonQuery()

            SQLcommand.CommandText = "UPDATE produtos SET stockactual = stockactual+('" + menosstock.ToString + "') Where id=('" + idproduto.ToString + "')"
            'retorna o update 
            SQLcommand.ExecuteNonQuery()

            SQLcommand.Dispose()
            SQLconnect.Close()
            'MsgBox("Registro excluído com sucesso.")

            Me.Close()
            frm_sobrou.valores_actualizados2_sobrou()
            'falta aqui se as celulas estiverem vazias entao sai sem gravar o documento na bd
        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try
    End Sub


    Private Sub bt_sairsaidas_del_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_sairsobrou_del.Click
        Me.Close()
    End Sub
End Class

Se me poderem dar uma ajuda agradeço imenso  :wallbash:

Bem haja

Nuno Revez


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
Weasel

Isso é super simples ;)

No evento do DatagridView "UserDeletedRow" mete lá a condição If DatagridView1.Rows.Count = 0 Then Button1.Enabled = False

Algo deste genero


Knowledge to the masses


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.