Jump to content
informaster

SQLITE - Mudar TextBox(cod. produto) quando alteramos o valor na ComboBox(produ)

Recommended Posts

informaster

Boa noite

Tenho este código para actualizar dados

Public Sub valores_actualizados()
        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 As SQLiteDataReader = SQLcommand.ExecuteReader()

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

                'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
                While leitorprodutos2.Read()
                    txt_stockactual.Text = leitorprodutos2.Item("stockactual")
                    txt_id.Text = leitorprodutos2.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

Este seria para cada vez que alterava a combobox actualizava o valor da textbox

    Private Sub cb_produtosins_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_produtosins.SelectedIndexChanged
        valores_actualizados()
    End Sub

Mas não me muda nada nas textbox

Abraço a todos

Nuno Revez


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
Caça

Não faz sentido o que estás a fazer.

Estás a seleccionar todos os registos da tabela produtos, e depois estás a colocalos em textboxes, o que leva a que fiquem sempre com o mesmo valor, ou seja, o valor do ultimo registo da tabela.

Deve faltar ai um WHERE ID = Qualquercoisa


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
MSOlhao

Viva,

Á primeira vista é normal não mudar nada, isto porque o seu método valores_actualizados() por mais vezes que seja executado vai ter sempre o mesmo resultado.

Vê o que está acontecendo no teu código:

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

      'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
      While leitorprodutos2.Read()
          txt_stockactual.Text = leitorprodutos2.Item("stockactual")
          txt_id.Text = leitorprodutos2.Item("id")
     End While
End If

O que acontece é que ele enquanto tiver linhas vai actualizando sempre as TextBox, fazendo com que o resultado seja sempre igual, mostra sempre o último registo do DataReader.

Para actualizar conforme o que for escolhido na ComboBox o método deve sofrer as seguintes alterações:

Public Sub valores_actualizados(String valor_da_combobox)

E a Query deve alterar para:

'executa a consulta
SQLcommand.CommandText = "SELECT * FROM produtos WHERE <o_campo_que_preenche_a_cb> = '" + valor_da_combobox "'"

Depois no evento SelectedIndexChanged fazes isto:

valores_actualizados(cb_produtosins.Text)

Share this post


Link to post
Share on other sites
informaster

não entendi é que valor na combo_box????

o que tenho na combo box é a descrição dos produtos todos.

Posso meter todo o codigo.

Imports System.Data.SQLite

Public Class frm_entradas
    Dim sConnectionString As String

    Private Sub carregaentradas()
        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 Entradas
            Dim daentradas As New SQLite.SQLiteDataAdapter("Select id,produto,quantidade,data,hora,empregado,iddoc From moventradas Where empregado='" & frm_principal.txt_infoemp.Text & "' AND data = '" & frm_principal.txt_data.Text & "'order by id Desc", oConn)
            'AND iddoc = '" & txt_iddoc.Text & "'
            'define o dataset
            Dim ds As New DataSet("Northwind")
            'define o esquema da tabela
            daentradas.FillSchema(ds, SchemaType.Source, "moventradas")
            'preenche o dataset
            daentradas.Fill(ds, "moventradas")
            'exibe os dados no datagridview
            gdvDados_entradas.DataSource = ds.Tables("moventradas")
            'fecha a conexao
            oConn.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o banco de dados SQLite: " & ex.Message)
        End Try
    End Sub

    Public Sub valores_produtos()
        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 As SQLiteDataReader = SQLcommand.ExecuteReader()

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

                'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
                While leitorprodutos.Read()
                    cb_produtosins.Items.Add(leitorprodutos.Item("descricao")).ToString()
                    cb_produtosins.Text = leitorprodutos.Item("descricao")
                    txt_stockactual.Text = leitorprodutos.Item("stockactual")
                    txt_id.Text = leitorprodutos.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_actualizados()
        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 id=('" + txt_id.ToString + "') AND stockactual=('" + txt_stockactual.ToString + "')"

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

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

                'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
                While leitorprodutos2.Read()
                    txt_stockactual.Text = leitorprodutos2.Item("stockactual")
                    txt_id.Text = leitorprodutos2.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



    Private Sub bt_sairacesso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_sairentrada.Click
        frm_principal.Enabled = True
        Me.Close()
    End Sub

    Private Sub frm_entradas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        frm_principal.Enabled = False
        bt_gravarentrada.Enabled = False

        carregaentradas()
        valores_produtos()
        valores_iddocentradas()
    End Sub
    Public Sub valores_iddocentradas()
        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 docentradas"

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

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

                'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
                While leitordocentradas.Read()
                    txt_iddoc.Text = (leitordocentradas.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 bt_inserirlinha_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_inserirlinha.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

            'Botao gravar está enable
            bt_gravarentrada.Enabled = True

            Dim maisstock 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 moventradas(produto,quantidade,data,hora,empregado,iddoc)  VALUES ('" + 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.Text.Replace("'", "''") + "')"
            SQLcommand.ExecuteNonQuery()
            SQLcommand.CommandText = "UPDATE produtos SET stockactual = stockactual + ('" + maisstock.ToString + "') WHERE id=('" + idproduto.ToString + "')"
            SQLcommand.ExecuteNonQuery()
            SQLcommand.Dispose()
            SQLconnect.Close()

            valores_actualizados()
            cb_produtosins.Text = String.Empty
            txt_quantidade.Value = "1"

        Catch ex As Exception
            MsgBox("Erro ao acessar o SQLite: " & ex.Message)
        End Try
        valores_actualizados()
        cb_produtosins.Focus()
        carregaentradas()
    End Sub

    Private Sub bt_gravarentrada_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_gravarentrada.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 docentradas(docnumero)  VALUES ('" + txt_iddoc.Text.Replace("'", "''") + "')"

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

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

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

    End Sub


    Private Sub bt_cancelarentrada_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_cancelarentrada.Click
        frm_principal.Enabled = True
        Close()
    End Sub


    Private Sub cb_produtosins_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_produtosins.SelectedIndexChanged
        valores_actualizados()
    End Sub
End Class

:wallbash:


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
MSOlhao

O valor_da_combobox é o nome da variável passado em parâmetro no método valores_actualizados().

A tua query deve ficar assim:

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

Não te esqueças de quando chamares o método valores_actualizados(), chamares assim:

valores_actualizados(cb_produtosins.Text)

Share this post


Link to post
Share on other sites
informaster

Sim mas se eu usar isto:

Public Sub valores_actualizados(String valor_da_combobox)

dá me erro na String


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
MSOlhao

Tens razão, peço desculpa a sintaxe correcta é esta:

Public Sub valores_actualizados(ByVal actualzar As String)

Share this post


Link to post
Share on other sites
informaster

Bingo

Já temos a Form Entrada de Stock de Artigos a dar entrada nos conformes.

Ficou assim tudo:

Tabelas a usar:

Produtos (onde estão produtos e stocks actuais)

Moventradas (onde damos entrada de stocks positicos desses produtos linha a linha)

Imports System.Data.SQLite

Public Class frm_entradas
    Dim sConnectionString As String

    Private Sub carregaentradas()
        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 Entradas
            Dim daentradas As New SQLite.SQLiteDataAdapter("Select id,produto,quantidade,data,hora,empregado,iddoc From moventradas Where empregado='" & frm_principal.txt_infoemp.Text & "' AND data = '" & frm_principal.txt_data.Text & "'order by id Desc", oConn)
            'AND iddoc = '" & txt_iddoc.Text & "'
            'define o dataset
            Dim ds As New DataSet("Northwind")
            'define o esquema da tabela
            daentradas.FillSchema(ds, SchemaType.Source, "moventradas")
            'preenche o dataset
            daentradas.Fill(ds, "moventradas")
            'exibe os dados no datagridview
            gdvDados_entradas.DataSource = ds.Tables("moventradas")
            'fecha a conexao
            oConn.Close()
        Catch ex As Exception
            MsgBox("Erro ao acessar o banco de dados SQLite: " & ex.Message)
        End Try
    End Sub

    Public Sub valores_produtos()
        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 As SQLiteDataReader = SQLcommand.ExecuteReader()

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

                'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
                While leitorprodutos.Read()
                    cb_produtosins.Items.Add(leitorprodutos.Item("descricao")).ToString()
                    cb_produtosins.Text = leitorprodutos.Item("descricao")
                    txt_stockactual.Text = leitorprodutos.Item("stockactual")
                    txt_id.Text = leitorprodutos.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_actualizados(ByVal actualizar 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 = '" + actualizar + "'"

            'WHERE id=('" + txt_id.ToString + "') AND stockactual=('" + txt_stockactual.ToString + "')"

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

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

                'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
                While leitorprodutos2.Read()
                    txt_stockactual.Text = leitorprodutos2.Item("stockactual")
                    txt_id.Text = leitorprodutos2.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



    Private Sub bt_sairacesso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_sairentrada.Click
        frm_principal.Enabled = True
        Me.Close()
    End Sub

    Private Sub frm_entradas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        frm_principal.Enabled = False
        bt_gravarentrada.Enabled = False

        carregaentradas()
        valores_produtos()
        valores_iddocentradas()
    End Sub
    Public Sub valores_iddocentradas()
        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 docentradas"

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

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

                'EXECUTA ATE LERES OS DADOS TIPO ACESSO PARA STRING
                While leitordocentradas.Read()
                    txt_iddoc.Text = (leitordocentradas.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 bt_inserirlinha_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_inserirlinha.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

            'Botao gravar está enable
            bt_gravarentrada.Enabled = True

            Dim maisstock 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 moventradas(produto,quantidade,data,hora,empregado,iddoc)  VALUES ('" + 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.Text.Replace("'", "''") + "')"
            SQLcommand.ExecuteNonQuery()
            SQLcommand.CommandText = "UPDATE produtos SET stockactual = stockactual + ('" + maisstock.ToString + "') WHERE id=('" + idproduto.ToString + "')"
            SQLcommand.ExecuteNonQuery()
            SQLcommand.Dispose()
            SQLconnect.Close()
            valores_actualizados(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()
        carregaentradas()
    End Sub

    Private Sub bt_gravarentrada_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_gravarentrada.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 docentradas(docnumero)  VALUES ('" + txt_iddoc.Text.Replace("'", "''") + "')"

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

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

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

    End Sub


    Private Sub bt_cancelarentrada_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_cancelarentrada.Click
        frm_principal.Enabled = True
        Close()
    End Sub


    Private Sub cb_produtosins_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cb_produtosins.SelectedIndexChanged
        valores_actualizados(cb_produtosins.Text)
    End Sub
End Class

Podemos fechar o topico


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
informaster

Só mais uma questão:

Estas rotinas exemplo valores_actualizados()

Eu não posso usar esta rotinas nos MODULES no visual basic e depois chamar conforme estou a fazer a aplicação para não fazer tanta confusão e só para fazer um valores_actualizados para todas as forms que queira chamar essa rotina?????


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
informaster

Pois e como usarias.

Dou.te um exemplo

Stocks requer entradas, saidas, acertos ou seja numeros positivos+ e negativos-

é por isso que repito o codigo

Mas infelizmente ainda não sei usar o modules.

Algum exemplo ????


 

 

Nuno Revez

@informaster

Share this post


Link to post
Share on other sites
MSOlhao

Veja este exemplo para efectuar o comando SELECT

Classe SQLiteHelper

Imports System.Data.SQLite

Public Class SQLiteHelper

    Private connection As SQLiteConnection
    Private sqlCommand As SQLiteCommand

    ' Construtor da Classe, recebe no parametro a connection string
    Public Sub New(ByVal strConnection As String)
        connection = New SQLiteConnection(strConnection)
    End Sub

    ' Aqui preparamos o comando
    Public Function PrepararCommando() As SQLiteCommand
        Dim command As SQLiteCommand = connection.CreateCommand()
        ' Indicamos o tipo do comando.
        command.CommandType = CommandType.Text
        ' Devolvemos o commando
        Return command
    End Function

    Public Function ExecutarComandoSelect(ByVal command As SQLiteCommand) As DataTable

        ' O DataTable que vai ser devolvido pela função
        Dim dTable As DataTable

        Try
            ' Abre a ligação
            command.Connection.Open()
            ' Executa o comando
            Dim dataReader As SQLiteDataReader = command.ExecuteReader()
            dTable = New DataTable()
            dTable.Load(dataReader)

            dataReader.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            ' Fecha a ligação
            command.Connection.Close()
        End Try

        ' Devolve a DataTable
        Return dTable
    End Function

End Class

Agora invocávamos esta classe assim:

Public Sub valores_actualizados(ByVal actualzar As String)
    ' Instanciamos a classe que nos vai apoiar com o SQLite
    Dim sqliteHlp As New SQLiteHelper("Data Source=C:\StockUs\bdstocks2011.db3;Version=3;New=True;Compress=True;")
    ' Vamos preparar a query
    Dim command As SQLiteCommand = sqliteHlp.PrepararCommando()
    command.CommandText = SQLcommand.CommandText = "SELECT * FROM produtos WHERE descricao = '" + actualizar + "'"
    ' Vamos executar a query e preencher o DataTable
    Dim dt As New DataTable()
    dt = sqliteHlp.ExecutarComandoSelect(command)

    ' Agora é fazer o resto
    If dt.Rows.Count > 0 Then
        For Each row As DataRow In dt.Rows
            txt_stockactual.Text = row("stockactual")
            txt_id.Text = row("id")
        Next
    End If

    command.Dispose()

End Sub

Veja agora a diferença neste código e no seu, ao usar este tipo de classe vai reduzir em muito os passos repetidos.

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.