LENTIDAO EM ROTINA DE BUSCA DE ARQUIVOS

LUIS.HERRERA 22/06/2010 08:50:00
#345440
Amigos bom dia!

VB 6

Tenho uma rotina nos relatórios, onde faço uma busca para ver se o arquivo de imagem (Logo do cliente) está presente no path informado pelo próprio cliente antes de carregar e exibir no form/relatorio.

Funciona perfeitamente, porém quando vou fazer manutenção no sistema, usando o banco do cliente, o path informado não existe na meu micro, então a rotina demora certa de 1 minuto para dar o aviso de que o logo não foi encontrado e então abrir o relatório sem ele. Estou achando isso muito tempo, o correto era ver que o path não existe e dar logo a mensagem, passando a execução do resto do código que é exibir o relatório sem exibir o logo.

Será que o método Dir do VB6 tem algum bug oculto?

A rotina é essa:

[ô]Chamada a localização do Logo
Private Sub cmdAbreRelatorio_Click()
If ArquivoExiste(rsLogo!cmpLogo & [Ô][Ô]) = True Then
[ô]dimensiona e posicona o logo no relatorio
Else
[ô]mensagem de logo não encontrato
End If

[ô] Segue exibição do relatório
End Sub

[ô]Módulo
[ô] verifica se arquivo e path passado existe
Public Function ArquivoExiste(sArquivo As String) As Boolean
On Error Resume Next
Dim x As Long
x = Len(Dir(sArquivo))
If Err Or x = 0 Then ArquivoExiste = False Else ArquivoExiste = True
End Function


Alguém saberia como resolver essa demora na execução do código?

Obrigado
LIZANDER 22/06/2010 09:02:08
#345442
Dim x As Long
x = Len(Dir(sArquivo))
If Err Or x = 0 Then ArquivoExiste = False Else ArquivoExiste = True

Porque vc não faz if Dir(sArquivo) <> [Ô][Ô] para verificar se existe ou não...

Acho que len() está te dando o problema...
LUIS.HERRERA 22/06/2010 10:06:36
#345449
Lizander o len somente faz a contagem do retorno para saber se retornou algo ou não, pois do contrário teria de comparar se é <> de [Ô][Ô] . Não é ele o responsável pela lentidão, acredito que seja algo com a localiação do Dir no windows.

Porém o estranho é que hoje, pela primeira vez isso não aconteceu. Achei muito esquisito, pois fui rastrear a rotina passo a passo e ver onde o ponto de lentidão acontecia, mas não aconteceu. vou acompanhar para ver.

Tópico encerrado , respostas não são mais permitidas