Where condition

Status
Niet open voor verdere reacties.

Tim1985

Gebruiker
Lid geworden
4 nov 2011
Berichten
14
Beste acces specialisten,

Hopelijk kan iemand mij verder helpen. Google levert helaas voor mij geen resultaat op waarmee ik het werkend krijg.

Ik probeer mbv een event bij on click een form te openen gefilterd op de waarde waarop geklikt word (where condition). Ik heb al veel gevonden op google alleen krijg het maar niet voor elkaar...

De gegevens zijn:
De form waar ik de on click event aanmaak heet "frm time calculation"
De waarde waarop je moet klikken staat in de kolom "Parent itemnumber"
Parent itemnumber is een "Short text" veld

Het formulier dat hij moet openen heet "Frm parent information"
De filter moet plaatsvinden op het veld "Parent itemnumber"
Ook hier is Parent itemnumber een "short text" veld.

Samengevat is dus het probleem welke expressie moet ik maken om het formulier gefilterd te openen.

Hopelijk kunnen jullie mij verder helpen.

Alvast bedankt!

Gr. Tim
 
Dat zou er dan zo uit moeten zien:
Code:
    DoCmd.OpenForm "Frm parent information", , , "[Parent itemnumber] = """ = Me.Parent_itemnumber.Value & """"
ALs het niet werkt, komt dat waarschijnlijk doordat je spaties gebruikt in je naamgeving. Access doet dan redelijk raar.
 
Dat zou er dan zo uit moeten zien:
Code:
    DoCmd.OpenForm "Frm parent information", , , "[Parent itemnumber] = """ = Me.Parent_itemnumber.Value & """"
ALs het niet werkt, komt dat waarschijnlijk doordat je spaties gebruikt in je naamgeving. Access doet dan redelijk raar.

Heel erg bedankt voor je reactie! Helaas geeft hij dan een leeg formulier, wel gefilterd maar herkent dus niet de waarde. Ik zal de 2de tip proberen en de naam wijzigen (spaties verwijderen)
 
Heel erg bedankt voor je reactie! Helaas geeft hij dan een leeg formulier, wel gefilterd maar herkent dus niet de waarde. Ik zal de 2de tip proberen en de naam wijzigen (spaties verwijderen)

Ik denk dat ik iets niet goed heb opgezet in het formulier want als ik in de code ga zie ik dat hij ME.Parent_itemnumber.value wel herkent (hij geeft dezelfde tekst als waar ik op klik.)
Ook opent hij het formulier dus dit herkent hij ook.

Het probleem lijkt hem dus te zitten in dat hij de waarde niet kan vinden in het formulier dat hij opent terwijl hij wel bestaat. Bedoelde je met de spaties de headers van de queries/forms of de objecten waarbij acces vreemd kan gaan doen?

Nogmaals bedankt!

Gr. Tim
 
Laatst bewerkt:
Ik wil wel antwoord geven, als jij belooft nooit meer nodeloos te quooten :).
Als de waarde uit het hoofdformulier goed wordt gelezen en het formulier filtert niet (of leeg) dan vindt hij de waarde op het tweede formulier niet. Je krijgt verder geen foutmelding? En als je het formulier zelf probeert te filteren met een keuzelijst bijvoorbeeld? Of desnoods een knop met het filter en één specifieke waarde?
 
De underscore vervangen? Ik denk niet dat hij die gebruikt?
Code:
DoCmd.OpenForm "Frm parent information", , , "[Parent itemnumber] = """ = Me.[Parent itemnumber].Value & """"
 
Bedankt voor de reacties weer!

Wanneer ik de underscore weglaat en haakjes toevoeg herkent hij helaas de waarde niet meer waarop hij moet filteren.
Hij blijft leeg filteren (zonder foutmelding).

Als ik onderin handmatig de waarde vult ziet hij hem wel.

Het formulier is opgebouwd uit meerdere formulieren maar de brondata komt af en toe wel uit 1 query.
(ik heb hiervoor gekozen ivm de layout)

Gr. Tim

Edit:
Met onderstaande macro filter hij wel specifiek op nummer 012632-021-00820
DoCmd.OpenForm "FrmParentInformation", acNormal, "", "[Parent itemnumber]=""012632-021-00820""", , acNormal
 
Laatst bewerkt:
Dat de de oplossing van Johan niet werkt verbaast me niets; dat is zo'n beetje de enige variant die niet werkt :). Je kunt op 3 manieren verwijzen naar een object met spaties, waarvan ik er al één heb laten zien. Dat is ook de makkelijkste, omdat die al door de IntelliSense wordt gebouwd. Zodra je Me. intypt, gevolgd door de eerste letters van het gewenste object, vult Access de objectnaam zelf aan. En dan zie je dus dat spaties vervangen worden door _ tekens. De 3 bruikbare varianten zijn:
Code:
    Me.Status_document_cx_Kone 
    Me![Status document cx Kone] 
    Me("[Status document cx Kone]")
