Eu gostaria de criar um número recorde baseado no ano fiscal e avança automaticamente ... Algo como: 2015001, 2015002, 2015003, 2015004; 2016001, 2016002, etc.
Já tenho um campo [FiscalYr] (tipo de dados calculado) na minha tabela [Projects] com base na seguinte expressão:
IIf(Month([EntryDate])>=10,Year([EntryDate])+1,Year([EntryDate])).
O campo [EntryDate] é um campo de data / hora com um valor padrão de Date (). Isso está funcionando como eu gostaria.
Existe uma maneira de eu pegar o número [FiscalYr] e colocá-lo na frente de um número de 3 dígitos que começa com 001 e incrementa em 1 com base no registro anterior, com o número sendo redefinido como 001 em o início de cada novo ano fiscal? Nosso ano fiscal começa em 1º de outubro e termina em 30 de setembro.
Eu quero que o número seja gerado se as informações forem inseridas na tabela [Projects] ou no formulário [Projects Projects]. Não quero que seja gerado apenas se as informações forem inseridas no formulário. Eu vi alguns posts online sugerindo que a melhor maneira de fazer algo assim seria usar uma macro Before Change, mas a maioria dos exemplos que eu posso encontrar baseiam uma parte significativa de seu código de macro em uma data, e eu já consegui o data problema resolvido (eu acho).
Eu estaria bem com uma macro que criou o ano fiscal a partir de [EntryDate] e criou o número ao mesmo tempo, se isso for mais fácil do que trabalhar com meu campo [FiscalYr] existente. Sou apenas um usuário casual do Access, por isso, se estou falando bobagens, sinto muito - acho que sei o suficiente para ser perigoso.
Muito obrigado,
Andrea
Atualização 09/12/2015:
Eu desisti da ideia macro.
Usando as dicas do blog da Scottgem ( link ), consegui um sistema de numeração sequencial instalado e funcionando, mas ainda estou lutando muito para que o número seja redefinido para 1 no início de um novo ano fiscal. Não tenho certeza se o problema é como estou gerando meu valor de ano fiscal ou algo totalmente diferente.
Veja o que eu tenho:
Nome da tabela: projetos
Dentro de projetos, tenho os seguintes campos relacionados a esse problema:
- ProjectNo: number - long integer
- Sequência: número - inteiro longo
- EntryFiscalYr: calculado - inteiro longo; expressão lê da seguinte forma:
IIf(Month([EntryDate])>=10,Year([EntryDate])+1,Year([EntryDate]))
- EntryDate: data / hora; valor padrão: Date ()
Nome do formulário: formulário de projetos
No meu formulário de projetos, tenho os seguintes controles:
- Sequência: caixa de texto, a origem do controle é o campo Sequência na tabela Projetos, definida como não visível
-
Botão CreateProjNo:, evento ao clicar:
Private Sub CreateProjNo_Click()
Me.Sequence = Nz(DMax("[Sequence]", "Projects"), 0) + 1
DoCmd.RunCommand acCmdSaveRecord
End Sub
-
ProjectNo: caixa de texto, fonte de controle de dados:
=[EntryFiscalYr] & Format([Sequence],"000")
Isso está sendo exibido como eu gostaria que: 2016001, 2016002, etc.
Eu tentei várias iterações dos códigos no blog de Scottgem para trazer o campo EntryFiscalYr para a instrução DMax para ver se o número da sequência deve continuar incrementando para o ano fiscal atual ou começar de novo para o novo ano fiscal, mas nenhum das minhas tentativas estão funcionando.
Eu tentei:
Me.Sequence = Nz(DMax(“[Sequence]”, ”Projects”,”[EntryFiscalYr]) = “ &(Me.[EntryFiscalYr])),0)+1
Me.Sequence = Nz(DMax(“[Sequence]”, ”Projects”, ” [EntryFiscalYr] = ‘“ & Me.[EntryFiscalYr] & “’”),0)+1
Eu também tentei com Me.[txtEntryFiscalYr]
em vez de Me.[EntryFiscalYr]
. Nenhuma dessas tentativas funcionou.
Acredito que meus problemas possam estar relacionados a como o EntryFiscalYr está gerando para cada registro, mas não tenho a menor idéia de como lidar com isso. Eu tentei com a data gerada pelo EntryDate e que faz um ótimo trabalho com o ano civil, mas é importante obter isso com base no ano fiscal e tê-lo re-definir no início de cada novo ano fiscal.
Além disso, o ProjectNo gerado no Formulário de Projetos não está sendo atualizado para o campo ProjectNo na tabela Projetos, mas, no meu entender, esse é o ponto. Está correto?
Qualquer ajuda para fazer isso funcionar corretamente com o ano fiscal seria muito apreciada.
Obrigado!