MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Tratando o erro por linha...

    avatar
    Convidado
    Convidado


    [Resolvido]Tratando o erro por linha... Empty Tratando o erro por linha...

    Mensagem  Convidado 11/6/2011, 20:56

    Tenho códigos que leem 5 fotos.. para um mesmo form...

    Acontece que se porventura o arquivo for apagado.. da erro em tempo de execução na linha em questao...
    para eu nao apagar o caminho... como posso tratar este erro por linha??


    'Referencia a Foto Rosto
    If IsNull(Me.CaminhoFotoRosto) = False Then 'Aqui tem o caminho.. mas não tem o arquivo... ele vai dar erro...
    Me.FotoRosto.Picture = Me.CaminhoFotoRosto
    Else
    Me.FotoRosto.Picture = FotoPadrao
    End If
    avatar
    Convidado
    Convidado


    [Resolvido]Tratando o erro por linha... Empty Re: [Resolvido]Tratando o erro por linha...

    Mensagem  Convidado 11/6/2011, 21:04

    Consegui Assim:

    Private Sub Form_Current()
    On Error GoTo Limpa
    'Referencia a Foto Rosto
    If IsNull(Me.CaminhoFotoRosto) = False Then
    Me.FotoRosto.Picture = Me.CaminhoFotoRosto
    Else
    Me.FotoRosto.Picture = FotoPadrao
    End If

    'Referencia a Foto Perfil 1
    If IsNull(Me.CaminhoPerfil1) = False Then
    Me.FotoPerfil1.Picture = Me.CaminhoPerfil1
    Else
    Me.FotoPerfil1.Picture = FotoPadrao
    End If

    'Referencia a Foto Perfil 2
    If IsNull(Me.CaminhoPerfil2) = False Then
    Me.FotoPerfil2.Picture = Me.CaminhoPerfil2
    Else
    Me.FotoPerfil2.Picture = FotoPadrao
    End If

    'Referencia a Foto Perfil 3
    If IsNull(Me.CaminhoPerfil3) = False Then
    Me.FotoPerfil3.Picture = Me.CaminhoPerfil3
    Else
    Me.FotoPerfil3.Picture = FotoPadrao
    End If

    'Referencia a Foto Perfil 4
    If IsNull(Me.CaminhoPerfil4) = False Then
    Me.FotoPerfil4.Picture = Me.CaminhoPerfil4
    Else
    Me.FotoPerfil4.Picture = FotoPadrao
    End If

    Sai:
    Exit Sub

    Limpa:
    'Foto Rosto
    'Me.CaminhoFotoRosto = Null
    Me.FotoRosto.Picture = ""


    Resume Sai
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8499
    Registrado : 05/11/2009

    [Resolvido]Tratando o erro por linha... Empty Re: [Resolvido]Tratando o erro por linha...

    Mensagem  Alexandre Neves 11/6/2011, 22:24

    Hary,

    Utilize estas duas funções para testar se o ficheiro existe, antes de o chamar

    Function ExisteFicheiro(Endereco As String, Optional TipoFicheiro As String) As Boolean
    'www.esnips.com\web\alexandreneves
    Dim fso, fl, Pasta, strNomeFicheiro As String

    ExisteFicheiro = False
    Set fso = CreateObject("Scripting.FileSystemObject")
    If InStr(1, Endereco, "*") > 0 Or InStr(1, NomeFicheiro(Endereco), ".") = 0 Then
    If ExistePasta(Endereco) Then
    Set Pasta = fso.GetFolder(EnderecoPasta(Endereco))
    strNomeFicheiro = NomeFicheiro(Endereco)
    For Each fl In Pasta.Files
    If fl.Name Like "*" & strNomeFicheiro & "*" Then
    ExisteFicheiro = True: GoTo FimDaFuncao
    End If
    Next
    Else
    ExisteFicheiro = False
    End If
    Else
    ExisteFicheiro = False
    If fso.FileExists(Endereco) Then
    ExisteFicheiro = True
    Else
    ExisteFicheiro = False
    End If
    End If
    FimDaFuncao:
    Set fso = Nothing
    End Function

    Function ExistePasta(Endereco As String) As Boolean
    'www.esnips.com\web\alexandreneves
    Dim fso
    Dim EnderecoPasta As String, Cont As Integer

    For Cont = Len(Endereco) To 1 Step -1
    If Right(Mid(Endereco, 1, Cont), 1) = "\" Then
    EnderecoPasta = Mid(Endereco, 1, Cont)
    Exit For
    End If
    Next
    Set fso = CreateObject("Scripting.FileSystemObject")
    If (fso.FolderExists(EnderecoPasta)) Then
    ExistePasta = True
    Else
    ExistePasta = False
    End If
    Set fso = Nothing
    End Function
    Cumprimentos,
    avatar
    Convidado
    Convidado


    [Resolvido]Tratando o erro por linha... Empty Re: [Resolvido]Tratando o erro por linha...

    Mensagem  Convidado 11/6/2011, 22:32

    Bacana Alexandre e Obrigado pela Dica...

    No entando neste caso específico.. será muito dificil ter o ficheiro deletado.....
    So percebi este erro pois no pc que trabalho, tenho o BD atualizado, mas as pastas ainda sao antigas.. entao na hora de abrir o programa, como havia o caminho no BD e não havia a pasta deu o erro...

    Esse erro nao iria ocorrer no pc do usuario, pois la se encontra as pastas originais, que sao atualizadas diariamente...
    como no pc que aprimoro o programa da muito trabalho atualizar diariamente, trabalho com dados antigos, os quais posso apagar, renomear... para teste no front end...

    Bem mesmo assim achei bom tratar o erro...

    Acontece que se porventura faltar um ficheiro, nesse caso é melhor remeter o codigo a mostrar uma imagem padrao "SEM FOTO DISPONIVEL", e o caminho permanecer na tabela nao é problema pois se caso a foto se perca, eles são obrigados a tirar nova foto, e em fazendo isso o caminho atualiza automaticamento..

    Espero que tenha entendido

    Grato pela ajuda...

    Saudações

    Conteúdo patrocinado


    [Resolvido]Tratando o erro por linha... Empty Re: [Resolvido]Tratando o erro por linha...

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 17:57