+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Adattare accde creato con access 32 a 64

  1. #1
    rpk
    rpk non è in linea Scolaretto
    Post
    111

    Adattare accde creato con access 32 a 64

    Ciao a tutti ho provato a spulciare tra quanto c'è in questo sito e su altri articoli che ho trovato in internet ma non sono ancora riuscito a chiarirmi le idee
    Ho un applicativo access creato sulla mia macchina che è a 32 bit e vorrei dare l'accde anche ad alcuni che hanno invece quella a 64
    mi sembra di avere capito che bisogna inserire per tutte declare la voce ptrsafe e cambiare i parametri espressi in long in longptr e che deve mettere :
    #if win64 ....
    funzioni con dichirazioni x 64
    #else
    funzioni come erano in precedenza x 32
    #endif
    Non ho però capito quale sia il criteri per individuare quale siano il long da cambiare in longptr
    ... Se poi fino a qui è giusto cosa devo fare?
    Devo creare il file accde sulla macchina a 32 e poi lo posso finalmente distribuire così che quando lo uso su un 64 non mi esca più l'errore che è stato creato con una versione 32
    Senno' che altre potrei avere per risolvere il problema?

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,168
    Quote Originariamente inviato da rpk Visualizza il messaggio
    Ciao a tutti ho provato a spulciare tra quanto c'è in questo sito e su altri articoli che ho trovato in internet ma non sono ancora riuscito a chiarirmi le idee
    Ho un applicativo access creato sulla mia macchina che è a 32 bit e vorrei dare l'accde anche ad alcuni che hanno invece quella a 64
    mi sembra di avere capito che bisogna inserire per tutte declare la voce ptrsafe e cambiare i parametri espressi in long in longptr e che deve mettere :
    #if win64 ....
    funzioni con dichirazioni x 64
    #else
    funzioni come erano in precedenza x 32
    #endif
    Non ho però capito quale sia il criteri per individuare quale siano il long da cambiare in longptr
    ... Se poi fino a qui è giusto cosa devo fare?
    Devo creare il file accde sulla macchina a 32 e poi lo posso finalmente distribuire così che quando lo uso su un 64 non mi esca più l'errore che è stato creato con una versione 32
    Senno' che altre potrei avere per risolvere il problema?
    Usi le API...???
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    rpk
    rpk non è in linea Scolaretto
    Post
    111
    si le utilizzo

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,168
    Dipende da come hanno scritto le Funzioni... non è che tu devi intuire un criterio, devi leggere le istruzioni della Funzione specifica...

    In questa pagina:
    Excel: Declaring API functions in 64 bit Office
    puoi scaricare quì:
    http://msdn.microsoft.com/en-us/libr...ffice.14).aspx
    oppure quì da quì:
    https://support.microsoft.com/it-it/...64-bit-support
    puoi scaricare il medesimo:
    https://www.microsoft.com/en-us/down...s.aspx?id=9970

    Poi se cerchi il file [win32api_ptrsafe.txt] ti trovi la dichiarazione per la compatibilità al 64bit.
    Fai attenzione che non sono solo le DECLARE che vanno modificate, ma anche i TYPE e la dichiarazione nel codice delle Variabili relative...
    Ad esempio gli hWnd non sono più LONG ma LongPtr, quindi oltre che a modificare con PtrSafe la Funzione API devi andare nel tuo codice dove ti aspetti ad esempio l'hWnd di ritorno e modificare la dichiarazione della variabile...
    codice:
    Private TuaFunction()
     #If VBA7 Then
            Dim mhWnd as LongPtr
     #Else
            Dim mhWnd as Long
     #End If
     mhWnd=FindWindow(....)
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  5. #5
    rpk
    rpk non è in linea Scolaretto
    Post
    111
    grazie per le dritte Alex le approfondisco
    ma nella compilazione condizionale devo mettere #win64 o come hai messo te sopra #vba7 oppure entrambi?

  6. #6
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,168
    Ovviamente dipende...
    Qui chiarisce molto bene la questione:
    https://stackoverflow.com/questions/...-0-and-vba-7-0
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  7. #7
    rpk
    rpk non è in linea Scolaretto
    Post
    111
    grazie ai vostri suggerimenti sono riuscito ad ottenere una unica versione accdb che gira sia su access 32 che 64.
    Ho ancora un paio di problemi nell'applicazione ho messo un controllo activex di vlc per la precisione vlc activex plugin and ie web plugin2 per poter gestire la visualizzazione dei video che collego. Nella versione a 64 mi ritorna un errore di impossibilità di gestire il plugin. Infatti nella versione a 64 andando nella sezione dei controlli activex di access non trovo nessun activex di vlc. Ho provato a trovare come poter installare questo controllo sulla macchina a 64 ma non ci sono riuscito. Cosa mi consigliereste?
    Poi ho provato a creare il file accde con la versione a 32 e portarlo sulla macchina a 64 ma mi da un errore dove mi dice che è stato creato con la verisone a 32 e non può girare sulla 64. Ho fatto altre prove per poi arrivare a creare un db con una sola form e un solo campo, senza avere nessuna chiamata a funzioni esterne. Compilato sulla macchina a 32 lo porto sulla 64 e mi dice anche in questo caso che è compilato per la 32 e non può girare sulla 64.
    Devo percioò avere 2 macchine diverse per compilare il file accde a 64 e quello a 32 per poterli far girre sulle rispettive macchine?

  8. #8
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,168
    La tua domanda mi pare un po scontata...
    Una cosa è il Codice VBA altra cosa è il Compilatore ed il Compilato.
    Il VBA è un file di testo, opportunamente imbottito di scritte che vengono interpretate dall'IDE o dal Compilatore.

    Se hai inserito la Compilazione Condizionale in modo completo e corretto il progetto VBA deve girare sia su 32 che su 64 in IDE e deve essere compilabile in entrambe le versioni.
    Il risultato della compilazione ovviamente non ha più nulla a che fare con quanto hai scritto in VBA... e non contiene più la Compilazione Condizionale, il Compilatore scarta tutto quello che non gli serve, quindi compila SOLO nella versione residente.

    Quindi è ovvio che se deve girare su Sistemi 32bit non puoi compilare il progetto a 64bit e viceversa...
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  9. #9
    rpk
    rpk non è in linea Scolaretto
    Post
    111
    ok perfetto ... ma per l problema del vlc sulla versione 64 cosa mi consigli di fare?

  10. #10
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,168
    Quote Originariamente inviato da rpk Visualizza il messaggio
    ok perfetto ... ma per l problema del vlc sulla versione 64 cosa mi consigli di fare?
    Non ho mai affrontato nello specifico questo problema, ma la prima cosa a cui ho pensato è di installare il VLC a 64bit...?
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi