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


3 participantes

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  julianovv 28/9/2016, 14:06

    Bom dia.
    Tenho um código que baixei daqui do fórum e apresenta o seguinte erro: ao copiar o nome do arquivo para a pasta aparece o erro do próprio Access para depurar quando o nome do arquivo aparece com símbolos (*/?!).
    É um banco de dados de cadastro de CDs de músicas e cada título é o nome do arquivo da foto e sempre aparece símbolos como os citados acima.
    Na verdade é uma mensagem importante que deveria ser incorporada ao código para abrir arquivo.
    Tentei criar a mensagem própria mas deu erro.
    Segue o código original.

    Private Sub btInsere_Click()
    'By ToPBr 2010
    'Adicionar foto a registro e copiar arquivo de foto para pasta do bd

      If IsNull(Me.Titulo) = True Then
      MsgBox "Para inserir a foto será necessário informar o nome do título", vbInformation, "Aviso"
      DoCmd.CancelEvent
      Me.Titulo.SetFocus
      Else
     
      Dim strCaminho As String, strPastaInicial As String
      Dim CopiaSegura As Object
      Dim Caminho As String
      Dim fso As Object
      Dim cam As String
       
      strPastaInicial = "C:\Documents and Settings\Juliano\Meus documentos\Banco de CDS\LocalFotos"
      strCaminho = Buscar(Me.hwnd, "Inserir foto", strPastaInicial, _
      "Arquivos gráficos (*.bmp; *.gif; *.jpg)" & vbNullChar & "*.bmp; *.gif; *.jpg")
      If Len(strCaminho) > 0 Then
         
      cam = CurrentProject.Path & "\CopiaFotos\" ' Caminho do bd mais a pasta fotos

    ' Faz a cópia do arquivo para a pasta do bd e sub pasta Fotos renomeando para jpg
     Set CopiaSegura = CreateObject("Scripting.FileSystemObject")
     CopiaSegura.CopyFile strCaminho, cam & Me.Codigo.Value & Me.Titulo.Value & ".jpg"
     
     Me.LocalFotos = cam & Me.Codigo.Value & Me.Titulo.Value & ".jpg"
     Me.img.Picture = Me.LocalFotos
       
       End If
    End If ' fim do if que verifica campos Título e Codigo


    End Sub

    Em vermelho indica o bloco de cópia do arquivo para a pasta.
    Uso o Access 2007

    Obrigado!


    Última edição por julianovv em 13/10/2016, 16:07, editado 2 vez(es)


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  Marco Messa 29/9/2016, 20:20

    Oi juliano, em qual linha exatamente que dá o erro e qual a descrição/número exato que aparece no Access?
    Não tenho Access instalado, mas se você postar uns prints do que ocorre talvez consiga ajudar.


    .................................................................................
    Tea with me that I book your face Cool
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  julianovv 30/9/2016, 04:13

    Oi Marco, seguem as capturas com os erros.
    A primeira mostra a janela do Access pedindo para depurar.
    A segunda mostra a linha que aparece o erro.

    Como pode ver no título do CD, tem uma barra separando os nomes. Não está aceitando copiar o arquivo e é preciso mudar para hífen para que seja processado.

    Espero que tenha clareado.
    Obrigado!
    Anexos
    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' AttachmentErro de copia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (89 Kb) Baixado 3 vez(es)


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  Marco Messa 30/9/2016, 13:53

    Qual valor está vindo na variável strCaminho e da concatenação cam & Me.Codigo.Value & Me.Titulo.Value & ".jpg" no trecho em questão?


    .................................................................................
    Tea with me that I book your face Cool
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  julianovv 6/10/2016, 14:05

    Retorna com a janela "erro em tempo de execução 76" caminho não localizado.

    CopiaSegura.CopyFile strCaminho, cam & Me.Codigo.Value & Me.Titulo.Value & ".jpg"



    Não aceita caracteres de símbolos ( / * # )
    Segue o modelo com o código original.

    No
    Anexos
    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' AttachmentCopiarFotoParaPastaDoBd.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (32 Kb) Baixado 14 vez(es)


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  Marco Messa 6/10/2016, 14:44

    Realmente julianovv, eu não prestei atenção direito no erro. Esses caracteres não podem mesmo serem utilizados em nomes de arquivos como o próprio Windows diz quando você tenta criar um arquivo utilizando alguns caracteres especiais, e pode ter certeza que não tem como contornar isso.

    Segue a página da Microsoft sobre o erro: https://support.microsoft.com/pt-br/kb/177506


    .................................................................................
    Tea with me that I book your face Cool
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: Criar mensagem de erro ao copiar para janela 'abrir arquivo'

    Mensagem  julianovv 6/10/2016, 14:52

    É verdade, o Windows não aceita esses símbolos em nomes de arquivos mas eu gostaria de inserir uma mensagem de erro avisando "nome de arquivo inválido" para substituir a janela de depurar.
    O cliente não tem como entender essa janela e em breve o banco será convertido em MDE.
    Smile


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  Marco Messa 6/10/2016, 14:55

    O que talvez poderia ser feito seria ao salvar uma imagem tipo "Black Brown and Beige / Bolling Plays Ellington Big Band" ao invés da barra ela teria um padrão de substituição como "Black Brown and Beige chr(47) Bolling Plays Ellington Big Band", logo a imagem teria esse nome codificado, o campo no bd teria o nome com a barra.
    A parte mais chata é que teria que buscar esses caracteres não permitidos, usando expressão regular talvez, convertê-los pro código ASCII antes de salvar a imagem. Teria um grande trabalho pra vincular isso no formulário porque toda vez que fosse buscar teria que pegar esse padrão e convertê-lo usando a função CHR.

    Um post falando mais detalhadamente sobre o porque não se pode usar cada caracter que é proibido: http://superuser.com/questions/693816/why-cant-you-use-special-characters-in-a-filename-like-or


    .................................................................................
    Tea with me that I book your face Cool
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  julianovv 6/10/2016, 15:06

    Seria uma solução mas eu não saberia fazer. Uma mensagem de erro seria melhor, só pra substituir a janela.
    Outro erro que vejo nesse código é o fato dele renomear o arquivo e salvar em outra pasta. As imagens já estão editadas através de um programa de criação de miniaturas e no mesmo diretório. O tamanho de cada imagem gira em torno de 2 kb. Salvar em outra pasta aumenta o tamanho do BD e não tem a menor necessidade - pelo menos no meu caso.
    Esse código precisa de uma "releitura".
    Smile


    Última edição por julianovv em 6/10/2016, 15:20, editado 1 vez(es)


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Marco Messa
    Marco Messa
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 291
    Registrado : 28/06/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  Marco Messa 6/10/2016, 15:15

    Tomei a liberdade de colocar as declarações de variáveis no início do escopo do evento, porque não faz sentido elas estarem dentro de um If já que o VBA sempre irá tratá-las no começo.
    Segue uma das maneiras de tratar o erro:

    Código:
    Private Sub btInsere_Click()
       'By ToPBr 2010
       'Adicionar foto a registro e copiar arquivo de foto para pasta do bd
       Dim strCaminho As String, strPastaInicial As String
       Dim CopiaSegura As Object
       Dim Caminho As String
       Dim fso As Object
       Dim cam As String
       
       On Error GoTo TrataErro
       
       If IsNull(Me.Titulo) = True Then
          MsgBox "Para inserir a foto será necessário informar o nome do título", vbInformation, "Aviso"
          DoCmd.CancelEvent
          Me.Titulo.SetFocus
       Else
          strPastaInicial = "C:\Documents and Settings\Juliano\Meus documentos\Banco de CDS\LocalFotos"
          strCaminho = Buscar(Me.hwnd, "Inserir foto", strPastaInicial, _
          "Arquivos gráficos (*.bmp; *.gif; *.jpg)" & vbNullChar & "*.bmp; *.gif; *.jpg")
          
          If Len(strCaminho) > 0 Then
             cam = CurrentProject.Path & "\CopiaFotos\" ' Caminho do bd mais a pasta fotos
             
             ' Faz a cópia do arquivo para a pasta do bd e sub pasta Fotos renomeando para jpg
             Set CopiaSegura = CreateObject("Scripting.FileSystemObject")
             CopiaSegura.CopyFile strCaminho, cam & Me.Codigo.Value & Me.Titulo.Value & ".jpg"
             
             Me.LocalFotos = cam & Me.Codigo.Value & Me.Titulo.Value & ".jpg"
             Me.img.Picture = Me.LocalFotos
          End If
       End If ' fim do if que verifica campos Título e Codigo
       
    TrataErro:
       If Err.Number = 76 Then
          MsgBox "Nome de arquivo inválido!", vbInformation, "Atenção"
       End If
    End Sub


    .................................................................................
    Tea with me that I book your face Cool
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  julianovv 6/10/2016, 15:24

    Obrigado! Vou fazer um teste aqui e mando um retorno!
    Very Happy


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  julianovv 6/10/2016, 15:47

    Deu certo! Funcionou bem com o caractere "/" exceto pelo asterisco "*" que não aceitou nem a imagem e nem veio a mensagem de erro mas está bom. A maioria dos títulos de CDs vem com essa barra e com o E comercial "&".
    Very Happy


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 678
    Registrado : 14/12/2010

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  julianovv 13/10/2016, 16:06

    Olá Marco, consegui otimizar o código evitando a cópia do arquivo para o diretório mas em outro banco de dados. Esse não existe símbolos. O outro também está funcionando com a mensagem que você enviou.
    Como já existe a pasta de imagens já editadas não é necessário copiá-las uma vez que tudo fica num só diretório e o peso do arquivo vai pra estratosfera.

    Segue o código:

    Private Sub btnLocalizar_Click()
    Dim strCaminho As String, strPastaInicial As String
       strPastaInicial = "C:\Documents and Settings\Juliano\Meus documentos\Filmoteca\LocalFoto"
       strCaminho = Buscar(Me.hwnd, "Inserir foto", strPastaInicial, _
       "Capa do Filme (*.bmp; *.gif; *.jpg)" & vbNullChar & "*.bmp; *.gif; *.jpg")
       If Len(strCaminho) > 0 Then
           Me.LocalFoto = strCaminho
           Me.Foto.Picture = Me.LocalFoto
           Me.Foto.Visible = True
           
       End If
    End Sub


    Agora a imagem original e editada fica na própria pasta.

    Obrigado pela força!

    Wink


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  Alvaro Teixeira 13/10/2016, 16:15

    Olá a todos, um pitaco
    Que tal usar a função Replace do Access para alterar os carateres não permitidos.

    Apenas exemplo
    Código:
    xFoto = Replace(Me.Titulo.Value, "*", "_")

    Abraço

    Conteúdo patrocinado


    [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo' Empty Re: [Resolvido] Criar mensagem de erro ao copiar para janela 'abrir aquivo'

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 20:39