runtimefout

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.697
Ik maakte jaaaaaaren geleden een toepassing die intussen al even veel jaren, ongewijzigd draait.
Nu plots, out of the blue, krijg ik een foutmelding als ik het programma open:
"De uitvoering van deze toepassing is gestopt omdat er een runtimefout is opgetreden"
"De toepassing kan niet doorgaan en wordt afgesloten"
Op OK klikken en de PC opnieuw opstarten en de fout verdwijnt.
Sluit je de toepassing en strat je opnieuw, dan krijg je de fout.
het is een accdb bestand (voor wat dat dan weer kan betekenen)
Wat kan ik hier aan doen? (is al heel lang geleden dat ik in access dook, dus ben al erg veel kwijt van de does en don'ts
Alvast bedankt
JP
 
Een accdb bestand is een database in het nieuwere (vanaf Access 2017) format, maar dat zegt an sich niet zoveel. Het kan zijn dat je bibliotheken gebruikt die achterhaald zijn, of dat je inmiddels een Office 64 bit gebruikt, en de database is nog in 32 bit gemaakt.

Het beste dat je kan doen, is de database Comprimeren en Herstellen, als je dat al niet gedaan hebt, en als tweede stap: druk op <Alt>+<F11> om in het VBA venster te komen, en kies dan <Extra>, <Verwijzingen> om te kijken of daar bij een bibliotheek niet staat dat die ontbreekt. Staat dan vooraan de bibliotheek in hoofdletters.
Derde stap: klik vervolgens op <Foutopsporing>, <database Compileren>. Dit start het foutonderzoek, en de routine stopt bij elke programmaregel die niet (meer) klopt. Dat kan een declaratie staan, of een procedure die verwijst naar een bibliotheek die je niet meer hebt. Dan denk ik bijvoorbeeld aan een Acrobat bibliotheek die wellicht ergens een keer gebruikt is.

Functies die niet meer werken, zul je ofwel uit moeten zetten, ofwel repareren. Dan heb je dus nog declaraties die je zult moeten aanpassen. Dat kan simpel (of ingewikkeld ;')).
Neem deze declaratie:
Code:
Private Declare Function Winlstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long
Die geeft in de 64 bit versie een foutmelding. Maar dat is simpel op te lossen door een extra parameter toe te voegen:
Code:
Private Declare PtrSafe Function Winlstrlen Lib "kernel32" Alias "lstrlenA" _
     (ByVal lpString As Long) As Long
Dit is overigens de simpele methode :).
 
Wellicht heb je last van een probleem dat eerder in het forum ook al (trek een half uurtje uit voor het lezen van de draad ;)) is behandeld. Daar had Peter een oplossing voor gevonden. Wellicht speelt dat bij jou ook.
 
Als ik het access-programma zelf open krijg ik volgende mededeling:

De Microsoft Access Runtime is geïnstalleerd op deze machine
You moet beginnen Microsoft Access door te dubbelklikken op een Microsoft Access bestand of uitgevoerd door Microsoft Access uit vanaf een opdrachtprompt met een database-specified
(Bill Gates moet een andere vertaler in dienst nemen vrees ik)

Intussen heb ik via een foutopsporing het programma kunnen compileren en kreeg geen fouten.
Ook de database comprimeren en herstellen verloopt zonder problemen.

De rest van de voorstellen zij me iets te ingewikkeld vrees ik

Hopelijk iemand die de oplossing weer voor mij
Alvast bedankt
 
Als je wil, mag je de db wel naar me doorsturen. Dan kan ik er even naar kijken.
 
Volgens mij zal het bestand op een andere computer gewoon openen. Wel oppassen, want als het aan een virus ligt kan je de PC van Octafish besmetten.
 
Waarom zou er een virus in zitten? Ik zie het verband niet.
 
Zal er morgen naar kijken!
 
De Microsoft Access Runtime is geïnstalleerd op deze machine
Dit is een intrigerend zinnetje.
Access Runtime is een uitgeklede versie van Access waarmee gebruikers die het volledige Access niet hebben toch met Access kunnen werken. Staat dat inderdaad op je PC?
 
Voor zover ik weet (en ik heb op de computer van JP gewerkt) staat daar de volledige versie.
 
Of misschien allebei?
 
Dát weet ik niet :). Niet dat dat veel uitmaakt, denk ik.
 
Met de toevoeging /runtime aan de opstart instructie kan je elke gewone acces als runtime laten starten, maar ik denk niet dat dit hier het geval is. Misschien is het wel een idee om een nieuw bestand in de laatste versie te creëren en alle objecten hierin te importeren.
 
Ik heb even naar de db gekeken, en hij werkt in beginsel gewoon goed. Ik krijg niet de foutmelding die JP krijgt. Wél komt er bij compileren een fout naar boven: in het formulier Fiche zit een code die verwijst naar een selectievakje met de naam "Selectievakje28". Dat selectievakje bestaat echter niet op het formulier. Wél staat er een tekstvak met de naam "Selectievakje26", maar daar hangt dan weer geen code achter.

Als ik dat tekstvak hernoem naar "Selectievakje28" dan is er geen foutmelding meer bij het compileren. Ik kan op basis van de beschrijving van dat selectievakje niet achterhalen of de code bij het selectievakje hoort of niet, maar dit is dus een 'foutje' op het formulier dat simpel is op te lossen. Ofwel, als het om een inmiddels overbodig en verwijderd selectievakje gaat, de code verwijderen, ofwel het selectievakje hernoemen.

Verdere 'fouten' of oorzaken ben ik nog niet tegengekomen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan