MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Compartilhe

    paulodaeira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 27
    Registrado : 02/10/2012

    [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  paulodaeira em Seg 25 Jan 2016, 09:53

    Olá a todos

    Tendo como base o documento anexo no exemplo do link Forum redeaccess "João Terra.zip", no formulário "FormEvolucaoObra_Picture", supondo que o utilizador elimina a foto da pasta por engano e de seguida usa o botão "Excluir foto" do formulário, este irá dar erro de visual basic, visto que a foto já não existe.
    Como coloco a aparecer uma mensagem tipo "A foto já não existe" por exemplo

    outra duvida que tenho é:
    Será possível que ao "inserir Foto" o programa ao copiar a foto para a pasta correspondente, lhe altere o nome para um igual ao "ID" da tabela?

    O código usado é:

    (Inserir foto)
    Código:
    Private Sub btInserirFoto_Click()
    Dim strLocalFoto$, strNomeFoto$, strPastaOrigem$, strPastaDestino$
    If Me.NewRecord Then DoCmd.RunCommand acCmdSaveRecord
    strLocalFoto = fncLocalizarArquivo
    If strLocalFoto = "" Then Exit Sub
    strNomeFoto = Mid(strLocalFoto, InStrRev(strLocalFoto, "\") + 1)
    CurrentDb.Execute "UPDATE tabEvolucaoObra SET NomeFoto= '" & strNomeFoto & "' WHERE código = " & Me!Código & ";"
    strPastaOrigem = Mid(strLocalFoto, 1, InStrRev(strLocalFoto, "\"))
    strPastaDestino = CurrentProject.Path & "\Fotos\"
    If strPastaOrigem <> strPastaDestino Then
        FileSystem.FileCopy strLocalFoto, strPastaDestino & strNomeFoto
    End If
    CurrentDb.Execute "UPDATE tabEvolucaoObra SET LocalPastaObra = '" & strPastaOrigem & "' WHERE código = " & Me!Código & ";"
    Me.Repaint
    End Sub

    (Eliminar foto)
    Código:
    Private Sub btExcluir_Click()
    If IsNull(Me!NomeFoto) Then Exit Sub
    If MsgBox("Deseja excluir a foto ?", vbQuestion + vbYesNo, "Confirmação") = vbNo Then Exit Sub
    FileSystem.Kill CurrentProject.Path & "\fotos\" & Me!NomeFoto
    Me!NomeFoto = Null
    Me!LocalPastaObra = Null
    DoCmd.RunCommand acCmdSaveRecord
    Call Form_Current
    End Sub

    Obrigado
    Paulo Delgado

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3227
    Registrado : 15/03/2013

    Re: [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  ahteixeira em Seg 25 Jan 2016, 14:08

    Olá Paulo Delgado, na instrução abaixo é onde faz a cópia

    FileSystem.FileCopy strLocalFoto, strPastaDestino & strNomeFoto

    o strNomeFoto deve ser alterado par ao que pretende (ID), talvez ficando assim:

    FileSystem.FileCopy strLocalFoto, strPastaDestino & Me!Código

    Abraço

    paulodaeira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 27
    Registrado : 02/10/2012

    Re: [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  paulodaeira em Ter 26 Jan 2016, 00:04

    Obrigado pela ajuda ahteixeira

    a 2ª duvida está resolvida

    quanto à primeira, no botão "btExcluir" o que tenho de acrescentar ao código?

    cumprimentos

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3227
    Registrado : 15/03/2013

    Re: [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  ahteixeira em Ter 26 Jan 2016, 08:32

    Olá, na minha opinião tem duas soluções:

    A) Antes de eliminar verifica se existe:

    B) verifica o código do erro ao eliminar quando não existe, e faz um tratamento de erros.

    Abraço

    paulodaeira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 27
    Registrado : 02/10/2012

    Re: [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  paulodaeira em Ter 26 Jan 2016, 10:19

    olá mais uma vez

    visto que ainda não estou muito à vontade no VBA, e não fazer ideia como resolver o problema, solicito a Vossa ajuda

    Código:
    Private Sub btExcluir_Click()
    If IsNull(Me!NomeFoto) Then Exit Sub
    If MsgBox("Deseja excluir a foto ?", vbQuestion + vbYesNo, "Confirmação") = vbNo Then Exit Sub
    FileSystem.Kill CurrentProject.Path & "\fotos\" & Me!NomeFoto
    Me!NomeFoto = Null
    Me!LocalPastaObra = Null
    DoCmd.RunCommand acCmdSaveRecord
    Call Form_Current
    End Sub

    o que tenho de acrescentar para me dar erro do tipo "O documento já não existe" por exemplo

    Cumprimentos
    Paulo Delgado

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3227
    Registrado : 15/03/2013

    Re: [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  ahteixeira em Ter 26 Jan 2016, 15:27

    Olá Paulo Delgado,
    No seu código onde tem:
    Código:
    FileSystem.Kill CurrentProject.Path & "\fotos\" & Me!NomeFoto

    Alrere por:
    Código:
    '==========================================
    'ahteixeira - 2016 para MaximoAccess
    '1º Verifica se existe o caminho (pasta)
    '2º Caso exista, verifica se existe ficheiro
    '3º Neste exemplo apaga o ficheiro.
    '==========================================

    '--------------------------
    'verifica se existe a pasta
    If Len(Dir(CurrentProject.Path & "\fotos\" & "", vbDirectory)) = 0 Then
        '------------------------------
        'informa que nao existe caminho
        MsgBox "Não existe o caminho configurado.", vbInformation, ""
    Else
        '-----------------------------
        'verifica se existe o ficheiro
        If Len(Dir(CurrentProject.Path & "\fotos\" & Me!NomeFoto & "")) = 0 Then
            '-------------------------------
            'informa que nao existe ficheiro
            MsgBox "Não existe o ficheiro.", vbInformation, ""
        Else
            '----------------
            'apaga o ficheiro
            FileSystem.Kill CurrentProject.Path & "\fotos\" & Me!NomeFoto
        End If
    End If
    '==========================================

    Para quem pretende verificar se existe o ficheiro ou pasta, vejam esta função do Grande MVP de Access Allen Browne.

    Abraço

    paulodaeira
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 27
    Registrado : 02/10/2012

    Re: [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  paulodaeira em Qua 27 Jan 2016, 22:53

    Muito obrigado pela ajuda

    Funcionou na perfeição era mesmo o que queria

    Cumprimentos

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3227
    Registrado : 15/03/2013

    Re: [Resolvido]Anexa foto - Alteração de nome do documento anexo

    Mensagem  ahteixeira em Qui 28 Jan 2016, 08:22

    Olá Paulo, obrigado pelo retorno.
    Os utilizadores do fórum agradecem.
    Abraço

      Data/hora atual: Dom 11 Dez 2016, 00:14