[Access] Run query between vanuit formulier

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wanneer ik met het commando;

Leeftijd: Int((Date()-[Geboortedatum])/365,25)

de leeftijd van een persoon in een access query wil bereken, gaat dat goed.

En wanneer ik bij criteria invul;

Between 0 And 100

gaat dit ook goed. (ik krijg de juiste waarden terug)

Maar wanneer ik de waarden 0 en 100 uit een formulier ophaal krijg ik geen resultaten terug. Mijn criteria ziet er dan als volgt uit;

Between [Forms]![List mailing]![startl] And [Forms]![List mailing]![stopl]

waarbij startl en stopl de waarden in de 2 comboboxen zijn. Wanneer in het formulier 0 en 99999 wordt ingevult, dan krijg ik wel weer resultaten.

Mijn vermoeden is dat wanneer een waarde in een formulier wordt ingevult, deze een wijziging ondergaat wanneer de query wordt gerunt waardoor de query met een verkeerde waarde wordt uitgevoerd. Maar waarom gaat dit mis bij een waarde tussen 0 en 100 en gaat het goed met een waarden tussen 0 en 999999 of bijvoorbeeld 4 en 88.

De query wordt gerunt vanuit het formulier waar de variabelen zijn ingevoerd met vbs command;

Private Sub cmdOK_Click()
DoCmd.OpenReport "Adresetiketten_Query", acViewPreview, acEdit
DoCmd.Close acForm, "MailingList"
End Sub

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?
PRG >> OFF en tevens even de Access tag in je topictitel gezet.

Interpreteert Access de "100" niet als string i.p.v. een integer ofzo? Dus moet je niet zoiets hebben:
code:
1
Between CInt([Forms]![List mailing]![startl]) And CInt([Forms]![List mailing]![stopl])

of iets dergelijks... En als eens gedebugged? (Debuggen: Hoe doe ik dat?)

[ Voor 34% gewijzigd door RobIII op 14-09-2010 22:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank voor de uitleg en verwijzingen.

Inderdaad. De optie CInt ervoor werkt! Omdat ik niet met decimalen werk, is Int voldoende.
Conclusie voor mij iig is;

Waarden bij een criteria van een query worden standaard als integer beschouwt, maar waneer de waarden uit een formulier worden gehaald, wordt deze als tekenreeks geinterpreteerd.

Verwijderd

leeftijd berekenen kan met de datediff functie.