Foutn 3048 tijdens uitvoering

Status
Niet open voor verdere reacties.

john64

Gebruiker
Lid geworden
12 jun 2011
Berichten
268
Sinds vandaag krijg ik op een bepaald tabblad deze melding: kan niet meer databases openen.
Ik heb gezocht op internet, maar de meeste oplossingen wijzen in de richting van het gebruik van rst.close, set rst = nothing en set db=nothing.
De database met alle formulieren wordt langzamerhand steeds groter, maar naar mening heb ik consequent doorgevoerd dat ik deze regels toevoeg als ik een rst gebruik.
Kan ik op één of andere manier controleren met debug statements wat het probleem is ?

print currentdb.QueryDefs.Count
127
print currentdb.TableDefs.Count
79

Ik heb mijn database verdeeld in een frontend en een backend. In backend 39 tabellen (gekoppeld in frontend), en daarnaast nog 12 extra tabellen in frontend
Voor de diverse formulieren gebruik ik wel gegevensverzamelingen, soms queries in formuliergegens, sommige keuzelijsten worden gevuld met queries die met VBA opgebouwd worden

Kan op dit moment niet achterhalen waar ik het probleem moet zoeken

Iemand een idee ?
mvg
John
 
... maar de meeste oplossingen wijzen in de richting van het gebruik van rst.close, set rst = nothing en set db=nothing.
Deze regels mag je uiteraard altijd toevoegen, maar zijn normaal gesproken niet nodig. Zodra een procedure klaar is, en je de End Sub/Function hebt gehaald, worden alle variabelen en objecten toch verwijderd. Access (en alle andere pakketten trouwens ook) ruimt de rotzooi dus zelf voor je op :). Neemt niet weg dat je het er bij mag zetten, en zeker als je binnen een procedure een paar keer van dezelfde sets gebruik maakt kan het handig zijn om ze tussentijds even op te schonen. Maar ik weet natuurlijk niet of dat bij jou het geval is.

Iemand met hetzelfde probleem schreef dit in een forum:
Additional Info from my notes:
Error 3048 – Cannot Open Any More Databases

. With attached tables, you can open only 84 recordsets using “CurrentDB” (one table per recordset) before receiving the error.
· You can open over 200 recordsets using “DBEngine”
· You can open over 200 QueryDef’s using “CurrentDB”
· After opening 200 QueryDef’s, I was able to only open 50 recordsets using “CurrentDB” with One table
· After opening 200 QueryDef’s, I was able to only open 50 recordsets using “CurrentDB” with three tables
· Could only open 50 recordsets based on query with 3 tables.
· Could only open 200 recordsets using “DBEngine” based on query with 3 tables.

"Hmmm, it worked when I tested it...."
 
Deze site had ik ook gezien.
Hoe kan ik in mijn database zien hoeveel querydefs, recordsets etc. ik in gebruik heb ?
Ik heb een groot formulier waarin een aantal navigatiebladen in opgenomen zijn. Op een aantal navigatiebladen zijn weer 'subtabbladen' opgenomen.
Op een formulier worden diverse gegevens getoond. Is een keuzelijst bijv. 1 querydef ? Wanneer wordt iets meegeteld in het aantal querydefs ? Als een formulier geladen is in geheugen ? Is een formulier altijd standaard geladen, of wordt deze pas in geheugen opgenomen als ik het betreffende tabblad activeer ? Als ik een controlitem (tekstvak, keuzelijst, etc.) vul vanuit VBA met een bepaalde query, telt deze dan ook mee ?

Het is me niet duidelijk waar ik de oplossing moet zoeken van deze 3048 foutmelding ?
Het rare (vind ik tenminste) is dat ik deze foutmelding altijd krijg bij 1 specifiek formulier. Ik kan alle formulieren aanklikken, data toevoegen en verwijderen, etc, maar bij het betreffende formulier gaat het mis. Dit is een formulier dat geopend wordt met een command-knop vanuit een ander formulier, en bij het vullen van dit nieuwe form gaat het mis.

Ik open form met
Code:
    DoCmd.OpenForm "frmSessies_Certificatenadministratie", acNormal, , , acFormEdit, acDialog, Me.lngCertificaathouderID
mvg
John
 
Het feit dat je de foutmelding alleen krijgt bij dit formulier, betekent vermoedelijk dat de fout niets te maken heeft met de melding. Want die vindt dat je teveel objecten hebt. Ergens gaat daar dus iets fout. Misschien een loop die continue recordsets aanmaakt. Geen idee; zonder de db is dat echt niet te zeggen.
 
Als dat formulier (of een van zijn subformulieren )als bron een query met meer dan 255 veldjes bevat zal het formulier niet openen. 255 veldjes bereik je al snel als je meerdere tabellen en queries combineert. Het maakt niets uit of je maar enkele veldjes van die query gebruikt in je formulier.
 
Goedemiddag
Heb een tijdje de melding niet meer gehad.
Ik krijg melding sinds gisteren weer. Het gebeurt elke keer bij het openen van het zelfde formulier vanuit een formulier met tabbladen.
Op een formulier heb ik een keuzelijst met alle beschikbare certificaathouders. Op dit grote formulier heb ik een ander formulier, gelinkt aan de keuzelijst, waarin gegevens staan van de gekozen certificaathouder.
Hier staan verschillende tabbladen op: een tabblad voor algemene NAW gegevens, tabblad voor notities, tabblad voor behaalde certificaten. Op dit laatste tabblad staat een knop: Toon Certificaat. En hier gaan het mis
Ik krijg weer een melding 3048: kan niet meer databases openen.
Een zelfde knop heb ik ook op een ander formulier. Hier kan ik zonder problemen vanuit een overzicht van alle uitgegeven certificaten het zelfde formulier openen. Het formulier "frmCertificaat" wordt modaal geopend met als argument CertificaatID.

Als ik dit zo bekijk heeft het schijnbaar te maken met het aantal tabbladen die ik op mijn formulier Certificaathouder heb staan. Ik weet dus niet of het net over een bepaalde grens is, ruim er over, maar er gaat iets fout.
Iemand die mij kan uitleggen hoe dit in zijn werk gaat ? Ik kan me haast niet voorstellen dat ik 255 veldjes heb. Wat wordt allemaal als veld gezien ?

mvg
John
 
Waarschijnlijk heb je in je aantal velden in je hoofdformulier en de som van het aantal veldjes in de subformulieren in je tabbladen ergens de grens van 255 records overschreden.
 
Hallo Johan,

Ik heb het (denk ik) opgelost.
In eerste instantie heb ik gebruik gemaakt van een tabbesturingselement. Elk tabblad had een formulier met meerdere keuzelijsten. Het lijkt erop dat in dat geval alle formulieren in geheugen geladen worden.

Het tabbesturingselement heb ik nu vervangen door een besturingselement voor navigatie. Onder elke navigatieknop heb ik de oorspronkelijke formulieren gehangen, maar als ik nu wissel van "navigatietab", wordt het huidige formulier uit geheugen verwijderd, en het nieuwe geladen.
Ik kan nu zonder problemen mijn formulier openen, zoals hierboven beschreven (en alles werkt nog een stuk sneller ook - dus een win-win situatie :thumb:)

mvg
John
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan