AUTO INCREMENTO DE CODIGO

NALDO 28/09/2010 17:11:50
#354021
Olá tenho um problema, eu quero criar um código de loguin para que pessoas loguem com código e não com user name, só que em vez de elas escolherem os códigos eu gostaria de padronizar, sempre gerando um código com uma unidade maior que o anterior mas não sei fazer isso em banco de dados.. sem banco de dado acho que ficaria mais ou menos assim:

[txt-color=#e80000]private sub subCodigo()
dim codigo as integer

if codigo = codigo then
codigo = codigo + 1
end if
end sub
[/txt-color]

espero que tenha entendido, me falaram para usar um código assim:
[txt-color=#e80000]
max(cod) + 1[/txt-color]




PS: Meu banco de dados é MYSQL !
THIGO 28/09/2010 17:24:47
#354023
Vamos la, deixa eu ver se entendi você quer que o usuario logue com esse codigo e sempre somando + 1 se for assim faça isso no select

[ô]Isto é um exemplo se voce postar a estrutura da tabela podemos realizar para voce ok

dim rsAux As New ADODB.Recordset
dim Cod as integer

strsql = [Ô]Select Max(Cod) Seq_Max from cad_usuario where [Ô] [ô]aqui voce pode colocar a quem voce quer que gere esse codigo

if rsaux.state <> 0 then rsaux.close

rsaux.open strsql, condb [ô] banco de dados

[ô]Aqui voce pode testar se o recordset esta aberto ok
cod = rsAux!Seq_Max + 1


ae basta realizar um update com esse codigo, espero que entenda qualquer coisa pegunte
NALDO 28/09/2010 17:32:44
#354027
Entedi mais ou menos, deixa eu tentar ser mais claro.

Eu quero que quando uma pessoa for criar um cadastro o meu programa pushe o codigo do último usuário cadastrado e some com +1
Ex:
________________________________________
| Codigo | Nome |
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |


Eu quero que quando a letra F for se cadastrar ele receba altomaticamente o código 6.... Compreendeo?
THIGO 28/09/2010 17:37:57
#354028
amigo isso mesmo que passei.

dim rsAux As New ADODB.Recordset
dim Cod as integer

strsql = [Ô]Select Max(Cod) Seq_Max from cad_usuario[Ô]

if rsaux.state <> 0 then rsaux.close

rsaux.open strsql, condb [ô] banco de dados

[ô]Aqui realiza a soma do retorno do select + 1
cod = rsAux!Seq_Max + 1

[ô]Aqui voce realiza seu insert do registro F


So adaptar a sua maneira, acho que fui claro qualquer coisa pergunta ae


NALDO 28/09/2010 17:46:26
#354030
meu codigo de cadastro..

Private Sub subGravar()
Dim sSQL As String
Dim rs As New ADODB.Recordset

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]INSERT INTO loguin ([Ô]
sSQL = sSQL & [Ô] usuario, [Ô]
sSQL = sSQL & [Ô] senha, [Ô]
sSQL = sSQL & [Ô] cod) [Ô]
sSQL = sSQL & [Ô]VALUES( [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(3).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(4).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(0).Text & [Ô][ô]) [Ô]

Conn.Execute sSQL, , 128 + 1

MsgBox [Ô]Sua conta já pode ser usada![Ô], vbInformation, [Ô]Cadastrado com Sucesso[Ô]
Call subLimpar

End Sub


eu deveria tirar o cod do cadastro? e da um start nele valendo 1?
THIGO 28/09/2010 18:01:02
#354038
Faça assim

Private Sub subGravar()
Dim sSQL As String
Dim rs As New ADODB.Recordset

dim Cod as integer

strsql = [Ô]Select Max(cod) cod from loguin [Ô]

if rs.state <> 0 then rs.close

rs.open strsql, Conn

[ô]Aqui realiza a soma da maneira que quer
if rsAux!cod <> [Ô]0[Ô] then
cod = rsAux!cod + 1
end if

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]INSERT INTO loguin ([Ô]
sSQL = sSQL & [Ô] usuario, [Ô]
sSQL = sSQL & [Ô] senha, [Ô]
sSQL = sSQL & [Ô] cod) [Ô]
sSQL = sSQL & [Ô]VALUES( [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(3).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(4).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & cod & [Ô][ô]) [Ô]

Conn.Execute sSQL, , 128 + 1

MsgBox [Ô]Sua conta já pode ser usada![Ô], vbInformation, [Ô]Cadastrado com Sucesso[Ô]
Call subLimpar

End Sub


Acho que é isso beleza
NALDO 28/09/2010 18:13:38
#354041
Olha eu to aqui na empresa e não vai dar tempo de eu consultar esse código mas pelo que já teste aqui ele não deu, quando eu chegar em casa eu vou dar uma olhada nele... eu dei umas modificaçãosinhas nele... se você poder da uma olhada... Ele ta gravando todos como 1 não ta somando, ou seja a linha em negrito não esta sendo lida!


Private Sub subGravar()
Dim sSQL As String
Dim rs As New ADODB.Recordset

[ô] Dim Cod As Integer

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô] SELECT [Ô]
sSQL = sSQL & [Ô] Max(cod) max_cod[Ô]
sSQL = sSQL & [Ô] FROM [Ô]
sSQL = sSQL & [Ô] loguin [Ô]

If rs.State <> 0 Then rs.Close

rs.Open sSQL, Conn

[ô]Aqui realiza a soma da maneira que quer
If Cod <> [Ô]0[Ô] Then
Cod = Cod + 1

End If

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]INSERT INTO loguin ([Ô]
sSQL = sSQL & [Ô] usuario, [Ô]
sSQL = sSQL & [Ô] senha, [Ô]
sSQL = sSQL & [Ô] cod) [Ô]
sSQL = sSQL & [Ô]VALUES( [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(3).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(4).Text & [Ô][ô], [Ô]
[txt-color=#e80000] sSQL = sSQL & [Ô] [ô][Ô] & Cod & [Ô][ô]) [Ô][/txt-color]

Conn.Execute sSQL, , 128 + 1

MsgBox [Ô]Sua conta já pode ser usada![Ô], vbInformation, [Ô]Cadastrado com Sucesso[Ô]
Call subLimpar

End Sub

HARRY.POTTER 28/09/2010 18:49:31
#354045
Citação:

:
Entedi mais ou menos, deixa eu tentar ser mais claro.

Eu quero que quando uma pessoa for criar um cadastro o meu programa pushe o codigo do último usuário cadastrado e some com +1
Ex:
________________________________________
| Codigo | Nome |
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |


Eu quero que quando a letra F for se cadastrar ele receba altomaticamente o código 6.... Compreendeo?



Não seria só colocar o campo de código como chave primária e auto_increment = true? Ai você não tem que se preocupar em ficar adicionando no código.
TECLA 28/09/2010 19:19:50
#354048
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);

INSERT INTO animals (name) VALUES
([ô]dog[ô]),([ô]cat[ô]),([ô]penguin[ô]),
([ô]lax[ô]),([ô]whale[ô]),([ô]ostrich[ô]);

SELECT * FROM animals;

+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+----+---------+

Fonte: http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
HARRY.POTTER 28/09/2010 19:20:31
#354049
Foi o que eu disse...
MARCELO.TREZE 28/09/2010 20:41:42
#354060
Veja


Private Sub subGravar()
Dim sSQL As String
Dim rs As New ADODB.Recordset
[txt-color=#007100] [ô] na query você criou um alias(apelido=max_cod)[/txt-color]
sSQL = sSQL & [Ô] SELECT Max(cod) As max_cod FROM loguin[Ô]

If rs.State <> 0 Then rs.Close

rs.Open sSQL, Conn
[txt-color=#007100] [ô] agora vc deve apresentar este apelido[/txt-color]

If (rs.BOF = True And rs.EOF = True) Then
cod = 0
Else
[txt-color=#007100] [ô] aqui pego o ultimo código e somo mais 1[/txt-color]
cod = rs!max_cod + 1
End If

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô]INSERT INTO loguin ([Ô]
sSQL = sSQL & [Ô] usuario, [Ô]
sSQL = sSQL & [Ô] senha, [Ô]
sSQL = sSQL & [Ô] cod) [Ô]
sSQL = sSQL & [Ô]VALUES( [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(3).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(4).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & cod & [Ô][ô]) [Ô]

Conn.Execute sSQL, , 128 + 1

MsgBox [Ô]Sua conta já pode ser usada![Ô], vbInformation, [Ô]Cadastrado com Sucesso[Ô]
Call subLimpar

End Sub


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