PROBLEMAS COM CODIGO SEQUENCIAL

BORBOLETATY 24/11/2010 21:08:25
#358168
Boa noite amigos do vbmania, sou novata aqui no forum, eu gostaria de fazer uma perguntinha simples, se alguem puder me dar uma forcinha ficarei muito grata, vejam só, eu importo um arquivo txt para minha tabela no mysql, minhas tabelas todas tem relacionamentos uma com a outra, entao tenho uma tabela de clientes por exemplo que tenho o codigo cliente , até entao utilizava como VARCHAR(10), nao sei pq fiz isso afff.. e tenho a tabela endereco do cliente que tem o campo codigocliente, ou seja, sao duas tabelas com codigos em comun, so que queria gerar meu codigo do cliente sequencial so que nao to conseguindo, acho que pelo fato de o campo estar como varchar, eu tentei colocar como INTEGER, mas mesmo assim ele nao gera codigo sequencial, achei a função abaixo do nosso amigo msjudas, mas para o tipo integer ele nao gera corretamente, eu gostaria de saber o seguinte, tem como eu converter a coluna varchar para integer e fazer o sistema gerar um codigo sequencial para mim? se sim, como farei? desde ja agradeço muito a atençao e um grande beijo para todos.

  
Public Function ProximoCodigo(vTabela As String, vCampo As String, vCondicao As String)
Dim RsProximo As New ADODB.Recordset
SQL = [Ô]SELECT MAX([Ô] & Trim(vCampo) & [Ô]) AS CODIGO FROM [Ô] & Trim(vTabela) & [Ô][Ô] & vCondicao & [Ô][Ô]
RsProximo.Open SQL, Conexao, adOpenKeyset, adLockReadOnly
If IsNull(RsProximo([Ô]CODIGO[Ô])) = True Then
ProximoCodigo = 1
Else
ProximoCodigo = RsProximo([Ô]CODIGO[Ô]) + 1
End If
RsProximo.Close: Set RsProximo = Nothing
End Function

CHARLESTON10 24/11/2010 21:28:41
#358170
If tbcliente.RecordCount = 0 Then
TomCaixa1.Text = 1
Else
tbcliente.MoveLast
TomCaixa1.Text = tbcliente!Codigo + 1
End If

seria isso ?
BORBOLETATY 24/11/2010 21:46:45
#358173
Obrigado pela resposta charleston, mas creio eu que nao seria tão facil assim não, na minha tabela ja tem clientes cadastrados com numeros nao sequenciais, tipo.

012343
087834
978865
543456

ou seja, esses codigos nos é fornecido pela softhouse que trabalhamos, é um sequencial deles la.. que nao é sequencial para mim, entao o que acontece, se coloco o seu codigo funcionarl, ele me gera no meu controle texto um numero padrao.. tipo 100000, e o proximo ele nao joga como 100001, 100002, e assim por diante.. ele nao ta somando o +1, lembrando que .. meu banco de dados é mysql.
CHARLESTON10 24/11/2010 21:54:29
#358174
Entendo, mas qual é a lógica da sequencia?
BORBOLETATY 24/11/2010 22:05:37
#358175
A logica seria simples, se fosse fazer da forma que vc esta falando, eu teria que ordenar o recordset por codigo, e adicionar +1, exemplo

012343
087834
978865
543456

entao ordenado ficaria


012343
087834
543456
978865

entao o codigo sequencial seria 978865 + 1 ou seja, 978866

EDERMIR 25/11/2010 00:07:07
#358180
Você já tentou converter o VARCHAR para numérico e reverter para VARCHAR?

Wprox = cdbl(ULTIMO CODIGO)
Wprox = Wprox + 1
ULTIMOCODIGO = right([Ô]000000[Ô] & Wprox,6)

BORBOLETATY 25/11/2010 08:07:59
#358181
Citação:

:
Você já tentou converter o VARCHAR para numérico e reverter para VARCHAR?

Wprox = cdbl(ULTIMO CODIGO)
Wprox = Wprox + 1
ULTIMOCODIGO = right([Ô]000000[Ô] & Wprox,6)

bom dia, obrigado pela resposta, mas aqui, em cima do seu codigo eu teria que mover para o ultimo registro e adicionar +1 correto ?
FEDERHEN 25/11/2010 09:56:59
#358192
Obtenha o último código com MAX() e some 1
Depois insira o novo registro com o ultimo maior código somado de um.

Dim RsProximo As New ADODB.Recordset
SQL = [Ô]SELECT MAX(campo) AS CODIGO FROM tabela[Ô]
RsProximo.Open SQL, Conexao, adOpenKeyset, adLockReadOnly
If IsNull(RsProximo([Ô]CODIGO[Ô])) = True Then
Proximo = 1
Else
Proximo = RsProximo([Ô]CODIGO[Ô]) + 1
End If
RsProximo.Close

SQL = [Ô]INSERT INTO tabela(campo1,campo2,campo3,...) VALUES([ô][Ô] & FORMAT(proximo,[Ô]000000[Ô]) & [Ô][ô],[ô][ô],[ô][ô],[ô][ô],...)
Conexao.execute SQL

BORBOLETATY 25/11/2010 11:01:32
#358198
Ta bom lindos, mas qual o tipo do campo tem que estar no mysql? varchar ? ou INT?
MARCELO.TREZE 25/11/2010 11:53:22
#358202
Tipo INT seria o ideal
FEDERHEN 25/11/2010 15:10:54
#358217
eu uso varchar e não dá problema...
Tópico encerrado , respostas não são mais permitidas