DUVIDA COM PROGRESSBAR EM VB6
Boa noite Galera,
é o seguinte, sei que pode parecer uma duvida infantil, porem já fiz varias pesquisas, inclusive aqui no VBMANIA e não consegui achar o que precisava, então vamos lá:
Tenho um gerador auto de ID para um cadastro, porem este ID não pode ser repetido para gravação no BD, por isso criei um código que carrega todos os cadastros, já realizados, em um recordset entao quando o novo código é criado, e ele testa para verificar se este código já não existe no BD buscando no recordset, para isso crie um loop para realizar este teste, para ir gerando novos código até que encontre um que não foi utilizado, porem aà vem a questão, gostaria de mostrar esses testes em uma PROGRESSBAR que fosse sendo preenchida até a localização de um código não utilizado.
segue meu loop:
Do
GeraCod
rs.MoveFirst
check = CodGerado
criterio = [Ô]CodC LIKE [Ô] & check & [Ô][Ô]
rs.Find criterio, 0, adSearchForward
Loop Until rs.EOF
no aguardo de ajuda. Desde já agradeço.
é o seguinte, sei que pode parecer uma duvida infantil, porem já fiz varias pesquisas, inclusive aqui no VBMANIA e não consegui achar o que precisava, então vamos lá:
Tenho um gerador auto de ID para um cadastro, porem este ID não pode ser repetido para gravação no BD, por isso criei um código que carrega todos os cadastros, já realizados, em um recordset entao quando o novo código é criado, e ele testa para verificar se este código já não existe no BD buscando no recordset, para isso crie um loop para realizar este teste, para ir gerando novos código até que encontre um que não foi utilizado, porem aà vem a questão, gostaria de mostrar esses testes em uma PROGRESSBAR que fosse sendo preenchida até a localização de um código não utilizado.
segue meu loop:
Do
GeraCod
rs.MoveFirst
check = CodGerado
criterio = [Ô]CodC LIKE [Ô] & check & [Ô][Ô]
rs.Find criterio, 0, adSearchForward
Loop Until rs.EOF
no aguardo de ajuda. Desde já agradeço.
Mais isso é desnecessário amigo, faça um instrução sql pa realizar a pesquisa no banco.
select ID from Tabela Where Codigo=[Ô] & txtcodigo & [Ô]
select ID from Tabela Where Codigo=[Ô] & txtcodigo & [Ô]
PADRINHO
Primeiro que seu processo gera performance de banco de dados e máquina.
Segundo que vendo da forma que faz, inclusive eu fazia assim tb a mto tempo, vi que era um erro pois, se ele pega sempre o próximo, não teria como existir um vago.
Creio que seria mto mais prático, rápido e sem chances de falha, você criar um campo AutoIncremento e pronto...vc não precisa se preocupar em gerar ID e tem a ctz q NUNCA vai se repetir no banco
boa sorte e sucesso
você colocou um campo autonumerico no banco se sim, este numero nunca vai se repetir
Bom, todos estão certos em sugerir um campo de auto-numeração,
mas a dúvida dele é como incrementar um progress bar.
para isto basta definir o valor minimo e o valor máximo do progress bar.
e atribuir na propriedade [ô]value[ô] um valor que seja incrementado.
mas a dúvida dele é como incrementar um progress bar.
para isto basta definir o valor minimo e o valor máximo do progress bar.
e atribuir na propriedade [ô]value[ô] um valor que seja incrementado.
Verifica se isso te ajuda
Verificar se te ajuda
Private Function GerarCodigo() As Long
Dim x As Long, z As Long
Dim rst As New ADODB.RecordSet
rst.Open [Ô]SELECT Coluna_ID FROM SuaTabela ORDER BY Coluna_ID ASC[Ô], SuaConnection
x = 1
if rst.RecordCount > 0 then
z = rst.RecordCount
ProgressBar1.Max = z
ProgressBar1.Value = 0
rst.MoveFirst
For x = 1 To z
If rst(0).Value <> x Then
Exit For
End If
rst.MoveNext
ProgressBar1.Value = x
DoEvents
Next x
End If
GerarCodigo = x
rst.Close
Set rst = Nothing
End Function
Verificar se te ajuda
Citação::
Bom, todos estão certos em sugerir um campo de auto-numeração,
mas a dúvida dele é como incrementar um progress bar.
para isto basta definir o valor minimo e o valor máximo do progress bar.
e atribuir na propriedade [ô]value[ô] um valor que seja incrementado.
na realidade o que estamos sugerindo, é que se use um campo auto numérico para não se criar a necessidade de um progressbar, pois é meio sem lógica se tirar o desempenho para se criar uma barra.
Não faz sentido de procurar e usar um progressbar,
sendo que o registro não existe.
Se ele existe a codificação está errada.
Então não faz sentido nenhum.
Seu gerador de código falhou.
Sua consulta Zero,progressbar não tem valor para realiza o seu preenchimento.
sendo que o registro não existe.
Se ele existe a codificação está errada.
Então não faz sentido nenhum.
Seu gerador de código falhou.
Sua consulta Zero,progressbar não tem valor para realiza o seu preenchimento.
Boa noite,
Primeiramente, obrigado a todos que responderam.
Na verdade eu gostaria de colocar uma progressbar que mostrasse como se fosse o tempo utilizado para procurar uma ID não repetida no BD, eu sei que se eu usasse o auto-incremento seria mais simples e ele jamais se repetiria, porem não posso deixar que nos cadastros os ID[ô]s sejam sequenciais, por isso resolvi fazer desta forma, e é aà que entra a progressbar, pois enquanto tiverem pouco registros, esta busca será rápida, porem quando forem muitos dados esta busca será um pouco mais lenta e o usuário pode achar que o sistema travou e [Ô]bootá-lo[Ô] desnecessariamente.
desde já agradeço novamente.
Primeiramente, obrigado a todos que responderam.
Na verdade eu gostaria de colocar uma progressbar que mostrasse como se fosse o tempo utilizado para procurar uma ID não repetida no BD, eu sei que se eu usasse o auto-incremento seria mais simples e ele jamais se repetiria, porem não posso deixar que nos cadastros os ID[ô]s sejam sequenciais, por isso resolvi fazer desta forma, e é aà que entra a progressbar, pois enquanto tiverem pouco registros, esta busca será rápida, porem quando forem muitos dados esta busca será um pouco mais lenta e o usuário pode achar que o sistema travou e [Ô]bootá-lo[Ô] desnecessariamente.
desde já agradeço novamente.
como você costuma fazer o cadastro posta o código ou query
Citação:Na verdade eu gostaria de colocar uma progressbar que mostrasse como se fosse o tempo utilizado para procurar uma ID não repetida no BD
Citação:pois enquanto tiverem pouco registros, esta busca será rápida, porem quando forem muitos dados esta busca será um pouco mais lenta e o usuário pode achar que o sistema travou e [Ô]bootá-lo[Ô] desnecessariamente
Aparentemente vc esta utilizando DAO, já aconselho mudar para ADO, pelo menos.
Como a 12 anos que não utilizo mais DAO, não sei se é preciso looping para busca de indice, com ADO, uma instrução SQL Resolve, e em fração de milésimos de segundo, isso acredito até uns 2 milhoes de registros ou mais.
Voce não conseguiria fazer uma progress funcionar.
Esse tipo de busca é coisa de milesimo de segundo, entendeu ?
Desculpe, nossa insistência em tentar muda lo de ideia, é que é difÃcil aconselhar algo que sabemos não ser o correto.
Para vb6, busque aprender mais sobre ADO, vai abrir mais sua mente a respeito desse assunto.
Faça seu login para responder