MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    Erro na baixa de estoque

    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    Erro na baixa de estoque Empty Erro na baixa de estoque

    Mensagem  eriberto Sex 12 Jul - 8:14

    Bom dia a todos... estou a adaptar um meu banco access para o banco sql server usando tabelas vinculadas. mas na hora de atualizar o estoque ocorre um erro e o mesmo não atualiza como deveria... segue abaixo o modulo que uso para baixar o estoque automaticamente...

    Código:

    Option Compare Database
    Option Explicit

    'Atributos da Classe

    'Atributo de backup e atributo identificador da Classe
    'PK - Código que identifica o produto.
    Private bkpCodProduto As Variant
    Private lngCodProduto As Variant

    'Descrição do produto.
    Private strDescricao As Variant

    'Quantidade mínima desejada no estoque.
    Private dblEstoqueMinimo As Variant

    'Quantidade atual do estoque.
    Private dblQtdEstoque As Variant

    'Unidade de comercialização do produto.
    Private strUnidade As Variant

    'Valor unitário do produto.
    Private curValorUnitario As Variant


    'Métodos Get, Set e Let da Classe

    Property Get codProduto() As Variant

        codProduto = lngCodProduto

    End Property

    Property Let codProduto(argCodProduto As Variant)

        lngCodProduto = argCodProduto
        
        If IsEmpty(bkpCodProduto) Then
          bkpCodProduto = lngCodProduto
        End If

    End Property

    Property Get descricao() As Variant

        descricao = strDescricao

    End Property

    Property Let descricao(argDescricao As Variant)

        strDescricao = argDescricao

    End Property

    Property Get estoqueMinimo() As Variant

        estoqueMinimo = dblEstoqueMinimo

    End Property

    Property Let estoqueMinimo(argEstoqueMinimo As Variant)

        dblEstoqueMinimo = Abs(argEstoqueMinimo)

    End Property

    Property Get qtdEstoque() As Variant

        qtdEstoque = dblQtdEstoque

    End Property

    Property Let qtdEstoque(argQtdEstoque As Variant)

        dblQtdEstoque = Abs(argQtdEstoque)

    End Property

    Property Get unidade() As Variant

        unidade = strUnidade

    End Property

    Property Let unidade(argUnidade As Variant)

        strUnidade = UCase(argUnidade)

    End Property

    Property Get valorUnitario() As Variant

        valorUnitario = curValorUnitario

    End Property

    Property Let valorUnitario(argValorUnitario As Variant)

        curValorUnitario = argValorUnitario

    End Property

    'Método Existe [Com conhecimento de SQL]
    'Verifica a existência do objeto Produto na tabela correspondente no Banco de Dados
    Function existe(argCodProduto As Variant) As Boolean
    On Error GoTo Err_existe

        Dim objCon As New aclConexaoBD
        Dim rstExiste As Recordset
        Dim strSql As String

        existe = False

        strSql = "Select * " & _
                "From Produto " & _
                "Where codProduto = " & objCon.valorSql(argCodProduto)

        Set rstExiste = objCon.consulta(strSql)

        If rstExiste.RecordCount > 0 Then
            existe = True
        End If

        'Fecha o Recordset existe
        rstExiste.Close

    Exit_existe:
        Set rstExiste = Nothing
        Exit Function

    Err_existe:
        existe = False
        GoTo Exit_existe

    End Function

    'Método Incluir [Com conhecimento de SQL]
    'Inclui um novo objeto na tabela correspondente dentro do Banco de dados
    Function incluir() As Boolean
    On Error GoTo Err_incluir

        Dim objCon As New aclConexaoBD
        Dim strSql As String

        strSql = "Insert Into " & _
                "Produto(codProduto,descricao,estoqueMinimo,qtdEstoque,unidade,valorUnitario) " & _
                "Values(" & objCon.valorSql(codProduto) & "," & objCon.valorSql(descricao) & "," & _
                objCon.valorSql(estoqueMinimo) & "," & objCon.valorSql(qtdEstoque) & "," & _
                objCon.valorSql(unidade) & "," & objCon.valorSql(valorUnitario) & ")"

        incluir = (objCon.executa(strSql) > 0)

        If incluir Then
            'Atualiza os campos de backup
            bkpCodProduto = codProduto
        End If

    Exit_incluir:
        Exit Function

    Err_incluir:
        incluir = False
        GoTo Exit_incluir

    End Function

    'Método Excluir [Com conhecimento de SQL]
    'Exclui o objeto atual na tabela correspondente dentro do Banco de dados
    Function excluir() As Boolean
    On Error GoTo Err_excluir

        Dim objCon As New aclConexaoBD
        Dim strSql As String

        strSql = "Delete From Produto " & _
                "Where codProduto = " & objCon.valorSql(codProduto)

        excluir = (objCon.executa(strSql) > 0)

    Exit_excluir:
        Exit Function

    Err_excluir:
        excluir = False
        GoTo Exit_excluir

    End Function

    'Método Obter [Com conhecimento de SQL]
    'Recupera o objeto Produto através dos argumentos informados
    Function obter(argCodProduto As Variant) As Boolean
    On Error GoTo Err_obter

        Dim objCon As New aclConexaoBD
        Dim rstObter As Recordset
        Dim strSql As String

        strSql = "Select * " & _
                "From Produto " & _
                "Where codProduto = " & objCon.valorSql(argCodProduto)

        Set rstObter = objCon.consulta(strSql)

        If rstObter.RecordCount = 0 Then
            obter = False
            Exit Function
        End If

        'Atualiza os campos de backup e os identificadores
        codProduto = argCodProduto
        bkpCodProduto = argCodProduto

        'Atualiza os campos restantes
        descricao = rstObter.Fields("descricao")
        estoqueMinimo = rstObter.Fields("estoqueMinimo")
        qtdEstoque = rstObter.Fields("qtdEstoque")
        unidade = rstObter.Fields("unidade")
        valorUnitario = rstObter.Fields("valorUnitario")

        obter = True

        'Fecha o Recordset obter
        rstObter.Close

    Exit_obter:
        Set rstObter = Nothing
        Exit Function

    Err_obter:
        obter = False
        GoTo Exit_obter

    End Function

    'Método Salvar [Com conhecimento de SQL]
    'Salva o objeto atual na tabela correspondente dentro do Banco de dados
    Function salvar() As Boolean
    On Error GoTo Err_salvar

        Dim objCon As New aclConexaoBD
        Dim strSql As String

        If existe(bkpCodProduto) Then
            strSql = "Update Produto " & _
                "Set codProduto = " & objCon.valorSql(codProduto) & _
                    ", descricao = " & objCon.valorSql(descricao) & _
                    ", estoqueMinimo = " & objCon.valorSql(estoqueMinimo) & _
                    ", qtdEstoque = " & objCon.valorSql(qtdEstoque) & _
                    ", unidade = " & objCon.valorSql(unidade) & _
                    ", valorUnitario = " & objCon.valorSql(valorUnitario) & _
                " Where codProduto = " & objCon.valorSql(bkpCodProduto)

            salvar = (objCon.executa(strSql) > 0)
        Else
            salvar = incluir
        End If

        If salvar Then
            'Atualiza as variáveis de backup com o novo valor da chave
            bkpCodProduto = codProduto
        End If

    Exit_salvar:
        Exit Function

    Err_salvar:
        salvar = False
        GoTo Exit_salvar

    End Function

    'Método baixarEstoque()
    'Atualiza o estoque diminuindo a quantidade informada como parâmetro
    'e devolve um valor booleano que indica o sucesso da operação;
    Function baixarEstoque(argQtd As Double) As Boolean
        
        If dblQtdEstoque - Abs(argQtd) < 0 Then
            baixarEstoque = False
        Else
            dblQtdEstoque = dblQtdEstoque - Abs(argQtd)
            baixarEstoque = salvar
        End If

    End Function

    'Método subirEstoque()
    'Atualiza o estoque acrescentando a quantidade informada como
    'parâmetro e devolve um valor booleano que indica o sucesso
    'da operação;
    Function subirEstoque(argQtd As Double) As Boolean
        
        dblQtdEstoque = dblQtdEstoque + Abs(argQtd)
        subirEstoque = salvar

    End Function

    'Método estoqueBaixo
    'Verifica o estoque atual e compara com o valor de estoque mínimo
    'cadastrado para produto e devolve um valor booleano que indica
    'se o valor atual está abaixo do previsto.
    Function estoqueBaixo() As Boolean
        
        If dblQtdEstoque < dblEstoqueMinimo Then
            estoqueBaixo = True
        End If

    End Function

    'Fim da classe...

    tambem estou deixando o banco junto ao iscript do Sql Server que gera as tabelas.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    Erro na baixa de estoque Empty Re: Erro na baixa de estoque

    Mensagem  Cláudio Más Seg 15 Jul - 8:26

    Bom dia,

    Poderia enviar o script de dados de cada tabela, mesmo com poucos registros, para facilitar os testes?

      Data/hora atual: Dom 24 Nov - 23:12