Jump to content
Luisveiga18

Problema VB

Recommended Posts

Luisveiga18

Bom eu estou com este seguinte código:

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\ResgestDB.accdb")
Dim query As String = "SELECT ID_Prod_Uni, Nome, Tipo, Stock FROM Produto_Uni WHERE Stock < StockMinimo"

Dim DataAdapter As New OleDbDataAdapter(query, ConnectionString)
Dim MyData As New DataSet
DataAdapter.Fill(MyData, "Produto_Uni")
Me.DataGridView1.DataSource = MyData.Tables("Produto_Uni")

Como podem ver ele serve mostrar certos campos de uma tabela se o Stock for menor que o Stock Mínimo. Mas estou com um problema, sempre que altero o Stock esta alteração não acontece nesta tabela. A unica forma de conseguir fazer isto funcionar é alterar directamente na tabela pela base de dados.

Este é o codigo que uso para alterar o stock da tabela:

Private Sub CBNomeProd_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CBNomeProd.SelectedIndexChanged
    Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\ResgestDB.accdb")
    Dim query As String = "SELECT * FROM Produto_Uni WHERE Nome = @Nome"
    Dim command As New OleDbCommand(query, ConnectionString)
    command.Parameters.Add("@Nome", OleDbType.Char).Value = CBNomeProd.SelectedItem
    Dim DataAdapter As New OleDbDataAdapter(command)
    Dim MyData As New DataSet
    DataAdapter.Fill(MyData, "Produto_Uni")
    ConnectionString.Open()
    Dim dr As OleDbDataReader = command.ExecuteReader(CommandBehavior.SingleRow)
    If dr.HasRows Then
        dr.Read()
        Label6.Text = dr.Item(0).ToString
        StockProdUni = dr.Item(4).ToString
        StockProdUniMinas = dr.Item(6).ToString
        Label4.Text = StockProdUni
    End If
    If StockProdUni < StockProdUniMinas Then
        Label8.Text = "Stock Mínimo Atingido"
    Else
        Label8.Text = "Ok"
    End If
    ConnectionString.Close()
    command = Nothing

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\ResgestDB.accdb")
    Dim query As String = "UPDATE Produto_Uni SET [stock] = @Stock WHERE ID_Prod_Uni = @ID_Prod_Uni"
    Dim command As New OleDbCommand(query, ConnectionString)
    command.Parameters.Add("@Stock", OleDbType.VarChar).Value = TBNovoStock.Text()
    command.Parameters.Add("@ID_Prod_Uni", OleDbType.Integer).Value = Label6.Text()
    command.Parameters.Add("@StockMinimo", OleDbType.Integer).Value = StockProdUniMinas

    ConnectionString.Open()
    If Label6.Text = "" Or TBNovoStock.Text = "" Then
        MessageBox.Show("Erro ao atualizar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        GoTo Loop_Strat
    End If
    Dim x As String = command.ExecuteNonQuery()
    If x < 1 Then
        MessageBox.Show("Erro ao actualizar", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
    Else
        MessageBox.Show("Actualizado com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
        TBNovoStock.Text = ""
        CBNomeProd.Text = ""
        Label6.Text = ""
        Label4.Text = ""
        Label8.Text = ""
    End If
    ConnectionString.Close()
    command = Nothing
Loop_Strat:

Podem me dar uma ajuda nisto?

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
nelsonr

Tens de ter em atenção a alguns pormenores, por exemplo, no teste que mostras erro ao atualizar, de seguida salta para o Loop_Strat sem fechar a ligação.

Ai no terceiro exemplo, tens o parametro @StockMinimo mas não estás a usar no UPDATE. É propositado?

Já agora, tenta evitar o uso de goto. Isso cria o chamado código "esparguete"

Edited by nelsonr

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.