query met berekeningen en voorwaarden

Status
Niet open voor verdere reacties.

wavabie

Gebruiker
Lid geworden
10 feb 2015
Berichten
15
Ik heb een tabel die oa het veld 'Datum' bevat en het veld 'Nummer'. De respectievelijke gegevenstypes zijn Datum/Tijd en Tekst. Nu wil ik een query die :

1) uit het het datumveld de 2 laatste posities van het jaar haalt , Expr1: Val(Format$([Tabel];Datum;"yy")) (vb 31/12/2014 levert 14 op)
2) uit het veld 'Nummer' de eerste 2 posities weergeeft, Expr2: val(left([Tabel]!Nummer;2)) (vb 124567 levert 12 op)
3) De berekening Expr1 - Expr2 (vb 14-12=2)
4) enkel de records weergeeft waarvan de berekening <-1

Vanalles geprobeerd en het lukt behalve punt 4. De berekening klopt maar na het ingeven van het criterium <-1 en het uitvoeren van de query krijg ik steevast de melding dat de gegevenstypes niet overeenstemmen.

Alvast bedankt voor jullie input.
 
Nog afgezien van de ingewikkeld structuur (een veld 'Nummer' als tekst?) en de nog ingewikkelder manier waarop je de cijfers uitleest, (Right(Year(Datum);2) levert een getal op, geen tekst) Zou ik het zo doen met deze formule:
Code:
(Right(Year(Datum);2) - Cint(Left(Nummer;2))) < -1
En dan als criterium: <> Onwaar.
 
Beste,

Heb uw aanbevelingen gevolgd en het werkt. Dank.

Betreffende het veld 'Nummer' met gegevenstype Tekst. Om correct te zijn is het zo dat de inhoud van het veld 'Nummers' zowel letters als cijfers bevat maar tot nu steeds begint met meerdere cijfers, vandaar ... Stel nu dat voortaan het veld 'Nummers' ook gegevens als 'AA123' bevat en ik wil die records en de records uit voorgaande in 1 query kunnen ophalen. Hoe kan dat dan?
 
Ik snap je laatste vraag niet helemaal. Je hebt nu dus in het veld [Nummers] alleen cijfers staan, en in de toekomst wil je daar ook letter(s) bij hebben, zie ik dat zo goed? In je huidige formule (ik neem aan dat je nog steeds dezelfde gebruikt voor [Nummer]) doe je dat met Left, maar dat werkt dan natuurlijk niet meer. Je zult dan met Mid moeten gaan werken. Maar de combinatie van nummers en nummers+tekst maakt dat dan dus heel erg lastig. Wellicht dat je met een IIF kunt werken en 2 formules gebruiken voor de cijfers. Dan krijg je iets als:
Code:
IIF(IsNumeric(Left([Nummer];2));Left([Nummer];2);Mid([Nummer];2;2))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan