CODIGO CHAVE SEQUENCIAL - ADO/SQL.
Consegui dessa forma:
Mas só funciona inserindo informações em somente um campo, em mais de um não consegui rodar ainda não...
mas to tentando, qualquer coisa eu posto aqui.
INSERT INTO Tabela1 ( codigo )
SELECT Max(Tabela1.codigo) + 1
FROM Tabela1;
Mas só funciona inserindo informações em somente um campo, em mais de um não consegui rodar ainda não...
mas to tentando, qualquer coisa eu posto aqui.
Marcelo, pra inserir direto da forma que fez e com mais de um campo seria:
Ou então:
Falow...
INSERT INTO Tabela1 ( codigo, nome )
VALUES((SELECT Max(Tabela1.codigo) + 1 FROM Tabela1), 'SeuNome');
Ou então:
INSERT INTO Tabela1 ( codigo, nome )
SELECT Max(Tabela1.codigo) + 1, 'SeuNome' As Nome
FROM Tabela1;
Falow...
Matioli,
tentei isso viu cara, no Access e deu o erro que o maninho ali falou...
já havia tentado das duas formas que vc falou, ou eu fiz alguma coisa errada ou só funciona no SQL Server
tentei isso viu cara, no Access e deu o erro que o maninho ali falou...
já havia tentado das duas formas que vc falou, ou eu fiz alguma coisa errada ou só funciona no SQL Server
Marcelo....no SQL SERVER é desse jeito q vc faz::
If TBClientes.State = 1 Then TBClientes.Close
StringSQL = "Select MAX(Codigo) from Clientes"
TBClientes.Open StringSQL, Cnn, adOpenDynamic
If IsNull(TBClientes(0)) = True Then
MaxCodigo = "000001"
Else
MaxCodigo = Format(TBClientes(0) + 1, "000000")
End If
StringSQL = "Insert Into Clientes (Codigo) Values ('" & MaxCodigo & "')
o Maxcodigo esta com format para o codigo ficar assim...
000001
000002
000003 e assim sucessivamente.....
espero que possa ajudar.....
If TBClientes.State = 1 Then TBClientes.Close
StringSQL = "Select MAX(Codigo) from Clientes"
TBClientes.Open StringSQL, Cnn, adOpenDynamic
If IsNull(TBClientes(0)) = True Then
MaxCodigo = "000001"
Else
MaxCodigo = Format(TBClientes(0) + 1, "000000")
End If
StringSQL = "Insert Into Clientes (Codigo) Values ('" & MaxCodigo & "')
o Maxcodigo esta com format para o codigo ficar assim...
000001
000002
000003 e assim sucessivamente.....
espero que possa ajudar.....
Citação:MARCELOHF escreveu:
Matioli,
tentei isso viu cara, no Access e deu o erro que o maninho ali falou...
já havia tentado das duas formas que vc falou, ou eu fiz alguma coisa errada ou só funciona no SQL Server
xi...desculpa então...^^
acontece né MATIOLI... é da vida! haha
F001E, assim tudo bem né, agente até sabe, agente anda apanhando pra fazer tudo na mesma instrução SQL.
F001E, assim tudo bem né, agente até sabe, agente anda apanhando pra fazer tudo na mesma instrução SQL.
pode cre.... é q eu nunca tentei fazer na mesma instrução.....
mas eu estava vendo o comentario da Elaine.... ela falou q poderá ter problemas com multiusuario....bom.. ela pode gerar o Codigo quando ele for gravar....assim quando o SQL nunca vai gravar dois Códigos iguais...ou é um ou é o outro....nunca vai bater os Codigo...eu uso assim e funciona..a não ser q seja com duas tabelas....daà e de outra forma....
é... se eu não me engano isso já foi até postado aqui também...
mais ai o assunto foi indo e chegamos nesse assunsto de Insert e Select juntos em banco Access que não funfa de jeito nenhum! hehe
mais ai o assunto foi indo e chegamos nesse assunsto de Insert e Select juntos em banco Access que não funfa de jeito nenhum! hehe
Olá Pessoal,
Eu faço da maneira abaixo utilizando Access. Eu pego o código no momento que o usuário grava as informações e não qdo ele inicia a inclusão do registro. Mesmo rodando em multiusuários não ocorre de gerar códigos duplicados.
Dim RsConfirma As New ADODB.Recordset
Sql = "Select COD_CLI, [NOME/RAZ_SOC] from Clientes order by COD_CLI"
RsConfirma.Open Sql, cnn, adOpenDynamict, adLockReadOnly
If Not RsConfirma.EOF Then
RsConfirma.MoveLast
CODIGO = RsConfirma!cod_cli + 1
RsConfirma.MoveFirst
RsConfirma.Find "[NOME/RAZ_SOC] = '" + txtNome.text + "'"
If Not RsConfirma.EOF Then
X = MsgBox("Cliente já cadastrado.", 16, "XXXX")
Screen.MousePointer = 0
txtNome.SetFocus
Exit Sub
End If
Else
CODIGO = 1
End If
RsConfirma.Close
Espero poder ter ajudado...
Flw...
Abraços.
Eu faço da maneira abaixo utilizando Access. Eu pego o código no momento que o usuário grava as informações e não qdo ele inicia a inclusão do registro. Mesmo rodando em multiusuários não ocorre de gerar códigos duplicados.
Dim RsConfirma As New ADODB.Recordset
Sql = "Select COD_CLI, [NOME/RAZ_SOC] from Clientes order by COD_CLI"
RsConfirma.Open Sql, cnn, adOpenDynamict, adLockReadOnly
If Not RsConfirma.EOF Then
RsConfirma.MoveLast
CODIGO = RsConfirma!cod_cli + 1
RsConfirma.MoveFirst
RsConfirma.Find "[NOME/RAZ_SOC] = '" + txtNome.text + "'"
If Not RsConfirma.EOF Then
X = MsgBox("Cliente já cadastrado.", 16, "XXXX")
Screen.MousePointer = 0
txtNome.SetFocus
Exit Sub
End If
Else
CODIGO = 1
End If
RsConfirma.Close
Espero poder ter ajudado...
Flw...
Abraços.
Tópico encerrado , respostas não são mais permitidas