[Access] VB query wanneer IsNull(waarde)

Pagina: 1
Acties:

  • osnatool
  • Registratie: Mei 2003
  • Laatst online: 17-10-2014
Hallo,

Ik heb een rapport binnen Access gemaakt waarin gegevens van projecten worden weergegeven. Nu zijn er nogal wat projecten en zou het handig zijn dat er voordat dit rapport wordt afgedrukt er een selectieformulier komt. De bedoeling is dat je daarop aan kan geven:
Projectnummer van/tot
Deelprojectnummer van/tot

Dit werkt allemaal heel goed, zolang je de velden in het formulier vult. Wanneer je deze leeg laat, wordt er in eerste instantie niets getoond. Ik heb dit proberen op te lossen door de IsNull functie te gebruiken. Ik heb dit niet al te netjes opgelost, door wanneer de IsNull true is het projectnummer van op "00000000" te zetten en het projectnummer tot op "ZZZZZZZZ" te zetten.
Hieronder staat de code hiervan:
Visual Basic .NET:
1
2
3
4
5
6
  If IsNull(projectnummer) Then
    projectnummer = "00000000"
    End If
    If IsNull(projectnummer2) Then
    projectnummer2 = "ZZZZZZZZZ"
    End If

Ik heb daarnaast geprobeerd om met wildcards te werken maar dit gaat ook niet goed, ik heb * ? % geprobeerd. Mijn SQL query is als volgt opgebouwd, heb alleen een gedeelte van de where clause gekopieerd:

code:
1
2
3
WHERE (((Financieel.[Projectnr#]) Between 
formulieren![Directe en indirecte uren per project]!projectnummer
And formulieren![Directe en indirecte uren per project]!projectnummer2))


Ik heb net al even gezocht hoe je dit kan oplossen en kwam telkens op dynamische queries. Ik weet dat het op die manier kan maar ik weet ook dat het veel werk gaat kosten om het nu nog om te bouwen.

Heeft iemand een idee hoe je dit in Access kan oplossen?

  • Boss
  • Registratie: September 1999
  • Laatst online: 12:29

Boss

+1 Overgewaardeerd

Ik gebruik meestal de volgende constructie:
code:
1
2
3
4
5
6
dim strFilter as String

If not IsNull(ProjectVan) then strFilter = strFilter & " AND Projectnummer >= " & ProjectVan
If not IsNull(ProjectTot) then strFilter = strFilter & " AND Projectnummer >= " & ProjectTot

DoCmd.OpenReport "Rapport", , , "(True = True)" & strFilter

Dus per selectieveld een regel toevoegen aan je selectie statement. De true=true staat erin zodat je daarna kan beginnen met AND.

Is dat iets voor je?

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Zonder dynamisch opgebouwde query's zou dit moeten werken.

code:
1
2
3
4
WHERE
     ((projectnr>=forms!foo.nummervan) OR IsNull(forms!foo.nummervan))
     AND
    ((projectnr<=forms!foo.nummertot) OR IsNull(forms!foo.nummertot))


edit:
In acces heb je ook nog nz():
code:
1
2
WHERE
     projectNR BETWEEN NZ(FORMS!FOO.nummervan,'0')   AND NZ(forms!foo.nummertot,'zz')

[ Voor 34% gewijzigd door Lustucru op 13-06-2005 11:29 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • osnatool
  • Registratie: Mei 2003
  • Laatst online: 17-10-2014
Het is al opgelost door de post van Boss. dank u