MaximoAccess

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

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
    avatar
    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
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4394
    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
    avatar
    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
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4394
    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
    avatar
    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
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4394
    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
    avatar
    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
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4394
    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: Qui 21 Set 2017, 20:34