ODBC 32bit <> 64bit

Status
Niet open voor verdere reacties.

RobertJB66

Gebruiker
Lid geworden
2 feb 2022
Berichten
219
Ik heb een app die gebruik maakt van een ODBC-koppeling naar een SQL-database.
Op mijn ontwikkel PC heb ik Access 32 bit draaien en daar werkt de app zonder een probleem.

Als ik nu de bron code app open in de 64 bit access versie, die in een VirtualBox machine draait, krijg ik een foutmelding dat de ODBC-verbinding niet gemaakt kan worden "ODBC--connection to "ABC" failed".

Na een 3 taal keer deze melding komt de melding "Run-time error '3151'" "ODBC--connection to "ABC"failed"

Ik heb op de Virtuele box machine een systeem 64 bit ODBC aangemaakt die 100% gelijk is aan de 32 bit ODBC op de ontwikkel PC. Als ik de ODBC ook test dan is er geen probleem.

- Heeft iemand een suggestie waar ik naar kan kijken om de oorzaak te vinden?
- Is er een methode om te zien wat Access doet voor dat het eerste Form geladen wordt. Ik had al een breakpoint gezet bij de eerste regel van Form_Open maar de fout lijkt op te treden voor dat het Form werkelijk geopend wordt.

Ik heb in de app een aantal Pass Through Query zitten met de UID en PWD opgeslagen.
Deze zijn in de 32bit en 64bit ODBC gelijk.

PS. Firewall op de VirtualBox machine is uit.
 
Laatst bewerkt:
Welk type SQL database is het?
Heb je in de database remote access (via netwerk) toegestaan?
 
Het gaat om een MS SQL server, als dat is wat je bedoelt?
In oudere versie van de app die nog niet gebruik maakte van Pass Through Query's werkt het zonder problemen.
In de SQl Server Configuration Manager staat TCP/IP en Named Pipes op Enabled. Als dat is wat er wordt bedoeld?
 
Access 32 bit en Access 64 bit zijn niet gelijk; je kunt een 32 bits versie doorgaans niet zonder aanpassingen gebruiken in een 64 bits omgeving. Dat heeft verder niks met de ODBC te maken, maar het probleem zit vermoedelijk dus in je database (wat bedoel je overigens met 'app'? Volgens mij bestaat er geen app versie van Acccess.)
Probeer dus eerst om je database te comprimeren en herstellen in het VBA venster (<Fotuopsporing>, <VB project compileren> om de problemen op te sporen).
voorbeeldje: een declaratie als:
Code:
Private Declare Function GetSystemMenu Lib "user32" _
    (ByVal hWnd As Long, ByVal bRevert As Long) As Long

geeft een foutmelding. Dat moet dan worden:
Code:
Private Declare PtrSafe Function GetSystemMenu Lib "user32" _
    (ByVal hWnd As Long, ByVal bRevert As Long) As Long

Met Compileren vind je alle declaraties die je moet aanpassen. Geeft de db geen (fout)meldingen meer, probeer het dan nog eens.
 
Duidelijk dat Access 32bit en 64 bit niet geheel gelijk zijn.
Met de app bedoel ik het geen ik in Access heb gemaakt dit is natuurlijk de access database.

Als ik Compact & Repair Database laat uitvoeren krijg ik de foutmelding van de ODBC--connection!

Kan je iets meer info geven om het onderstaande tedoen?
Probeer dus eerst om je database te comprimeren en herstellen in het VBA venster (<Fotuopsporing>, <VB
project compileren> om de problemen op te sporen).


Als de access compileer dan krijg ik geen foutmelding en wordt het bestand gewoon opgeslagen als accde bestand! bij het openen van dit bestand krijg ik de ODBC foutmelding!
 
Laatst bewerkt:
Bij compileren wordt een bestand nooit opgeslagen. Doe je wel wat ik heb gezegd? Compileren doe je in het VBA venster. Dat open je met <Alt>+<F11>, om maar een ingang te noemen. Of, als je macro’s hebt gemaakt als Gebeurtenis, door vanuit die gebeurtenis op de knop met de drie puntjes te klikken. Ik gebruik altijd de toetscombinatie.
 
Juist, even een kleine mixup.
Maar als ik in het VBA venster bij het "Debug menu", "Compile XYZ" doe, komt er geen enkele foutmelding niet in Access 32 bit en niet in Acces 64 bit.

Dat zou dan impliceren dat het Ok is?
 
Dat zou dan inderdaad in orde moeten zijn. Heb je dan nergens procedures staan?
 
Als je met procedures VBA code bedoelt ja, zeker maar daar komt geen enkele fout in naar boven.

Het gekke is als ik een oudere versie van mijn ontwikkeling neem, dan werkt deze zonder probleem. Deze maakt geen gebruik van Pass Through Queries!

Zou het gebruik van DAO ipv ADO hier nog iets mee te maken kunnen hebben. Werkt DAO goed in 32 bit maar niet goed in 64 bit?
 
Ik heb daar geen ervaring mee, maar ik zou e.e.a. sowieso met ADO doen. DAO is echt een techniek uit de vorige eeuw. ADO werkt ook met een andere engine.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan