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]Problema com API e Access 64 bits

    CassioFabre
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Problema com API e Access 64 bits Empty [Resolvido]Problema com API e Access 64 bits

    Mensagem  CassioFabre em 10/2/2017, 17:25

    Boa tarde,

    Tenho um sistema rodando tudo certo no Access 2007 32 Bits. Utilizo ribbons personalizadas e, ainda, imagens personalizadas nos botões. Fui portar o sistema para Access 2010 64 Bits e começou a dar o famoso erro da falta do PtrSafe. Até aí tudo bem, coloquei a condicional conforme manda a microsoft e tudo mais. O meu problema está na função LoadImage (que carrega as imagens personalizadas nos botões, do grande mestre Avelino). Ela simplesmente não carrega mais as minhas imagens personalidas (o mesmo código funciona perfeitamente na versão 2007 32 bits). Tenho várias outras APIs no sistema e essas funcionam perfeitamente.

    Abaixo a declaração de uma das APIs necessárias para a função:

    Private Declare PtrSafe Function GdipCreateBitmapFromFile Lib "gdiplus" (ByVal FileName As Long, BITMAP As Long) As Long

    Abaixo a função LoadImage:

    Public Function LoadImage(ByVal strFName As String) As IPictureDisp
    Dim uGdiInput As GdiplusStartupInput
    Dim hGdiPlus As Long
    Dim hGdiImage As Long
    Dim hBitmap As Long

    uGdiInput.GdiplusVersion = 1

    If GdiplusStartup(hGdiPlus, uGdiInput) = 0 Then
    If GdipCreateBitmapFromFile(StrPtr(strFName), hGdiImage) = 0 Then
    GdipCreateHBITMAPFromBitmap hGdiImage, hBitmap, 0
    Set LoadImage = ConvertToIPicture(hBitmap)
    GdipDisposeImage hGdiImage
    End If
    GdiplusShutdown hGdiPlus
    End If

    End Function

    Os trechos destacados, do jeito que estão aí, fazem com que o Access acuse o famoso erro de incompatibilidade de tipo (erro 13). Pesquisando bastante, descobri que o trecho destacado da API, nas versões 64 bits, deve ser declarado como:

    Private Declare PtrSafe Function GdipCreateBitmapFromFile Lib "gdiplus" (ByVal FileName As LongPtr, BITMAP As Long) As Long


    Ok, ai o Access parou de acusar o erro 13, porém mesmo assim as imagens não são carregadas.

    Procurei muito, em vários sites brasileiros e gringos, nos fóruns da microsoft, em todo lugar, mas nenhuma resposta me ajudou. Agradeço desde já qualquer ajuda que alguém possa dar.

    Abraço.
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Problema com API e Access 64 bits Empty Re: [Resolvido]Problema com API e Access 64 bits

    Mensagem  ahteixeira em 10/2/2017, 18:01

    Olá Cassio, estou no celular.
    Mas acho que na parte do "64bit" deve atribuir do tipo LongLong e não Long.
    Teste aí ou confira no artigo da Microsoft.
    Abraço
    CassioFabre
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Problema com API e Access 64 bits Empty Problema com API e Access 64 bits

    Mensagem  CassioFabre em 10/2/2017, 18:20

    Boa tarde,

    Também testei o uso do LongLong e acontece a mesma coisa do que quando usei LongPtr, ou seja, não acusa erro mas também não mostra as imagens.

    Abraço.
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Problema com API e Access 64 bits Empty Re: [Resolvido]Problema com API e Access 64 bits

    Mensagem  ahteixeira em 10/2/2017, 18:27

    Olá, pode mostrar qual e onde está ocorrer erro.
    Se poder montar base de dados de teste para podermos verificar.
    Assim que esteja com pc tento ajudar.
    Abraço
    CassioFabre
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Problema com API e Access 64 bits Empty Problema com API e Access 64 bits

    Mensagem  CassioFabre em 15/2/2017, 09:50

    Bom dia,

    Desculpe a demora, tenho estado um tanto quanto atarefado nos últimos dias.

    Estou mandando em anexo o modelo do sistema com o backend. Espero que dê pra ter uma noção.

    Usuario: admin
    senha: 132

    Abraço.
    CassioFabre
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Problema com API e Access 64 bits Empty Problema com API e Access 64 bits

    Mensagem  CassioFabre em 15/2/2017, 12:01

    Bom dia,

    Reportando que consegui resolver o problema.

    O meu erro estava em atribuir as condicionais de 64 bits (estava usando #if VBA7 Then) apenas na declaração das APIs, quando na verdade deveria extende-la a todo código colocando as variáveis long de 64 bits (LongLong ou LongPtr).

    Então dupliquei o código do módulo e então coloquei da seguinte forma:
    Código:
    #If Win64 Then
        ' Todo o código do módulo utilizando LongLong ou LongPtr
    #Else
        ' Todo o código do módulo utilizando apenas Long (32bits)
    #End if

    Espera que dê para entender.

    Abraço.
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    [Resolvido]Problema com API e Access 64 bits Empty Re: [Resolvido]Problema com API e Access 64 bits

    Mensagem  ahteixeira em 15/2/2017, 12:18

    Olá Cassio,
    É isso mesmo, obrigado pelo retorno.
    Abraço
    crysostomo
    crysostomo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 785
    Registrado : 23/01/2018

    [Resolvido]Problema com API e Access 64 bits Empty Re: [Resolvido]Problema com API e Access 64 bits

    Mensagem  crysostomo em 8/5/2019, 17:23

    amigo, boa tarde. ainda utilizo o 32bits, mas pra frente vou ter problema com isso, eu não entendi bem essa declaração como foi concertada, poderia disponibilizar-la?


    .................................................................................
    Uma mão ajuda a outra.
    O medo não é morrer, o medo é se alguém está morto dentro de você, assim como o fracassado é aquele que nem tentou

    Conteúdo patrocinado

    [Resolvido]Problema com API e Access 64 bits Empty Re: [Resolvido]Problema com API e Access 64 bits

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/7/2019, 16:47