Access geeft Object Vereist aan

Status
Niet open voor verdere reacties.

Stef21

Gebruiker
Lid geworden
15 mrt 2021
Berichten
30
Goedendag,

Ik ben bezig met een Access programma waar reservering in toegepast wordt. Nu heb ik de volgende code:
Code:
Dim Var6 As Variant
Var6 = DLookup("[ReserveringsID]", "tReservering", "[BoekID]" = Me.BoekStockID.Value)
       Me.Gereserveerd.Value = IIf(Var6 Is Null, 1, 2)
Er is dus een tabel tReservering met de volgende kolommen: [ReserveringsID], [BoekID] en [KlantID].
BoekStockID is een tekstvak in het formulier waar deze formule op gebruikt wordt.

In de tabel [tReservering] staan alleen de boeken die uitgeleend zijn. Als er dus een boek is wat teruggebracht wordt en dat staat ook in de tabel [tReservering], dan moet het tekstvak "Gereserveerd" een 2 geven ipv een 1. Als er geen boek overeenkomt, betekent dit dat "Var6" Null als uitkomst geeft en in de IIf-functie zou het dan zo moeten zijn dat er een 1 in het vakje "Gereserveerd" staat.
In plaats hiervan krijg ik een foutcode dat er een object vereist is, maar ik snap totaal niet wat ik dan eigenlijk verkeerd doe. Zou iemand mij hierbij kunnen helpen?

MVG,

Stef
 
Stef,

Wijzig je code eens zoals hieronder :

Code:
Var6 = DLookup("[ReserveringsID]", "tReservering", [B]"""[BoekID] =" & Me.BoekStockID.Value & ""[/B])

Paul
 
Bedankt voor de reactie!

Ik heb wel het gevoel dat hier iets mee opgelost is, maar nog niet alles in ieder geval.
Ik krijg nu de volgende foutcode: Syntaxisfout in tekenreeks. in query-expressie "[BoekID]" = (en dan het Boekstocknummer van bijbehorende boek)

Stef
 
Stef

ik heb een foutje gemaakt denk ik :

Code:
Var6 = DLookup("[ReserveringsID]", "tReservering", [B][COLOR="#FF0000"]"[BoekID] =""" & Me.BoekStockID.Value & """"[/COLOR][/B])
 
Laatst bewerkt:
Ik heb de fout al, ik had in de eerste formule blokhaken rond de kolom [BoekID] gezet, maar deze maakten de fout. Bedankt PaulCr, want door jou kwam ik erachter waar ik de fout had gemaakt!
 
Waarom geeft de volgende code als output "Niet gereserveerd" EN OOK de MsgBox, terwijl deze in de foutcode zit van de IIf-functie??
Code:
    Forms!fBoekenUitleen!Tekst72.Value = IIf(IsNull(Var6), "Niet Gereserveerd", "Gereserveerd" & MsgBox(("Dit boek is geleend door " & (DLookup("[Naam]", "qNamenKlanten", "Klant_ID" = Var6)))))
 
De MsgBox verschijnt omdat het een onderdeel is van het False argument, en blijkbaar levert jouw vergelijking dus altijd False op. Dan zit er dus iets niet goed in die vergelijking :). Dat kan ook best, want er zijn meerdere Null waarden die in een tabel gelden. De ene Null is dus niet de andere Null. Test maar eens wat het verschil is tussen:
Code:
 IsNull(Var6)
Code:
Var6 = Null
Dat is dus niet hetzelfde.
Nogmaals, ik heb het ook in de andere draad al gezegd: tijd voor een nieuw voorbeeldje, want je maakt m.i. teveel fouten.
 
In de tabel [tReservering] staan alleen de boeken die uitgeleend zijn.
Kijk naar mijn antwoord in de andere vraag; dit is dus ten enemale een foute veronderstelling: een gereserveerd boek is aangevraagd, maar nog niet uitgeleend. Dat zijn twee verschillende zaken!
 
een gereserveerd boek is aangevraagd, maar nog niet uitgeleend. Dat zijn twee verschillende zaken!
Ik weet het. Ik heb af en toe een beetje problemen met formuleren van mijn problemen, maar ik bedoel natuurlijk ook 'aangevraagd'

De MsgBox verschijnt omdat het een onderdeel is van het False argument, en blijkbaar levert jouw vergelijking dus altijd False op. Dan zit er dus iets niet goed in die vergelijking . Dat kan ook best, want er zijn meerdere Null waarden die in een tabel gelden. De ene Null is dus niet de andere Null. Test maar eens wat het verschil is tussen:
Code:

Code:
 IsNull(Var6)

Code:

Code:
Var6 = Null

Dat is dus niet hetzelfde.
Het gekke is dat de output van de functie Niet Gereserveerd is, (Dit is de True van de IIf-functie), en de MsgBox (Een gedeelte van de foutcode). Het lijkt dus wel alsof de code juist en tegelijkertijd onjuist is, maar dat begrijp ik niet.
Ik heb een poos zitten stoeien met de code Var6 = Null, maar dit werkte niet. Ik kreeg inderdaad een andere output, maar deze output was altijd fout. Dat was natuurlijk niet de bedoeling dus ben ik geswitcht naar IsNull(Var6). Dit werkte beter behalve bovenstaande dat ik nog steeds de MsgBox te zien kreeg
 
Ik gebruik jouw soort constructies nooit; een IIF gebruik ik alleen om een bewering te testen, en afhankelijk van de uitkomst een actie te doen. Of niet. Blijkbaar wordt een MsgBox altijd uitgevoerd, ongeacht waar je hem neerzet.
Dus ik zou (met inachtneming dat ik dit dus nooit zo zou doen) dan deze constructie toepassen:
Code:
If IsNull(Var6) Then
    Me.Tekst72.Value = "Niet Gereserveerd"
Else
    Me.Tekst72.Value = "Dit boek is geleend door " & (DLookup("[Naam]", "qNamenKlanten", "Klant_ID" = Var6
End If
Niks Msgbox dus; nergens voor nodig om gebruikers continue met MsgBoxen lastig te vallen. Daarnaast is het hele proces dus te voorkomen door op de juiste manier te reserveren/uit te lenen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan