Estou utilizando a seguinte expressão no campo valor padrão para somar 1 ao numero anterior do campo numero.// =SeImed(DContar("[NunPed]";"[Pedidos]")=0;("2461" & Ano(Data()));Format((Esquerda(DMáx("[NunPed]";"[Pedidos]");4)+1) & Ano(Data());"0000\/00"))//.O ultimo número que eu tenho neste campo é 2461/13, entretanto quando clico em criar novo registro, no campo do formulário aparece 246220/13.
2 participantes
[Resolvido]Criar uma sequencia em um formulario somando 1 ao numero anterior
phdgodoy- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 17
Registrado : 26/10/2013
Clebergyn- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 788
Registrado : 29/08/2012
Amigo, uso essa formula aqui abaixo, num campo texto, e quando muda de ano ele zera e começa do 1, voce vai precisar da "DataRegistro" em que cada registro tenha uma data de registro ok?
tem outras maneiras de fazer, para isso preciso verificar como organizou seu banco de dados
acho um erro do Access não ter essa função de enumerar, entao veja ai
"NunPed" tem que ser um campo texto
se servir, pega ai:
function enumerar()
On Error GoTo g
If IsNull([NunPed]) Then
x0 = DLast("[NunPed]", "[suatabela]")
x = DMax("[NunPed]", "[suatabela]", "Year([DataRegistro]) =" & Year(Date) & " OR Isnull([DataRegistro])")
If IsNull(x0) Then
MsgBox ("O Registro anterior está vazio, concerte, volte ou exclua")
Exit Sub
End If
y = Right(x, 2)
If IsNull(y) Or IsEmpty(y) Then
y1 = Format(Date, "YY")
Else
y1 = CInt(y)
End If
s = Len(x)
t = Mid(x, 1, s - 3)
If IsNull(y) Or IsEmpty(y) Then
t = 0
Else
t = CInt(t)
End If
'MsgBox x & "," & y & "," & s & "," & T
d = Format(Date, "yy")
If d - y1 > 0 Then
t = 0
End If
End If
If IsNull([NunPed]) Then
[NunPed] = " "
[NunPed] = Format(t + 1, "000") & "/" & Format(Date, "YY")
End If
Exit Sub
g: MsgBox ("Coloque a numeração do registro anterior no formato 000/00")
end function
obs: - Outra idéia de outra forma, quando voce cria o campo texto(numeração) nnnn/aa e procura qual é o maior entre, por exemplo, 121/12 e 120/13 ele o sistema vai falar que 121/12 é maior entende? Complica. Então seria conveniente criar um campo "numero" para guardar o 121 e um campo "ano" para guardar o "12", ocultos, assim que gerar um novo numero. a partir daí, dá para voce saber já qual é o maior numero e gerar o posterior, chegando 31/12/13 ele vai gerar o ultimo numero "ano = 13" e dia 01/01/14 ele vai pegar: se Ano(Date())>Dultimo(ano) e vai começar de um(1) de novo.
em outras palavras, fica bem mais fácil se criar dois campos ocultos, um para o numero e outro para o ano.
ficou claro?
tem outras maneiras de fazer, para isso preciso verificar como organizou seu banco de dados
acho um erro do Access não ter essa função de enumerar, entao veja ai
"NunPed" tem que ser um campo texto
se servir, pega ai:
function enumerar()
On Error GoTo g
If IsNull([NunPed]) Then
x0 = DLast("[NunPed]", "[suatabela]")
x = DMax("[NunPed]", "[suatabela]", "Year([DataRegistro]) =" & Year(Date) & " OR Isnull([DataRegistro])")
If IsNull(x0) Then
MsgBox ("O Registro anterior está vazio, concerte, volte ou exclua")
Exit Sub
End If
y = Right(x, 2)
If IsNull(y) Or IsEmpty(y) Then
y1 = Format(Date, "YY")
Else
y1 = CInt(y)
End If
s = Len(x)
t = Mid(x, 1, s - 3)
If IsNull(y) Or IsEmpty(y) Then
t = 0
Else
t = CInt(t)
End If
'MsgBox x & "," & y & "," & s & "," & T
d = Format(Date, "yy")
If d - y1 > 0 Then
t = 0
End If
End If
If IsNull([NunPed]) Then
[NunPed] = " "
[NunPed] = Format(t + 1, "000") & "/" & Format(Date, "YY")
End If
Exit Sub
g: MsgBox ("Coloque a numeração do registro anterior no formato 000/00")
end function
obs: - Outra idéia de outra forma, quando voce cria o campo texto(numeração) nnnn/aa e procura qual é o maior entre, por exemplo, 121/12 e 120/13 ele o sistema vai falar que 121/12 é maior entende? Complica. Então seria conveniente criar um campo "numero" para guardar o 121 e um campo "ano" para guardar o "12", ocultos, assim que gerar um novo numero. a partir daí, dá para voce saber já qual é o maior numero e gerar o posterior, chegando 31/12/13 ele vai gerar o ultimo numero "ano = 13" e dia 01/01/14 ele vai pegar: se Ano(Date())>Dultimo(ano) e vai começar de um(1) de novo.
em outras palavras, fica bem mais fácil se criar dois campos ocultos, um para o numero e outro para o ano.
ficou claro?
phdgodoy- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 17
Registrado : 26/10/2013
- Mensagem nº3
Formulario Access sequencia em um campo txt
Obrigado pelo retorno. Meu Access é 2010. Criei uma caixa texto e no campo fonte de controle colei a formula, mas esta dando erro de sintaxe invalida. Criei também um campo DataRegistro.
Clebergyn- Super Avançado
- Respeito às regras :
Sexo :
Localização :
Mensagens : 788
Registrado : 29/08/2012
o Campo "DataRegistro" tem que ser criado na tabela também, então, onde esta "exit sub" coloque "exit function"
ou senao coloque toda a função abaixo dentro de um sub, esqueça o function, e preencha os campos DataRegistros para todos os registros
se quiser converter seu banco para access 2003, zipado, e me enviar aqui, posso dar uma olhada ok
On Error GoTo g
If IsNull([NunPed]) Then
x0 = DLast("[NunPed]", "[suatabela]")
x = DMax("[NunPed]", "[suatabela]", "Year([DataRegistro]) =" & Year(Date) & " OR Isnull([DataRegistro])")
If IsNull(x0) Then
MsgBox ("O Registro anterior está vazio, concerte, volte ou exclua")
Exit Sub
End If
y = Right(x, 2)
If IsNull(y) Or IsEmpty(y) Then
y1 = Format(Date, "YY")
Else
y1 = CInt(y)
End If
s = Len(x)
t = Mid(x, 1, s - 3)
If IsNull(y) Or IsEmpty(y) Then
t = 0
Else
t = CInt(t)
End If
d = Format(Date, "yy")
If d - y1 > 0 Then
t = 0
End If
End If
If IsNull([NunPed]) Then
[NunPed] = " "
[NunPed] = Format(t + 1, "000") & "/" & Format(Date, "YY")
End If
Exit Sub
g: MsgBox ("Coloque a numeração do registro anterior no formato 000/00")
ou senao coloque toda a função abaixo dentro de um sub, esqueça o function, e preencha os campos DataRegistros para todos os registros
se quiser converter seu banco para access 2003, zipado, e me enviar aqui, posso dar uma olhada ok
On Error GoTo g
If IsNull([NunPed]) Then
x0 = DLast("[NunPed]", "[suatabela]")
x = DMax("[NunPed]", "[suatabela]", "Year([DataRegistro]) =" & Year(Date) & " OR Isnull([DataRegistro])")
If IsNull(x0) Then
MsgBox ("O Registro anterior está vazio, concerte, volte ou exclua")
Exit Sub
End If
y = Right(x, 2)
If IsNull(y) Or IsEmpty(y) Then
y1 = Format(Date, "YY")
Else
y1 = CInt(y)
End If
s = Len(x)
t = Mid(x, 1, s - 3)
If IsNull(y) Or IsEmpty(y) Then
t = 0
Else
t = CInt(t)
End If
d = Format(Date, "yy")
If d - y1 > 0 Then
t = 0
End If
End If
If IsNull([NunPed]) Then
[NunPed] = " "
[NunPed] = Format(t + 1, "000") & "/" & Format(Date, "YY")
End If
Exit Sub
g: MsgBox ("Coloque a numeração do registro anterior no formato 000/00")
phdgodoy- Novato
- Respeito às regras :
Sexo :
Localização :
Mensagens : 17
Registrado : 26/10/2013
- Mensagem nº5
criar sequencia
Mudei para versao 2007 e funcionou. Obrigado
Conteúdo patrocinado
» [Resolvido]Criar numero de série
» [Resolvido]Botão para abrir formulário no registro corrente do formulário anterior
» Criar sequencia numérica baseada no registro anterior no formulário
» [Resolvido]consulta somandos mes do ano anterior ,com o mes do ano atual
» [Resolvido]Criar critério na consulta para filtrar apenas datas do ano anterior
» [Resolvido]Botão para abrir formulário no registro corrente do formulário anterior
» Criar sequencia numérica baseada no registro anterior no formulário
» [Resolvido]consulta somandos mes do ano anterior ,com o mes do ano atual
» [Resolvido]Criar critério na consulta para filtrar apenas datas do ano anterior