MOSTRAR_PROXIMO_REGISTRO_CAMPO

FERRAZ 08/09/2015 08:15:40
#451118
Omar2011, Acciolly, tudo bem.

Vou testar as instruções e depois eu informo o resultado.

Grato.
ACCIOLLY 08/09/2015 08:38:41
#451119
Só uma pequena correção:

[ô]em general declarations
Imports conexao

[ô]no seu comando de pesquisa
Dim conn as New conexao [ô]essa é a instancia da classe de conexao
Dim dados as [txt-color=#e80000]DataTable = [/txt-color]conn.Pesquisar([Ô]SELECT * FROM TbForn Order By Registro DESC LIMIT 1[Ô])
Dim ProxRegistro As Integer = Convert.toInt16(dados.Rows(0)([Ô]codigo_registro[Ô]).ToString()) + 1 [ô]código_registro na verdade é o campo da tabela
TxtReg.Text = Format$(ProxRegistro.toString(), [Ô]000000[Ô])
FERRAZ 08/09/2015 15:21:14
#451134
Acciolly, tudo bem.

Fiz os testes e notei uma coisa, eu tenho no banco gravados 3 (tres) registros e quando abro o form ele me informa que o proximo registro eh [Ô]000005[Ô] mais deveria ser [Ô]000004[Ô] porque, ainda não conseguir matar a xarada.

Grato,
FERRAZ 08/09/2015 16:16:18
#451135
Acciolly, tudo bem.

Citação:

Fiz os testes e notei uma coisa, eu tenho no banco gravados 3 (tres) registros e quando abro o form ele me informa que o proximo registro eh [Ô]000005[Ô] mais deveria ser [Ô]000004[Ô] porque, ainda não conseguir matar a xarada.



Bom eu contornei o erro assim não sei se vai acarretar outro erro no futuro proximo foi assim;


Private Sub FrmFerrtas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TxtDta.Text = Date.Today
Dim conn As New Conn [ô]essa é a instancia da classe de conexao
Dim dados As DataTable = conn.Pesquisar([Ô]SELECT * FROM TbFerrtas Order By Registro DESC LIMIT 1[Ô])
Dim ProxRegistro As Integer = Convert.ToInt16(dados.Rows(0)([Ô]Registro[Ô]).ToString()) + 1 [ô]código_registro na verdade é o campo da tabela
TxtReg.Text = Format$(ProxRegistro.ToString() + 1 - 1, [Ô]00000[Ô])
End Sub


Grato.
ACCIOLLY 08/09/2015 17:10:05
#451137
Citação:

:
Acciolly, tudo bem.

Fiz os testes e notei uma coisa, eu tenho no banco gravados 3 (tres) registros e quando abro o form ele me informa que o proximo registro eh [Ô]000005[Ô] mais deveria ser [Ô]000004[Ô] porque, ainda não conseguir matar a xarada.

Grato,



A xarada é que se seu campo é autonumerico e tiver 4 registros gravados e desses 4 vc apagar o numero 2, o próximo registro vai ser o numero 5 e não o numero 4.

A codificação que vc fez foi simplesmente pegar o ultimo registro do banco e somar o valor do campo [Ô]Registro[Ô] + 1. Se vc quer ter uma sequencia então vc deve fazer uma contagem de quantos registros tem na sua tabela. Tipo assim:

Dim conn as New conexao [ô]essa é a instancia da classe de conexao
Dim dados as DataTable = conn.Pesquisar([Ô]SELECT COUNT(Registro) AS quantidade FROM tbFerrtas[Ô])
Dim ProxRegistro As Integer = Convert.toInt16(dados.Rows(0)([Ô]quantidade[Ô]).ToString()) + 1 [ô]código_registro na verdade é o campo da tabela
TxtReg.Text = Format$(ProxRegistro.toString(), [Ô]000000[Ô])


Obs:
Já que vc tá fazendo isso antes de gravar no banco faça com que sua chava primária não seja autonumérica. e se vc quizer que apareça todos esses zeros antes, ela também não pode ser numérica(coisa que eu normalmente não aconselharia).

Té mais

NILSONTRES 08/09/2015 19:08:27
#451142
Isso em uma rede pode gerar um problema monstro.
Cuidado com campo auto incremente, cuidado com outro usuário pegando o mesmo numero de registro, isso é difícil mas não impossível, já tive problemas assim.
A uns 10 anos atras sofri muito com isso, encontrei a solução assim:
Uma Tabela só para armazenar o próximo registro, a cada registro inserido acrescenta + 1 (Atenção, isso antes de dar o Commit na transação), esse incremento deve fazer parte da transação.
A tabela onde o registro for inserido deve possuir o campo chave primaria e não permitir duplicidade, isso gera um erro caso outro usuário da rede tentar inserir o mesmo numero, Então o sistema identifica esse erro de duplicidade e acrescenta +1 ao numero , assim o sistema fara um loo ping até achar um numero aceito, ai sim grava o registro atual e esse numero sera o incremento para o próximo registro.
Agora se não for trabalhar em rede, esquece o que escrevei.
FERRAZ 09/09/2015 07:39:59
#451150
Acciolly,

meu campo não eh numerico e não eh tbem auto incremento e não excluir um numero entre outro numero, o campo eh varchar, agora para explicar o que houve, eu mudei o tipo do campo com uns dois registro lá e depois voltei para varchar aí começou esse erro na soma. Vou fechar o topico porque minha dúvida foi resolvida obrigado amigo.

Nilsontres, eu pretendo sim trabalhar em rede em um futuro proximo e vou atentar para as duas dicas obrigado.

Grato,
Página 2 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas