Olá! Tenho um formulário no qual temos o Nº das operações e os valores de orçamentos. Fiz um código para o Access calcular o menor orçamento de cada operação e retornar o texto "Considerar" no campo "Status", os demais valores ficam "Não considerar".
Obs: Para cada operação deve ter um 'Considerar' que, no caso, seriam os valores do menores orçamentos.
Entretanto, esse código está dando erro ("Conflito de gravação") ou nem chega a funcionar ao alterarmos os valores. Alguém saberia dizer porque? vou colocar o código e o arquivo.
Private Sub txtValor_AfterUpdate()
Dim db As dao.Database
Dim tabela, tabmin As String
Dim rs, rs2 As dao.Recordset
'Utilizei comandos do SQL no VBA para que conseguisse separar o menor orçamento de cada operação
tabela = "SELECT Operacao,Valor, Status FROM TabOrcamentos" 'operação e valores
tabmin = "SELECT Operacao, Min(Valor)as minimo FROM TabOrcamentos GROUP BY Operacao" 'consulta com todos os valores mínimo de cada operação
Set db = CurrentDb
Set rs = db.OpenRecordset(tabela)
Set rs2 = db.OpenRecordset(tabmin)
With rs
rs.MoveFirst ' Ir para a primeira linha da Tab3Orcamentos
Do Until rs.EOF 'O comando funcionará até chegar na última linha da Tab3Orcamentos. Obs: EOF = true se você está no fim do recordset(depois do último registro) .
Do Until rs!Operacao > rs2!Operacao 'Critério para "tabmin" ir para próxima linha
If rs!Operacao & rs!Valor = rs2!Operacao & rs2!minimo Then
rs.Edit
rs!Status = "Considerar"
ElseIf rs!Operacao = rs!Operacao Then
rs.Edit
rs!Status = "Não considerar"
End If
rs.Update
rs.MoveNext 'ir para próxima linha da tabela
If rs.EOF = True Then
Exit Sub 'se o código chegar na última linha da tabela, a sub será encerrada
End If
Loop
rs2.MoveNext 'ir para próxima linha de tabmin
Loop
End With
End Sub
Pergunta
carolinesilva115
Olá! Tenho um formulário no qual temos o Nº das operações e os valores de orçamentos.
Fiz um código para o Access calcular o menor orçamento de cada operação e retornar o texto "Considerar" no campo "Status", os demais valores ficam "Não considerar".
Obs: Para cada operação deve ter um 'Considerar' que, no caso, seriam os valores do menores orçamentos.
Entretanto, esse código está dando erro ("Conflito de gravação") ou nem chega a funcionar ao alterarmos os valores. Alguém saberia dizer porque? vou colocar o código e o arquivo.
Meu arquivo: https://www.maximoaccess.com/download?id=22496
Private Sub txtValor_AfterUpdate() Dim db As dao.Database Dim tabela, tabmin As String Dim rs, rs2 As dao.Recordset 'Utilizei comandos do SQL no VBA para que conseguisse separar o menor orçamento de cada operação tabela = "SELECT Operacao,Valor, Status FROM TabOrcamentos" 'operação e valores tabmin = "SELECT Operacao, Min(Valor)as minimo FROM TabOrcamentos GROUP BY Operacao" 'consulta com todos os valores mínimo de cada operação Set db = CurrentDb Set rs = db.OpenRecordset(tabela) Set rs2 = db.OpenRecordset(tabmin) With rs rs.MoveFirst ' Ir para a primeira linha da Tab3Orcamentos Do Until rs.EOF 'O comando funcionará até chegar na última linha da Tab3Orcamentos. Obs: EOF = true se você está no fim do recordset(depois do último registro) . Do Until rs!Operacao > rs2!Operacao 'Critério para "tabmin" ir para próxima linha If rs!Operacao & rs!Valor = rs2!Operacao & rs2!minimo Then rs.Edit rs!Status = "Considerar" ElseIf rs!Operacao = rs!Operacao Then rs.Edit rs!Status = "Não considerar" End If rs.Update rs.MoveNext 'ir para próxima linha da tabela If rs.EOF = True Then Exit Sub 'se o código chegar na última linha da tabela, a sub será encerrada End If Loop rs2.MoveNext 'ir para próxima linha de tabmin Loop End With End Sub
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.