Opgelost RunTime versie geeft fout melding bij laden "2455"

Dit topic is als opgelost gemarkeerd

RobertJB66

Gebruiker
Lid geworden
2 feb 2022
Berichten
217
Als ik mijn database niet gecompileerd start op een andere computer dan krijg ik een foutmelding op
Code:
    Me.EECQRapportTop.Form.Requery
De foutmelding is 2455 - you have entered an expression that has an invalid reference to the property Form/Report.

Als ik de VBA code door de Compiler test haal krijg ik geen foutmelding en op mijn eigen computer werkt het geheel zonder problemen.

Iemand een idee wat de oorzaak zou kunnen zijn?
 
Is dat die beruchte database die aan een SQL server database hangt? Die gaat, in dat geval, natuurlijk alleen werken als de andere computer/gebruiker dezelfde rechten op die db heeft als jij. En dezelfde koppelingen.
 
Dit is hem en de rechten zijn hetzelfde.
De koppeling gaat via een ODBC en die staan gelijk.

Alles wat voor de Requery gebeurt gaat allemaal goed. En juist dat heeft te maken met data ophalen via de ODBC.
 
Het is in elk geval een Access foutmelding en geen SQL foutmelding. Ik vermoed dat het te maken heeft met niet-gecompileerde code op een runtime proberen draaien.
 
noella kon wel eens gelijk hebben, vooral omdat je in je vraag zélf al aangeeft dat hij niet-gecompileerd een fout geeft, en wél gecompileerd niet.... Ik ben een beetje dom, maar zelfs ík snap dan, dat je toch echt moet compileren :).
 
Ik heb op een andere PC ook een Office 365 geplaatst en de niet gecompileerde versie van de database op deze nieuwe PC gezet. Als ik de Access applicatie open krijg ik dezelfde foutmelding!

Op mijn eigen PC loopt het wel gewoon goed.

Heeft iemand een idee wat de oorzaak hiervan zou kunnen zijn.
In oudere versies van de Access applicatie had ik dit probleem niet.
 
En alle bibliotheken zijn a) hetzelfde en b) geactiveerd? En, voor de zekerheid: dezelfde bit versie?
 
Jij alles gecontroleerd het enige verschil dat ik kan vinden was bij de regio settings en deze heb ik ook gelijk gezet. De tweede PC is wel een 64 bit versie en op mijn eigen PC een 32 bit versie.

Het gekke is dat een voorgaande versie het wel doet. Alleen neemt het laden van een bepaald formulier veel tijd omdat veel berekeningen worden gedaan in dit formulier. Echter, de fout melding treed op bij de laatste versie voordat bij dit deel van de code komt.
 
Zou de oplossing zo eenvoudig kunnen zijn?
Code:
Me.EECQRapportTop.Form.Requery
geeft de fout.
Code:
EECQRapportTop.Form.Requery
werkt ook op mijn eigen PC maar geeft de zelfde fout melding op de tweede PC.
 
Hierbij nog wat extra uitleg.

Ik heb een Access front-end via ODBC aan een SQL.
Bij het laden van het hoofd formulier gaat het geheel door code om een juist dashboard te weergeven.
Bij de routine "Private Sub Form_Open(Cancel As Integer)"zit "DoCmd.Maximize"
kort hiervoor sprint de code naar "FilterUpdate"

In dit deel worden de diverse formulieren gefilterd o.b.v. de filter settings. Bij het initiële laden zijn de filters allemaal leeg en find er geen filtering plaats.

Code:
Function FilterUpdate() 'Filters update uitvoeren en de forms updaten

Const sProcName As String = "FilterUpdate"
On Error GoTo ErrorHandler

StartLog ("C:\Temp\QueryLog.txt")
    
    Set db = CurrentDb
    
 ' Pass Through Query 1
    Set qdf = db.QueryDefs("EECQ_RapportTop_PTQ")
    
    If sFilter = "" Then
        qdf.SQL = "SELECT Top 1000 * FROM EECQ_RapportTop_View"
    Else
        qdf.SQL = "SELECT Top 1000 * FROM EECQ_RapportTop_View WHERE " & ptFilter & ""
    End If
    
    Set qdf = Nothing
    
 ' Requery Form 2
    'Me.EECQRapportTop.Form.Requery
    EECQRapportTop.Form.Requery
    
LogTime ("EECQ_RapportTopUpdate")

Zoals aangegeven werkt het op mijn eigen PC maar niet op een andere PC ook niet met een gecompileerde versie en de compiler geeft geen enkele foutmeldingen ook niet zonder "Me." er voor.
 
Ik zou het zo gedaan hebben:
Code:
     Me!EECQRapportTop.Form.Requery
Wellicht dat het helpt.
Overigens snap ik nooit waarom mensen dit doen:
Code:
qdf.SQL = "SELECT Top 1000 * FROM EECQ_RapportTop_View WHERE " & ptFilter & ""
Dat laatste (een lege string) is toch nutteloos? Kan gewoon zo:
Code:
qdf.SQL = "SELECT Top 1000 * FROM EECQ_RapportTop_View WHERE " & ptFilter
 
Helaas ook
Code:
Me!EECQRapportTop.Form.Requery
geeft nog steeds dezelfde foutmelding.
Ik ben bang dat het ergens in mijn file fout is gegaan omdat een eerdere versie wel met de originele code werkt. Of heeft iemand nog een idee?

Ik heb bij alle delen de & "" weg gehaald. Bedankt voor de tip.

PS. ben toch wat verder gekomen. Ik heb beeld :cool:. test nog even verder om ook mijn vinger er acthter te krijgen wat de oorzaak is/was.
 
Laatst bewerkt:
Ik heb het lek gevonden :)

In een paar van mijn Pass Through Queries was filter data opgeslagen van mijn eigen test SQL database.
De andere computer hangt met de SQL aan een andere SQL die andere data heeft.
Ik heb het vermoede dat het daar bij de requery dan fout is gegaan omdat er filter data in en PTQ zit die niet beschikbaar is.

Alle dank voor jullie hulp.
 
Terug
Bovenaan Onderaan