Sorteren

Status
Niet open voor verdere reacties.

Suzukisv

Gebruiker
Lid geworden
19 mei 2006
Berichten
22
Hallo allemaal

Ik heb een query met daarin 4 tabellen nl:

Repnummer APPtype APPserienr Reparatiecode

2006010001 , 93189.13336 , 010524F0722 , 3
2006010002 , 93211.14338 , 020526F1543 , 3
2006070068 , 93189.13336 , 010503F0893 , 1
2006050188 , 93211.19338 , 010503F1315 , 4
2006030083 , 93189.13336 , 010503F1360 , 1
2006040102 , 93146.10621 , 010503F1415 , 1
2006050156 , 93189.13336 , 010504F0077 , 1
2006030063 , 93211.19338 , 010504F0103 , 2
2006060052 , 93189.13336 , 010504F1374 , 1
2006050153 , 93189.13336 , 010506F1109 , 4
2006020072 , 93211.19338 , 010506F1483 , 4
2006010018 , 93189.13336 , 010507F1188 , 6

In het reparatienummer zit een jaartal (2006) en een maand (08) verwerkt. (2006081234)
In het serienummer zit een jaartal (04 van 2004) en een weeknummer (25). 010425F1234

Nu wil ik graag selecteren per apparaattype en week/maand van reparatienummer hoeveel er van elke productie week zijn uitgevallen, dit dan weer gesorteerd op reparatiecode. die in.

Wie helpt mij opweg?
 
Laatst bewerkt:
Je kunt de gegevens uit zo'n string halen met de functies left, right of mid, afhankelijk wat je wil zien en van welke kant je begint met zoeken.
Deze functies kun je in je query gebruiken en dan kun je er dus ook op sorteren en/of filteren
 
Waar plaats ik deze in de query? Heb al wat geprobeerd maar dit werkt niet. Wist wel dat je met de functie linkt en rechts een gedeelte er van af kunt knippen zodat je het goede gedeelte overhoud.
 
Waar je normaal een veld zou kiezen kun je nu right([naamvanhetveld],1,3) zetten
access zal er dan een expr1: voor zetten, run de query en dan zul je een veld met de naam expr1 zien met daarin het resultaat van je functie.
 
Wanneer ik dit doe krijg ik steeds de melding dat de syntax fout is, heb het ook al geprobeerd met rechts maar dat veranderd de zaak niet, Wat doe ik fout?
 
Hallo Suzukisv,

Maak een query waarin je het sommeringsteken aanzet (sigma, het knopje rechts van toevoegen tabel) en zet daarin in 7 kolommen:
apptype
jaarrepnr: Left([repnummer];4)
maandrepnr: Mid([repnummer];5;2)
jaarappserienr: Mid([appserienr];3;2)
maandappserienr: Mid([appserienr];5;2)
repcode
aantal: repcode

Zorg dat in de eerste 6 kolommen op de derde regel Group By staat en in de zevende kolom Aantal en voer vervolgens de query uit.

Toelichting:
Met de sigma zorg je er voor dat geselecteerd wordt op alle genoemde velden met Group By en met de laatste kolom krijg van elke selectie het aantal.
De vier velden jaarrepnr t/m maandappserienr zijn nieuwe velden die afgeleid zijn uit de bestaande velden repnummer en appserienr.
 
Je hebt me al een aardig eind op weg geholpen.
Nu wil ik van het weeknummer uit het serienummer een maand berekeken, dit doe ik door het weeknummer te delen door 4,33. Dit gaat goed alleen het afronden op een geheel getal krijg ik niet voor elkaar, ik gebruik hiervoor het commando round()

Ik heb ook de functie left/right nu toegepast ipv mid.

maandappserienr: round((Right(Left([reparatienummer];6);2)/4,33)));1 maar dit gaat niet goed.
Heb jij een oplossing?
 
1. Omdat een maand nu eenmaal geen veelvoud is van een week, vallen sommige weken in 2 maanden. Als het alleen maar om bij benadering gaat, kun je volstaan met bijvoorbeeld:
maandappserienr: right("0"+CStr(Int(((CInt(mid([appserienr];5;2)))+4,3)/4,333));2)

Het werkt prettig als je een ingewikkelde query vanuit het midden per stap opbouwt en test met een testtabel, dus:
- mid([appserienr];5;2) om de maand als tekstveld te krijgen
- CInt (let op, hoofdletter C en I) om er een numeriek veld van te maken
- dan aan de achterkant de berekening afmaken met +4,3)/4,333
- vervolgens de gehele waarde bepalen met Int
- en een tekstveld maken met CStr
- om tot slot een voorloopnul te plaatsen bij de maanden 1 t/m 9 met right("0"+ .....;2)

Telkens voeg je haakjes toe op de juiste plekken!

Succes er mee.
 
De functie werkt goed, alleen moest ik CInt vervangen door Val (zeker acces 97).

Wat ik nu wil doen is binen een reparatie maand (hierin staan bv 20 reparaties) een overzicht maken van de aantallen per productiejaar en maand. Dus eigenlijk maart 2006 zijn er 2 reparaties geweest met productiejaar 05 en productiemaand januari.

Groeten

SV
 
Heb het probllem opgelost met een extra query.

Iedereen bedankt voor de genomen moeite, vooral HRGT
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan