NUMERACAO AUTOMATICA - VB.NET
Boa noite,
Estou querendo incrementar no meu Form um codigo ID com numeraçao automatica, por isso peço a voces que postem aqui um codigo para me ajudar, por favor.
Uso o VB.NET
Banco de dados ACCESS
O Acces tem a numeraçao automatica, mas e simplesmente um numero - 1, 2, 3, 4 etc eu quero para criar numeracao automatica tipo: 0001,0002,0003,0004 etc. Podem me ajudar?
Aguardo a colaboraçao de todos.
Um abraço
JMRF
Você pode utilizar a auto numeração do access, para exibir os zeros, você pode usar o exemplo que tem nesse TÓPICO .
Bom dia,
Amigo, não consegui resolver com a indicação acima. Será que teria mais alguma dica a me passar para eu resolver esse problema?
Obrigado
JMRF
Qual o problema que não conseguiu resolver, algum erro?
Se você quer colocar, por exemplo: 0001, em uma campo de numeração automática, esqueça. Não é possÃvel.
Você teria que criar um campo do tipo Texto e colocar esta numeração lá, utilizando a teoria que o ALTAIR148 mostrou.
Seguindo a teoria do ALTAIR148, ficaria o seguinte:
Você, primeiro, irá buscar o código da numeração automática do ACCESS (Vamos supor que seja o número 1)
Deve ter um modo mais fácil de fazer, mas como eu estou sem o Visual Studio no momento
Acho que assim deve funcionar.
[txt-size=5]Lembre-se de que a conexão com o BD deve estar aberta para usar este exemplo.[/txt-size]
Você teria que criar um campo do tipo Texto e colocar esta numeração lá, utilizando a teoria que o ALTAIR148 mostrou.
Seguindo a teoria do ALTAIR148, ficaria o seguinte:
Você, primeiro, irá buscar o código da numeração automática do ACCESS (Vamos supor que seja o número 1)
Dim strSQL As String = [txt-color=#e80000][Ô]SELECT Codigo FROM TBLDados WHERE Nome=[ô]Testando 123[ô] [Ô][/txt-color]
Dim AdapTer As New OleDb.OleDbDataAdapter
Dim Conexao As New OleDb.OleDbConnection
Dim Reader As OleDb.OleDbDataReader
Dim Cod As String = [Ô][Ô]
AdapTer.SelectCommand = Conexao.CreateCommand
AdapTer.SelectCommand.CommandText = strSQL
Reader = AdapTer.SelectCommand.ExecuteReader()
While Reader.Read()
Cod = Reader.Item([txt-color=#e80000][Ô]Codigo[Ô][/txt-color])
End While
[txt-color=#0000f0]Select Case [/txt-color]Cod.Length
[txt-color=#0000f0]Case [/txt-color]1
Cod = [txt-color=#e80000][Ô]000[Ô][/txt-color] & Cod
[txt-color=#0000f0]Case [/txt-color]2
Cod = [txt-color=#e80000][Ô]00[Ô][/txt-color] & Cod
[txt-color=#0000f0]Case[/txt-color] 3
Cod = [txt-color=#e80000][Ô]0[Ô][/txt-color] & Cod
End Select
Deve ter um modo mais fácil de fazer, mas como eu estou sem o Visual Studio no momento
Acho que assim deve funcionar.
[txt-size=5]Lembre-se de que a conexão com o BD deve estar aberta para usar este exemplo.[/txt-size]
Boa tarde,
ALTAIR148 e PEGUDO,
Usando a numeração automática gerada pelo Access eu consegui resolver assim:
(Só que eu queria aprender gerar um código de numeração automática, por eu mesmo, ou seja pelo próprio programa sem depender do Acces, mas tudo bem).
Obs: Com o Código que usei aparece no campo Código: 00001, 00002, 00010, 00100, 09999, 99999 coloquei no meu código para aceitar só [Ô]5[Ô] dÃgitos no campo, que é o que preciso.
Private Sub txtauto_num_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtauto_num.LostFocus
If txtauto_num.Text <> [Ô][Ô] Then [ô]Se o campo Código estiver vazio
txtauto_num.Text = txtauto_num.Text.PadLeft(5, [Ô]0[Ô]) [ô]Essa linha de código coloca tantos [Ô]zeros[Ô] à esquerda quantas sejam preciso para ficar [Ô]cinco[Ô] dÃgitos no Campo Código[ô] se eu quisesse 8 números no campo Código mudaria para (txtauto_num.Text = txtauto_num.Text.PadLeft([txt-color=#e80000]8,[/txt-color] [Ô]0[Ô]))
If txtauto_num.Text.Length <> 5 Then [ô] Se no campo Código foram digitados mais de cinco caracteres
MessageBox.Show([Ô]Digite somente 5 caracteres[Ô]) [ô] Uma caixa de mensagem dá a mensagem entre parênteses
txtauto_num.Text = [Ô][Ô] [ô] Limpa o campo Código
txtauto_num.Focus() [ô] O cursor mantêm-se no próprio campo Código para nova digitação
End If
End If
End Sub
End Class
Obs: Postei o Código e comentei linha a linha para que alguém que está no começo do aprendizado de programação, como é o meu caso, não só tenha ajuda completa mas também saiba o que cada linha de código faz. Muitas vezes recebemos ajuda dos companheiros que nos tratam como se já dominássemos as coisas, e nós não sabemos à s vezes que quando o cara põe: txtbox.1 ele está só exemplificando e nós ainda não sabemos que onde está txtbox.1 eu devo substituir por meu campo, o campo no meu Formulário, aconteceu comigo no iniciozinho. é uma sugestão, não uma crÃtica. Fico muito grato a todos que nos ajudam pois senão não conseguiÃrÃamos resolver nossas dúvidas, à s vezes à custa e muitas tentativas e erros, mas sempre aproveitamos o que vocês nos passam.
Agradeço imensamente a ajuda de vocês e não dispenso em uma próxima oportunidade, que continuem me ajudando e também aos outros com dúvida.
Um abraço á todos
Muito Obrigado
JMRF
JMRF, um conselho que te dou: Use SEMPRE os auto-numeradores do banco de dados. Se seu sistema operar em rede, vc evitará dores de cabeça imensas.
Boa noite,
LLAIA,
Agradeço a sua indicação, porque parece simples mas é importantÃssima. Pensa, se depois de tudo pronto, executável criado, programa instalado começam os problemas simplesmente porque a [Ô]numeração automática[Ô] está dando pau e seu eu tivesse usado a do próprio Banco de Dados não passaria por isso? Valeu a dica.
Obrigado
JMRF
A do próprio banco (até mesmo no Access (Jet Database)) é mais segura, pois é feita em um nÃvel mais baixo, no gerenciamento de transações. Imagine dezenas de estações enviando registros para uma tabela, na hora de criar o número, o driver ou o engine do banco de dados responsável pela inserção, vai gerar esse número com base no controle que ele tem. Ou seja, todas as estações utilizam o mesmo controlador de números automáticos. :)
Boa tarde,
Aproveitando a conversa, gostaria de uma ajuda, sou iniciante no Vb.net e no access.
Estou criando uma aplicação onde tenho um numero de controle com a numeração automática do access, onde eu faço a busca e a navegação entre os registros atraves dele.
O problema é que quando eu deleto algum registro da tabela, o número não retorna para o anterior, por exemplo, tenho a sequencia 1,2,3,4,5. Se eu excluir o registro 3 o banco de dados irá ficar 1,2,4,5.
Gostaria que o banco de dados retornasse os valores deste campo.
Aproveitando a conversa, gostaria de uma ajuda, sou iniciante no Vb.net e no access.
Estou criando uma aplicação onde tenho um numero de controle com a numeração automática do access, onde eu faço a busca e a navegação entre os registros atraves dele.
O problema é que quando eu deleto algum registro da tabela, o número não retorna para o anterior, por exemplo, tenho a sequencia 1,2,3,4,5. Se eu excluir o registro 3 o banco de dados irá ficar 1,2,4,5.
Gostaria que o banco de dados retornasse os valores deste campo.
Boa tarde,
Caro WILLIAMXXX6, todo banco a numeração automática funciona assim, isso garante que seja seguida uma sequência, uma vez que esse é o intuito da numeração automática.
Caro WILLIAMXXX6, todo banco a numeração automática funciona assim, isso garante que seja seguida uma sequência, uma vez que esse é o intuito da numeração automática.
Tópico encerrado , respostas não são mais permitidas