GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Erro no Case
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
Estagiário

postado
Estou com o seguinte problema, tem o modulo abaixo, e nela utilizo um case para atribuir a algumas variáveis (du0,du1....) valores armazenados em tabelas..

Code
------------------------------------------
Dim du0,du1,du2,du3,du4, du5, du6, As Integer
Dim mes

Set DB = DBEngine.Workspaces(0).Databases(0)
Set rs = DB.OpenRecordset("Tbl_Dia")
'Essa tabela sempre haverá 8 registros

Do Until rs.EOF
mes = 0
Select Case mes
Case mes = 0
du0 = rs.Fields("qtdedias")
Case mes = 1
du1 = rs.Fields("qtdedias")
Case mes = 2
du2 = rs.Fields("qtdedias")
Case mes = 3
du3 = rs.Fields("qtdedias")
Case mes = 4
du4 = rs.Fields("qtdedias")
Case mes = 5
du5 = rs.Fields("qtdedias")
Case mes = 6
du6 = rs.Fields("qtdedias")
Case mes = 7
du7 = rs.Fields("qtdedias")

End Select
rs.MoveNext
Loop

Porem debugando o du0 ele retorna todos os valores da tabela ("Tbl_Dia)

o que há de errado no codigo..
 
Postagens: 27 | Registrado: 22 December 2005Reply With QuoteReport This Post
Analista Sênior

Figura de  Avelino Sampaio
postado Hide Post
Oi Savio,

Tire mes = 0 do loop

mes = 0
Do Until rs.EOF
...
End Select
rs.MoveNext
mes = mes + 1
Loop  


Sucesso
...


www.usandoaccess.com.br
vídeo aulas, dicas e tutoriais
muita informação sobre Access 2007
 
Postagens: 1407 | Localização: Rio de Janeiro | Registrado: 06 September 2003Reply With QuoteReport This Post
Analista Júnior

Figura de  Duda
postado Hide Post
Sávio

aparentemente o problema esta na variavel mes...

analisando o codigo...

apos abir o recordset e iniciar o do until vc atribui um valor a variavel mes. No caso mes igual a zero.

Logo apos vc pede pra um select case avaliar o valor da variavel que vc acabou da setar o valor. Confuso

sendo assim logicamente todos os registros serão retornados no du0...

aparentemente so falta vc fazer o incremento da varivel mes a cada loop (apos o rs.movenextrecord por exemplo). mes= mes+1

só como sugestão, seria interessante vc observar a declaração de variaveis...mesmo que o codigo fique um pouco maior, as vezes é interessate declarar variaveis uma a uma...

diferente do .net onde isso é possivel,quando vc declara variaveis no access em sequencia, tipo:
dim str, str1 as string
str1 -> sempre será uma string.

porem...

str -> será do tipo variant. ou seja até q ela receba um valor ela nao é uma string realmente.

Por exemplo caso ela recebe um inteiro como valor esta variavel será do tipo inteiro e não string. e assim por diante. isso pode gerar erros de tipo de dados na execução de seu programa dependendo dos valores que estejam sendo setados a esta variavel.

exemplo disto para teste
Dim str, str1 As String
str = 0
str1 = 0
MsgBox "str:" + TypeName(str) + vbCrLf + "str1:" + TypeName(str1), vbInformation
MsgBox "str:" + CStr(str) + vbCrLf + "str1:" + str1, vbInformation



no mais é isso


até +


________________________________




Eduardo Oliva - Gerente de Projetos Web _______________________________
 
Postagens: 840 | Localização: Ctba | Registrado: 26 June 2002Reply With QuoteReport This Post
Estagiário

postado Hide Post
... usei a sugestao do avelino e deu certo.. porem notei uma perca increvel de performance.
100% com relação a variáveis fixas.

Isso porque utilizo esse modulo em uma consulta.por sua vez uso essa consulta em um sub-form que tem mais de 120.000 registros..

porem notei tambem que o que deixa lento é que no rodapé do form, uso um contar registros, cada vez que o usuario filta algo no form.


alguma dica?
 
Postagens: 27 | Registrado: 22 December 2005Reply With QuoteReport This Post
  Powered by Social Strata  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Erro no Case

©