DUVIDA COM PROGRESSBAR EM VB6

PADRINHO171 03/08/2013 23:37:40
#426992
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.
NILSONTRES 04/08/2013 00:01:52
#426993
Mais isso é desnecessário amigo, faça um instrução sql pa realizar a pesquisa no banco.
select ID from Tabela Where Codigo=[Ô] & txtcodigo & [Ô]
SINKERTEC 04/08/2013 10:41:42
#426998

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
MARCELO.TREZE 04/08/2013 15:03:16
#427003
você colocou um campo autonumerico no banco se sim, este numero nunca vai se repetir
ROBSON 04/08/2013 16:14:43
#427004
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.
FILMAN 04/08/2013 19:43:25
#427010
Verifica se isso 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
MARCELO.TREZE 04/08/2013 20:29:53
#427011
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.
OMAR2011 04/08/2013 20:48:09
#427013
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.
PADRINHO171 06/08/2013 22:55:15
#427124
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.
MARCELO.TREZE 06/08/2013 23:22:11
#427129
como você costuma fazer o cadastro posta o código ou query
NILSONTRES 06/08/2013 23:34:00
#427131
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.
Página 1 de 2 [11 registro(s)]
Faça seu login para responder