VBA filter.on en OR operator

Status
Niet open voor verdere reacties.

Tony De Wilde

Gebruiker
Lid geworden
8 mei 2009
Berichten
16
Beste

Om mijn probleem beter uit te leggen zou ik willen verzoeken eens een kijkje te nemen op de site

http://www.fontstuff.com/access/acctut19.htm volgende code leest u daar

If IsNull(Me.cboOffice.Value) Then
strOffice = "Like '*'"
Else
strOffice = "='" & Me.cboOffice.Value & "'"
End If

Nu deze techniek is interessant alleen er is 1 grote maar bij !!! . Wanneer alle controls op het dialoogvenster leeg gelaten worden zal Access in het rapport alle records supprimeren waarvan de veldwaarde leeg is . Dus laat er nu in het rapport voor het veld [office] een record voorkomen die leeg is tja dan wordt die eruit gesmeten. "Like '*'" is volgens mij gelijk als "is not null"

Dus dacht ik ik gebruik de OR operator strOffice = "Like '*'" & "OR" & "[office] is null" en zaak opgelost nu laat access inderdaad alle records door in het rapport maar zet ik nu een filter in via het formulier dan geeft hij een foute output! . Er volgt geen fout melding.

alvast bedankt
 
Niets is gelijk aan NULL zelfs NULL <> NULL geeft false en NULL = NULL geeft false.
In dit geval kan je beter gebruik maken van het IIF commando.
Je krijgt dan
Code:
IIF([Office] is Null,Null, [Office])

Je like commando kan je dan beter vervangen door de naam van het veld zelf, dat geeft minder overhead.
Bovenstaand commando moet je waarschijnlijk nog wel even aanpassen.

Enjoy!
 
begrijp het niet goed wat u bedoelt , bedoelt u dit dan ?

If IsNull(Me.cboOffice.Value) Then
strOffice = [Office]

Else
strOffice = "='" & Me.cboOffice.Value & "'"
End If


?.
 
begrijp het niet goed wat u bedoelt , bedoelt u dit dan ?

If IsNull(Me.cboOffice.Value) Then
strOffice = [Office]

Else
strOffice = "='" & Me.cboOffice.Value & "'"
End If
Ik snap jou niet helemaal.

Waarom wil je een string variabele strOffice vullen met een is-gelijk-teken?
Waarom niet:
Code:
strOffice = Me.cboOffice.Value
sneller is:
Code:
strOffice = Nz(Me.cboOffice.Value,[Office])
Maar ik denk dat ook dat niet werkt omdat we allemaal technieken door elkaar hebben gegooid.
[Office] is de naam van een veld in de aan de form gekoppelde tabel of recordset. Je kan ook Office of Me.Office gebruiken.

Als je een voorbeeld database post dan snap ik beter wat je waar wilt doen en wanneer.

HTH:D
 
beste

bedankt voor uw interesse in mijn probleem kunt u mij uw Email adres doorgeven ? Dan stuur ik de databank op met wat uitleg . de reden waarom ik de "=" gebruik

If IsNull(Me.cboOffice.Value) Then
strOffice = "like'*'"
Else
strOffice = "='" & Me.cboOffice.Value & "'"
End If

reports!naamrapport.filteron = "[office]"& stroffice & "AND" & enzoverder voor de volgende velden.



is cbooffice niet leeg en werd management gekozen dan wordt dit filter.on = [office] = 'management' indien de control op form leeg gelaten wordt filter.on = [office] like "*" maar da werkt niet zoals ik wens dit laatste !. is er een veldwaarde niet ingevuld voor het veld office dan wordt de desbetreffende record uit het rapport gegooid en dit wens ik niet !!! . Aangezien ik verschillende filters op het dialoogformulier gebruik komen hier brokken van . Bestaat er zo iets niet als

If IsNull(Me.cboOffice.Value) Then
strOffice = ALLE RECORDS DOORLATEN OOK DE LEGE VELDWAARDEN
Else
strOffice = "='" & Me.cboOffice.Value & "'"
End If



De databank die ik bouw is geinspireerd op bovenstaande technologie , gebruikt dezelfde systemen en zorgt dus voor dezelfde problemen het voorstel die u deed wil ik eens uitproberen maar vrees dat hij de lege er uit zal bonjouren heb al gisteren iets in die zin geprobeerd . Ik gebruik access 2007
 
kan je de database niet posten?
als je de backend weglaat en alleen de applicatie post en dan alleen de gedeeltes die problemen geven dan lijkt me dat genoeg.

HTH:D
 
Ik weet niet of het probleem ondertussen is opgelost, maar deze code geeft bij mij in ieder geval geen problemen.

Code:
' Build criteria string for Office field
    If IsNull(Me.cboOffice.Value) Then
        strOffice = "Like '*'" & " OR " & "[Office] is Null"
    Else
        strOffice = "='" & Me.cboOffice.Value & "'"
    End If
Je kunt derhalve probleemloos een plaats selecteren, en die weer verwijderen. Laat dus ook lege records zien...
 
Beste mensen

Bedankt voor jullie input , de zaak is nog niet opgelost ik moet ook de databank nog doorsturen maar weinig tijd late werkuren en mijn databank die 13 MB bedraagt zelfs gecomprimeerd kan ik momenteel niet doorsturen (te groot) zal er het een en ander uit moeten smijten . Lukt zelfs niet via mijn outlook.
 
En probeer de db ook eens te comprimeren en Herstellen: <Extra>, <Database hulpprogramma's>, <Database comprimeren en Herstellen>. Dit kan ook eventuele problemen die je ondervindt oplossen. Wat ook zou kunnen helpen: in het VBA scherm (<Alt>+<F<11>) met <Foutopsporing>, <db compileren> kijken of er fouten gevonden worden. Als dat zo is, probeer die dan te verhelpen, en kijk dan of het probleem nog steeds bestaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan