SELECT PROX NÊMERO LIVRE

ROGERIOAZEVEDO 15/05/2014 10:30:27
#438220
Muito obrigado mesmo pelo apoio Rodrigo, vou testar e lhe aviso. Agradeço o apoio, acho que você está certo no seu posicionamento. Neste caso específico, o sistema nem é meu, é um software muito conhecido e domina 80% do mercado no segmento de segurança eletrônica. O que eu queria é apenas facilitar a minha vida em [Ô]pegar[Ô] o próximo número livre, já que o software ERP já faz isso. Obrigado também aos demais colegar pelo apoio e também pelas dicas.
RO.DRIGOSG 15/05/2014 10:41:09
#438221
Rogério,

Por nada, estamos ai para isso mesmo....rs.
Se der certo, não esqueça de finalizar o tópico.
OMAR2011 15/05/2014 10:45:54
#438222
Então, o problema é que somos Brasileiros.
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.
GUIMORAES 15/05/2014 11:15:16
#438226
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.
PIOLHO 15/05/2014 11:56:30
#438229
Resposta escolhida
CREATE TABLE ##TESTE
(
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
OMAR2011 15/05/2014 13:05:58
#438236
Ai sim, matou a pau GUIMORAES123.
Valeu.
RO.DRIGOSG 15/05/2014 13:34:27
#438237
Pessoal,

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.


NILSONTRES 15/05/2014 14:38:07
#438244
RO_DRIGOSG,
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.

RO.DRIGOSG 15/05/2014 15:04:05
#438249
NILSONTRES

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
NILSONTRES 15/05/2014 15:23:21
#438250
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.
Página 2 de 4 [32 registro(s)]
Tópico encerrado , respostas não são mais permitidas