Olá Boa semana para todos!
Venho com uma problemática.
Novamente estou a pedir ajuda desta comunidade. Estou a fazer uma aplicação no Access 2013 e deparei-me com uma situação no qual não entendo muito bem.
Sou iniciante em programação. E estou tendo meus primeiros contatos com VBA. Portanto segue o problema.
Tipo: Inserção automática de códigos.
Problema: Inserir em ordem, os itens do subform para cada código do form principal.
Organização: O projeto está feito dessa forma. Um Form Principal chamado “CAD_Familias” dividido em várias abas. Na Aba Inventário está o Sbform “IDIventario subformulário”
Esquema:
Form “CAD_Familias” – Tabela “Tab_Familias” – Código “ID” tipo “Numeração automática”
SubForm “IDIventario subformulário” – Tabela “IDIventario” – Codigo “IdIventa” tipo “número”
Código Utilizado:
Tenho um Módulo com o nome de “Numeração”
Option Compare Database
Option Explicit
Function numeroLivre(argTabela As String, argCampo As String) As Long
Dim i As Long
'Atribui o valor zero à variável de contagem, assim
'o valor inicial do resultado será 1. Para modificar o
'início da contagem basta alterar o valor desta variável.
i = 0
Do
'Incrementa o valor da variável
'de contagem
i = i + 1
'Verifica se existe no campo e tabela informados o valor
'atual da variável de contagem.
If IsNull(DLookup(argCampo, argTabela, argCampo & "=" & i)) Then
'Se não existir retorna o valor
numeroLivre = i
Exit Function
End If
Loop
End Function
E no Subform “IDIventario subformulário” Tenho no Evento Antes de atualizar.
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Verifica se o campo codFunc está nulo. Se estiver
'significa que é um novo registro.
If IsNull(IdIventa) Then
'Atribui ao campo o próximo número livre dentro
'do campo codFunc na tabela Funcionario.
IdIventa.Value = numeroLivre("IDIventario", "IdIventa")
End If
E um Botão Excluir
Private Sub BotaoExcluir_Click()
On Error GoTo Err_BotaoExcluir_Click
If MsgBox("Deseja excluir este item?", vbYesNo + vbQuestion, "Funcionários") = vbYes Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
End If
Exit_BotaoExcluir_Click:
Exit Sub
Err_BotaoExcluir_Click:
MsgBox Err.Description
Resume Exit_BotaoExcluir_Click
End Sub
End Sub
Ao que acontece.
Quando digito para inseri os itens ele faz uma verificação na tabela fonte do subform “IDIventario subformulário” e analisa o último número adicionado, assim dando continuidade na sequência.
O que desejo.
Para cada item no formulário principal seja adicionado uma nova sequência. Ou seja para cada pessoa, a numeração dos itens sempre começar em um (1).
Agradeço se puderem ajudar.
Venho com uma problemática.
Novamente estou a pedir ajuda desta comunidade. Estou a fazer uma aplicação no Access 2013 e deparei-me com uma situação no qual não entendo muito bem.
Sou iniciante em programação. E estou tendo meus primeiros contatos com VBA. Portanto segue o problema.
Tipo: Inserção automática de códigos.
Problema: Inserir em ordem, os itens do subform para cada código do form principal.
Organização: O projeto está feito dessa forma. Um Form Principal chamado “CAD_Familias” dividido em várias abas. Na Aba Inventário está o Sbform “IDIventario subformulário”
Esquema:
Form “CAD_Familias” – Tabela “Tab_Familias” – Código “ID” tipo “Numeração automática”
SubForm “IDIventario subformulário” – Tabela “IDIventario” – Codigo “IdIventa” tipo “número”
Código Utilizado:
Tenho um Módulo com o nome de “Numeração”
Option Compare Database
Option Explicit
Function numeroLivre(argTabela As String, argCampo As String) As Long
Dim i As Long
'Atribui o valor zero à variável de contagem, assim
'o valor inicial do resultado será 1. Para modificar o
'início da contagem basta alterar o valor desta variável.
i = 0
Do
'Incrementa o valor da variável
'de contagem
i = i + 1
'Verifica se existe no campo e tabela informados o valor
'atual da variável de contagem.
If IsNull(DLookup(argCampo, argTabela, argCampo & "=" & i)) Then
'Se não existir retorna o valor
numeroLivre = i
Exit Function
End If
Loop
End Function
E no Subform “IDIventario subformulário” Tenho no Evento Antes de atualizar.
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Verifica se o campo codFunc está nulo. Se estiver
'significa que é um novo registro.
If IsNull(IdIventa) Then
'Atribui ao campo o próximo número livre dentro
'do campo codFunc na tabela Funcionario.
IdIventa.Value = numeroLivre("IDIventario", "IdIventa")
End If
E um Botão Excluir
Private Sub BotaoExcluir_Click()
On Error GoTo Err_BotaoExcluir_Click
If MsgBox("Deseja excluir este item?", vbYesNo + vbQuestion, "Funcionários") = vbYes Then
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
End If
Exit_BotaoExcluir_Click:
Exit Sub
Err_BotaoExcluir_Click:
MsgBox Err.Description
Resume Exit_BotaoExcluir_Click
End Sub
End Sub
Ao que acontece.
Quando digito para inseri os itens ele faz uma verificação na tabela fonte do subform “IDIventario subformulário” e analisa o último número adicionado, assim dando continuidade na sequência.
O que desejo.
Para cada item no formulário principal seja adicionado uma nova sequência. Ou seja para cada pessoa, a numeração dos itens sempre começar em um (1).
Agradeço se puderem ajudar.
Última edição por Mimexx em 30/1/2015, 02:57, editado 1 vez(es)