getal even of oneven?

Status
Niet open voor verdere reacties.

Chris Cools

Gebruiker
Lid geworden
19 okt 2008
Berichten
152
Hallo,

bestaat er een functie in access waarmee ik kan zien of een getal even of oneven is?

thanx!

mvg,

chris
 
Een oplossing, gebruik de functie Mod
voorbeeld:
23 Mod 2 =1
24 Mod 2 =0
Dus
onevengetal Mod 2 geeft 1
evengetal Mod 2 geeft 0
 
Hey,
thanx!

de mod operator werkt idd om dit te doen! hij geeft 0 en 1 voor even en oneven.
maar als ik die kolom wil gebruiken om oplopen te sorteren, dan lukt dit niet... enig idee hoe dat zou komen?

grtz
 
Waar sorteer je dan op?

De Mod functie werkt uiteraard prima voor jouw probleem; je kunt het ook eens proberen met een IIF statement, waarbij je 1 en 0 als resultaat laat terugkomen. Ik deel hierbij het getal door 2, en vergelijk dat met de Integer van dezelfde deling. In onderstaand voorbeeld heb je dan harde data als uitkomst, en daar is denk ik wel op te sorteren.

IIF([Getal]/2=Int([Getal]/2);1;0)

Michel
 
>>als ik die kolom wil gebruiken om oplopen te sorteren, dan lukt dit niet

In een voorbeeld dat ik hier gebruik (numeriek veld met willekeurige getallen), lukt het wel.

@Michel
Niet belangrijk, maar Iets korter
Int(Getal/2) ==> Getal\2
 
Goeiemorgen,

of ik nu de mod functie gebruik, of de vergelijkin met de integer, ik krijg steeds hetzelfde resultaat... :(


ik heb de db hier bijgevoegd, en het gaat om de query die in de db staat, daar heb ik 4 verschillende kolommen om op te sorteren, maar de tweede voor even en oneven doet het dus niet...

grtz,
chris
 

Bijlagen

Hoi Chris,

De tabellen in de db zijn excel koppelingen, dus ik kan er nog niet zoveel mee....
Heb je iets met tabellen?

Michel
 
Ik zie in je code wel dat je een verwijzing lijkt te hebben naar een veld dat je zelf al aanmaakt:

[loc] Mod 2 AS [even of oneven], Mid([Locatie],4,1) AS niveau, Mid([Locatie],2,2) AS loc

Je zou dit eens kunnen proberen:

SELECT [Detail fysische stocks].Locatie, [Detail fysische stocks].Artikelnr, [Detail fysische stocks].[Aantal in stock], "" AS geteld, "" AS opmerking, Left([Locatie],1) AS gang, Mid([Locatie],4,1) AS niveau, Mid([Locatie],2,2) Mod 2 AS [even of oneven], Mid([Locatie],2,2) AS loc
FROM [Detail fysische stocks] LEFT JOIN Artikelenlijst ON [Detail fysische stocks].Artikelnr = Artikelenlijst.Artikelnr
WHERE ((([Detail fysische stocks].Magazijn)="hoofd") AND (([Detail fysische stocks].Deelmagazijn)="shop"))
ORDER BY Left([Locatie],1), Mid([Locatie],2,2) Mod 2, Mid([Locatie],4,1), Mid([Locatie],2,2);

Michel
 
mmmh, dan krijg ik de melding dat de gegevenstypes niet overeen komen in de expressie...:confused:

ik probeer sevvens een miniversie van de tabellen te posten!

grtz,
chris
 
Dan denk ik dat ik het probleem wel kan plaatsen, en zou je mijn variant (met de IFF en Int variant) of IFF en MOD, maakt niet zoveel uit. Eerst maar wat ik denk dat het probleem is: je haalt een getalwaarde uit een veld, dat vermoedelijk een getalopmaak heeft, dan wel een getal is. In het veld zul je dan een getal terug moeten plaatsen. Vandaar dat ik in mijn voorbeeld voor waarde Waar 1 geef, en waarde Onwaar 0. Hier kun je dan uiteraard prima op sorteren.
Jouw oplossing is om tekst terug te geven: even of oneven. Da's uiteraard tekst, en dat kan dus niet in een getalveld. Vandaar de foutmelding.

Kun je eens controleren of dit de oorzaak zou kunnen zijn?

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan