Olá, bom dia, tenho um probleminha, no form de saida de produtos, as vezes quando estou dando uma saida as vezes da um erro:
Update ou CancelUpdate sem addnew ou Edit
Meu código:
Private Sub Atualizar_Saida_AfterUpdate()
'Testa se é verdadeiro o valor do controle Atualizar_Saida.
If Atualizar_Saida = True Then
'Se for verdadeiro, pergunta ao usuário se ele deseja atualizar a quantidade do produto no estoque.
If MsgBox("Deseja atualizar a quantidade deste produto no estoque?", vbYesNo, "Aviso") = vbYes Then
'Se o usuário não entrar com um valor ou se o valor for o (zero), o Sistema emite uma mensagem.
If IsNull(Me.Qtde_Compra) Or Me.Qtde_Compra = 0 Then
MsgBox "Informe a quantidade de vendida no estoque!", vbCritical + vbOKOnly, "Atenção!"
Me.Qtde_Compra.SetFocus
Exit Sub
End If
'Declara nova variável (cnn) de conexão pelo sistema ADO
Dim cnn As New ADODB.Connection
'Declara variável rs1 para os registros
Dim rs1 As ADODB.Recordset
'Abre a conexão com o banco
Set cnn = CurrentProject.Connection
'Abre a conexão com o registro
Set rs1 = New ADODB.Recordset
rs1.CursorType = adOpenKeyset
rs1.LockType = adLockOptimistic
'Abre a Tabela_Produtos
rs1.Open "Tabela_Produtos", cnn, , , adCmdTable
'Procura e compara código do produto entre as tabelas Produtos e a tabela de itens.
rs1.Find "Id_Produto=" & Me.Id_Produto_Item, 0, adSearchForward, 1
If Not rs1.EOF Then
'Diminui a quantidade de itens que saiu naquele momento ao estoque. (Compra)
rs1("Estoque") = rs1("Estoque") - Me.Qtde_Compra
'Verifica se o estoque é menor do que 0 (zero)
If rs1("Estoque") < 0 Then
'Se for, emite mensagem ao usuário
MsgBox "Quantidade não disponível. Saldo atual em estoque de " & rs1("Estoque") + Me.Qtde_Compra & " produtos", vbCritical, "Atenção!"
Exit Sub
Else
'Verifica se o estoque atual é menor do que o estoque mímino
If rs1("Estoque") < rs1("Estoque_Minimo") Then
' Se for, emite mensagem avisando ao usuário que deve pedir deste produto ao fornecedor
MsgBox "Estoque atual abaixo do estoque mínimo. Pedir no mínimo " & rs1("Estoque_Minimo") - rs1("Estoque") & " produtos(s)", vbExclamation, "Atenção!"
'Atualiza a tabela de estoques
rs1.Update
Exit Sub
Else
rs1.Update
'Emite uma mensagem informando a quantidade atual no estoque.
MsgBox "Quantidade atual disponível de " & rs1("Estoque") & " produtos", vbExclamation, "Atenção!"
End If
End If
End If
'Fecha os registros
rs1.Close
'Fecha a conexão
cnn.Close
'Fecha a conexão com o banco
Set cnn = Nothing
'Fecha a conexão com o registro
Set rs1 = Nothing
Else
End If
End If
End Sub
Update ou CancelUpdate sem addnew ou Edit
Meu código:
Private Sub Atualizar_Saida_AfterUpdate()
'Testa se é verdadeiro o valor do controle Atualizar_Saida.
If Atualizar_Saida = True Then
'Se for verdadeiro, pergunta ao usuário se ele deseja atualizar a quantidade do produto no estoque.
If MsgBox("Deseja atualizar a quantidade deste produto no estoque?", vbYesNo, "Aviso") = vbYes Then
'Se o usuário não entrar com um valor ou se o valor for o (zero), o Sistema emite uma mensagem.
If IsNull(Me.Qtde_Compra) Or Me.Qtde_Compra = 0 Then
MsgBox "Informe a quantidade de vendida no estoque!", vbCritical + vbOKOnly, "Atenção!"
Me.Qtde_Compra.SetFocus
Exit Sub
End If
'Declara nova variável (cnn) de conexão pelo sistema ADO
Dim cnn As New ADODB.Connection
'Declara variável rs1 para os registros
Dim rs1 As ADODB.Recordset
'Abre a conexão com o banco
Set cnn = CurrentProject.Connection
'Abre a conexão com o registro
Set rs1 = New ADODB.Recordset
rs1.CursorType = adOpenKeyset
rs1.LockType = adLockOptimistic
'Abre a Tabela_Produtos
rs1.Open "Tabela_Produtos", cnn, , , adCmdTable
'Procura e compara código do produto entre as tabelas Produtos e a tabela de itens.
rs1.Find "Id_Produto=" & Me.Id_Produto_Item, 0, adSearchForward, 1
If Not rs1.EOF Then
'Diminui a quantidade de itens que saiu naquele momento ao estoque. (Compra)
rs1("Estoque") = rs1("Estoque") - Me.Qtde_Compra
'Verifica se o estoque é menor do que 0 (zero)
If rs1("Estoque") < 0 Then
'Se for, emite mensagem ao usuário
MsgBox "Quantidade não disponível. Saldo atual em estoque de " & rs1("Estoque") + Me.Qtde_Compra & " produtos", vbCritical, "Atenção!"
Exit Sub
Else
'Verifica se o estoque atual é menor do que o estoque mímino
If rs1("Estoque") < rs1("Estoque_Minimo") Then
' Se for, emite mensagem avisando ao usuário que deve pedir deste produto ao fornecedor
MsgBox "Estoque atual abaixo do estoque mínimo. Pedir no mínimo " & rs1("Estoque_Minimo") - rs1("Estoque") & " produtos(s)", vbExclamation, "Atenção!"
'Atualiza a tabela de estoques
rs1.Update
Exit Sub
Else
rs1.Update
'Emite uma mensagem informando a quantidade atual no estoque.
MsgBox "Quantidade atual disponível de " & rs1("Estoque") & " produtos", vbExclamation, "Atenção!"
End If
End If
End If
'Fecha os registros
rs1.Close
'Fecha a conexão
cnn.Close
'Fecha a conexão com o banco
Set cnn = Nothing
'Fecha a conexão com o registro
Set rs1 = Nothing
Else
End If
End If
End Sub