Overigens zie ik nu pas dat ik een fout in de code heb gemaakt, en die laat elk filter al bij voorbaat mislukken. Waarvoor excuus :)
Code:
    DoCmd.OpenForm "FrmParentInformation", acNormal, , "[Parent itemnumber] = """ & Me.Parent_itemnumber.Value & """"
Kijk, die had Johan dus wél mogen aanstippen :D.
 
Opgelost1

Ontzettend bedankt!!!

Deze code werkt perfect en dit is precies wat ik zocht!

Als ik iets terug kan doen hoor ik het graag! Op acces gebied zal dit vast niet het geval zijn :D Maar in excel vba ben ik iets meer thuis dan acces.

De reden dat ik me acces eigen aan het maken ben is ivm de overstap op het werk naar een nieuw ERP systeem dat zoveel data bevat dat excel er niet meer mee overweg kan.

En sinds ik hierom aan het "spelen" ben met acces ben ik zeer verrast over de mogelijkheden en snelheid! (alleen een uitdaging omdat alles net iets anders werkt)

Ik zal deze vraag sluiten omdat hij met succes beantwoord is.

Nogmaals dank!

Gr. Tim
 
iets anders maar wel bijna gelijk...

Ik ben de vorige keer zo goed geholpen dat ik het nog een keertje probeer...

Ik probeer nu op een ander manier een ander formulier op te roepen.

Ik wil dat hij het formulier opent en filtert op waarde die beginnen met item.

Het formulier opent hij, hij herkent "item" alleen de "like" functie krijg ik niet toegevoegd.

Hopelijk kunnen jullie me de goede richting insturen

Alvast bedankt!

Onderstaande code heb ik al.

Private Sub Ctl2nd_Item_Number_Click()

check_item = Left(Me.Ctl2nd_Item_Number, 11)
If Right(check_item, 1) = "-" Then
Item = Left(Me.Ctl2nd_Item_Number, 10) & "*"
Else
Item = Left(Me.Ctl2nd_Item_Number, 7) & "*"
End If

DoCmd.OpenForm "DS time all items", acFormDS, , "[2nd Item Number] = """ & Item & """", , acDialog

End Sub
 
Ik zie op het eerste gezicht niks geks. Behalve natuurlijk dat je geen CODE tags gebruikt...
 
Bedankt

Jammer ik hoopte dat ik ergens de functie like miste.
Toch bedankt voor de moeite!

Dan ga ik zelf nog even verder "spelen" met onderstaande code om te zien of ik iets over het hoofd zie.

Code:
Private Sub Ctl2nd_Item_Number_Click()

check_item = Left(Me.Ctl2nd_Item_Number, 11)
If Right(check_item, 1) = "-" Then
Item = Left(Me.Ctl2nd_Item_Number, 10) & "*"
Else
Item = Left(Me.Ctl2nd_Item_Number, 7) & "*"
End If

DoCmd.OpenForm "DS time all items", acFormDS, , "[2nd Item Number] = """ & Item & """", , acDialog

End Sub
 
Als we geen db hebben is het altijd lastig om te zien wat je nu precies aan het doen bent. Ik kon dus nu alleen constateren dat je syntax correct was. Dat je doel anders is, ja, dat is een ander verhaal :). Als je op een deel van de tekst wilt zoeken, dan moet je inderdaad LIKE gebruiken. En dan is je code dus wél fout. Dan krijg je meer iets als:
Code:
    DoCmd.OpenForm "DS time all items", acFormDS, , "[2nd Item Number] Like ""*" & Item & "*""", WindowMode:=acDialog
 
Wederom opgelost!!!

Super! Je hebt het weer voor elkaar!

Ik had de "like" al eerder op deze plek gehad en kwam er maar niet achter waarom hij leeg filterde. De fout zat hem in dat ik zowel like als het = teken gebruikte.

Hij werkt nu perfect!

Wederom weer bedankt!

De code die nu werkt is:
Code:
Private Sub Ctl2nd_Item_Number_Click()

check_item = Left(Me.Ctl2nd_Item_Number, 11)
If Right(check_item, 1) = "-" Then
Item = Left(Me.Ctl2nd_Item_Number, 10) & "*"
Else
Item = Left(Me.Ctl2nd_Item_Number, 7) & "*"
End If

DoCmd.OpenForm "DS time all items", acFormDS, , "[2nd Item Number] like""" & Item & """", , acDialog

End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan