SELECT PROX NÊMERO LIVRE
Por nada, estamos ai para isso mesmo....rs.
Se der certo, não esqueça de finalizar o tópico.
Qualquer coisa que você discorda ou questiona nos brasileiro não gostamos de resposta contrárias.
Vamos lá.
Transforme isto em código vbnet e disponibiliza para os outros,
pois muitos poderá aproveitar o mesmo.
Fiz o teste aqui e deu certo. Vale ressaltar que muitos não conhece.
Valeu.
Vou emagrecer.
Citação:RO_DRIGOSG
Uma sugestão para o pessoal do fórum:
Não estou querendo causar discussão no fórum, mas acredito que o fórum seja para tirar dúvidas e não para ficarem questionando se os processos dos outros estão certos ou não. Lógico que há processos que não são viáveis ao NOSSO VER, mas não estamos aqui para ficar corrigindo os processos dos outros, além do mais, nem sabemos como funciona o sistema do nosso amigo ai. Acho que no máximo podemos dar umas dicas do que seria viável ou não e assim ELE tomará a decisão de mudar ou não as rotinas do sistema dele. Se não souberem a resposta, não fiquem questionando se o processo está certo ou não.
Esse é o meu ponto de vista.
Concordo com você, cada um tem seu ponto de vista e aqui temos a mania de querer achar o que é melhor ou não é, mais não fazemos isto por mal, mas sim para ajudar alguém que as vezes não tem conhecimento do que está fazendo(Acredito que não é caso dele). A questão não é saber a resposta, até por que, o fórum é um local para se discutir uma resposta, eu posso postar uma solução, assim como você também, e ele escolher a de outra pessoa. Questionar faz parte de quando você não entende o processo, ou até entende e não acha que aquilo é correto, isto faz parte, quantas vezes questionamos o que é certo ou não? Para que você pudesse postar a resposta eu tive que questionar, e seu eu não tivesse questionado, você iria postar algo? Alguém teria dado continuidade? é tudo um processo!
Enfim, a solução foi dada, e é interessante, assim como o OMAR2011 disse, converte para VB.net e disponibilize o código para a comunidade.
Abraços a Todos.
(
ID INT NOT NULL
)
INSERT INTO ##TESTE VALUES (1)
-- INSERT INTO ##TESTE VALUES (3)
INSERT INTO ##TESTE VALUES (2)
INSERT INTO ##TESTE VALUES (4)
INSERT INTO ##TESTE VALUES (6)
-- INSERT INTO ##TESTE VALUES (5)
INSERT INTO ##TESTE VALUES (7)
--INSERT INTO ##TESTE VALUES (8)
-- DELETE FROM ##TESTE WHERE ID = 3
SELECT MIN(V.IDVAGO)
FROM (
SELECT (ID+1) AS IDVAGO
FROM ##TESTE T1
WHERE NOT EXISTS (
SELECT ID FROM ##TESTE T2
WHERE T2.ID = (T1.ID+1)
)
) AS V
-- 1 2 4 6 7
-- 3 5
Valeu.
Segue o código em VB.NET:
Obs.: Não estou com o VB.NET instalado aqui no serviço, fiz no bloco de notas então não sei se esta totalmente correto, verifiquem se está correto.
Private Function Teste() As Integer
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sSQL As String
Dim strConn As String
Dim ID As Integer
Dim SEQ As Integer
strConn = [Ô]Provider=sqloledb;[Ô] & _
[Ô]DRIVER={SQLServer};[Ô] & _
[Ô]SERVER=.\TesteSQL;[Ô] & _
[Ô]DATABASE=Banco;[Ô] & _
[Ô]Trusted_Connection=yes[Ô]
conn.Open(strConn)
sSQL = [Ô]SELECT ID FROM TESTE ORDER BY ID[Ô]
rs.Open(sSQL, conn)
rs.MoveFirst()
If Not rs.EOF Then
Do Until rs.EOF
SEQ = SEQ + 1
If rs.ID <> SEQ Then
Teste = SEQ
Exit Function
End If
rs.MoveNext()
Loop
Else
End If
rs.Close()
conn.Close()
rs = Nothing
End Function
GUIMORAES,
Sei que ninguém faz isso por mal, na realidade é mais um costume mesmo, mas temos que perder esse costume, pelo menos eu acho isso.
Mesmo se ninguém tivesse postado alguma coisa, minha resposta seria a mesma, pois entendo que a pergunta do nosso amigo ROGERIO foi simples e direta para o que ele precisava. Novamente, isso no meu ponto de vista.
Também sei que a minha resposta não foi a melhor, pois nosso amigo PIOLHO deu uma solução muito mais simples do que fazer um CURSOR, um simples SELECT e indico para o ROGERIO esta solução.
Citação:Uma sugestão para o pessoal do fórum:
Não estou querendo causar discussão no fórum, mas acredito que o fórum seja para tirar dúvidas e não para ficarem questionando se os processos dos outros estão certos ou não. Lógico que há processos que não são viáveis ao NOSSO VER, mas não estamos aqui para ficar corrigindo os processos dos outros, além do mais, nem sabemos como funciona o sistema do nosso amigo ai. Acho que no máximo podemos dar umas dicas do que seria viável ou não e assim ELE tomará a decisão de mudar ou não as rotinas do sistema dele. Se não souberem a resposta, não fiquem questionando se o processo está certo ou não.
Esse é o meu ponto de vista.
Abraço à todos.
Você esta completamente enganado, um forum é exatamente para isso, pois se vc não sabe tem muito novato aqui, o nÃvel esta bem principiante,
A não ser que vc não tenha acompanhado os tópicos com tanta frequência como eu.
Respostas como a sua é que me faz desanimar de tentar resolver tópicos, pois temos que responder só o que o interessado quer ler, e não o que achamos ou o que pode ser útil a ele em futuros projetos até.
Gostaria de saber qual o tipo de dano ao nosso colega que postou o tópico, as respostas postadas por min e meus outros colegas.
Alguém pode dizer, não atrapalhou mas não ajudou, mas sera que um novato sabe que não é recomendado utilizar números deletas na cadastro ?
Acho que em alguma coisa pode ajudar sim.
Citação:Você esta completamente enganado, um forum é exatamente para isso, pois se vc não sabe tem muito novato aqui, o nÃvel esta bem principiante,
A não ser que vc não tenha acompanhado os tópicos com tanta frequência como eu.
Respostas como a sua é que me faz desanimar de tentar resolver tópicos, pois temos que responder só o que o interessado quer ler, e não o que achamos.
Não concordo com você, o fórum é para tirar dúvidas especificas e rápidas, não ficar escrevendo um livro no tópico e como disse anteriormente, no meu ponto de vista a pergunta foi simples e direta. Não há necessidades de questionamento sobre o que o sistema faz ou não. Se ele quisesse saber sobre boas práticas e qual a melhor solução e perguntaria com certeza.
Citação:Se depender de min, Causou, não confunda com briga, mas sim discussão.
Entenda como quiser, você está no seu direito como usuário do fórum.
Abs
Citação:não ficar escrevendo um livro no tópico
Onde esta o livro ?
Citação:no meu ponto de vista a pergunta foi simples e direta
Leia o tópico e observe que ele só foi especifico após as nossas respostas. Ou estou lendo outro Tópico ?
Você só resolveu após ele especificar melhor.
FORUM:
Citação:é um espaço de discussão pública. No fórum geralmente é colocada uma questão, uma ponderação ou uma opinião que pode ser comentada por quem se interessar. Quem quiser pode ler as opiniões e pode acrescentar algo, se desejar
AQUI
Portanto respeite a opinião de seus colegas, e não diga a eles o que devem ou não escrever, isso chama se respeito.