NUMERACAO AUTOMATICA - VB.NET

JMRF 11/06/2012 21:45:49
#403946

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
ALTAIR148 11/06/2012 21:54:03
#403947
Resposta escolhida
Você pode utilizar a auto numeração do access, para exibir os zeros, você pode usar o exemplo que tem nesse TÓPICO .
JMRF 13/06/2012 11:03:03
#404046

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
ALTAIR148 13/06/2012 11:05:31
#404048
Qual o problema que não conseguiu resolver, algum erro?
PEGUDO 13/06/2012 11:49:23
#404052
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)
 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]
JMRF 13/06/2012 14:13:05
#404071

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
LLAIA 13/06/2012 15:37:16
#404074
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.
JMRF 13/06/2012 19:46:37
#404093

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
LLAIA 14/06/2012 17:14:41
#404183
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. :)
WILLIAMXXX6 06/07/2012 17:26:44
#405663
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.
ALTAIR148 06/07/2012 17:53:55
#405665
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.
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas