Selecteer de laatste 20 records, aan de hand van een datum.

Status
Niet open voor verdere reacties.
Er zit inderdaad een macro in (brrrr). Ik kan niks met macro's en ik wil niks met macro's :).
 
Ik begrijp niet zo goed waar je het over hebt, eerlijk gezegd. Ik zie formulieren en queries en tabellen...
Het 'probleem' dat ik nu heb met die Top20 heeft m.i. niets met macro's van doen.

Maar begrijp ik het goed dat je me nu niet kunt helpen?

Toch bedankt voor de hulp tot nu toe...
 
Ik kan uiteraard wel helpen, maar ik zie de code nergens die je eerder hebt gemaakt. Ik zie alleen macro's staan. En aangezien ik de db verder niet ken, weet ik dus niet waar jij die query wilt hebben. Daarnaast zie ik knoppen met macro's en daar kan ik dus inderdaad bar weinig mee; het loopt mij dun door de broek als ik een macro zie. Met VBA kan ik je prima helpen, daar is de SQL code ook voor gemaakt, maar als je met macro's wilt werken haak ik dus inderdaad af :).
 
Laatst bewerkt:
Ik geloof dat we aardig langs elkaar heen aan het praten zijn.

Ik heb een formulier waarop een paar knoppen staan.

Nadat de gebruiker een medewerker heeft gekozen kan hij ook een periode opgeveven. (Begin en einddatum) Da's de eerste knop... De knop ernaast voert een query uit met een Top20. Die wil ik anders...daarbij moet de gebruiker zelf een aantal (de gewenste Top .....) moeten kunnen invullen. Bekijk bijlage 231725

Dat is het enige dat ik vraag. Hier komt echt geen macro aan te pas. Er wordt slechts een query uitgevoerd die nu standaard een Top20-bewerking uitvoert, maar die ik dus 'dynamisch' wil gebruiken. Ik heb geprobeerd daar de code in te vullen die je mij had voorgelegd, maar dat lukt mij niet...
 
Hier komt echt geen macro aan te pas.
En daar ga je dus de fout in: dit kun je alleen doen als je de query dynamisch opbouwt. En dat gaat dus niet als je het proces via een macro aanstuurt. Dat moet met VBA. Ok, je hebt in zoverre gelijk dat in het werkende proces er uiteindelijk geen macro aan te pas komt :D.
 
Ik heb het gevoel dat we steeds dichterbij komen.....

Je zegt: 'dynamisch opbouwen' en moet 'vba' gebruiken. Dus nu heb ik achter die knop een VASTE TOP20 query hangen...en die wil ik ombouwen. En da's nou net wat mij niet lukt. Ik heb de eerder door jou geformuleerde code proberen te gebruiken...maar het lukt mij niet om die te gebruiken als bron voor de klik op de knop.

Overigens....om de zo gegenereerde tabellen te exporteren naar een plek op ons netwerk en dan de tabel als Excel-grafiek te openen gebruik ik inderdaad een MACRO. (Ik schaam mij daarvoor overigens niet voor ... ik heb voor dat soort bewerkingen niet altijd een code of een juiste formulering bij de hand ... vandaar. Maar...ik leer steeds meer bij. Ik ben nu bij les7 van jouw pracht-cursus, dus wie weet...
 
Ik heb je systeem overboord gegooid, want die extra tabel (en dus tabelmaakquery) is ook nergens voor nodig :). Kijk maar of je snapt wat er gebeurt.
 

Bijlagen

Octafish, dank voor al je inspanningen....maar ik snap er niets van. (zo, da's eruit)

Ik zie niet wat er gebeurt ... als ik de knop aanklik.

Nadat ik een naam heb geselecteerd dan zou ik verwachten dat er een dialoogvenstertje verschijnt met de vraag (hoever wil je terugkijken? Top 20, 30 or whatever) en dat dan de tabel wordt gevuld met het gewenste aantal 'laatste data'-records. Ik zie niet dat er uberhaupt iets gebeurt ...

Sorry, ik voel me steeds meer een dom blondje. (terwijl ik een kalende exponent ben van de koude oorlog-generatie)
 
daar hebben we allemaal wel eens last van
Er is een extra tekstvak waarin je het aantal invult. Hij neemt dat ook mee in de knop. Vul je niks in, dan pakt hij Top 1 om te voorkomen dat de query.crasht
 
Octafish, ik dank je zeer. Ik had even niet goed opgelet. Jouw opmerkingen over het macro-gebruik zal ik ter harte nemen. En jouw cursus ligt alweer klaar op mijn bureau. Nogmaals dank.... eigenlijk jammer om dit item nu op opgelost te zetten.
 
Laatst bewerkt:
Toch jammer dat de uitkomst zich nou niet meer gedraagt als Top20 (or so) zoals ik dat beschreef bij de eerste vraag.

Hij genereert nu precies het aantal dat je opgeeft en niet meer zoals de Top ...zoveel... "zonder unieke waardes" en "zonder uniek record".

Maar eeeh, ik zeur niet ....
 
Ik heb jouw query genomen; in de test die ik er mee gedraaid heb komt hij steeds met (zo goed als) het aantal records dat je wilt hebben. Dus wat bedoel je precies? Het enige dat hij nu anders doet is de hoeveelheid (zoals gedefinieerd in TOP) aanpassen.
 
Wat ik bedoel is dit: als ik in de query definieer top20 (en dan bedoel ik de laatste 20records met een datum als sortering), en de laatste datum is dan bv. 20-1-2015 (dus dat is het 20e record) dat dan ook nog eventuele andere records van de 20e januari worden getoond als je zegt "unieke records": nee. Dan krijg je bv. (Ondanks dat je hebt ingesteld: "top20") toch 22 records omdat er dan nóg 2 records werden gevonden met dezelfde datum als het record dat als laatste werd gevonden.

Ik hoop zeer dat ik dit goed uitleg want ik ben onderweg en heb geen toegang tot ACCESS op dit moment.
 
Dat heb ik dacht ik al eerder uitgelegd: TOP probeert het ingegeven aantal records weer te geven op basis van de sortering/filtering. Sorteer je op een datumveld, dan kan Access daar niet zoveel mee; heb je 23 records voor 20-1 en is dat je hoogste datum, dan krijg je bij zowel TOP 1, TOP 10 als TOP 20 alle 23 records te zien. Puur op basis van het feit dat TOP geen onderscheid maakt in die records. Want welke 3 records wil je dan niet zien? Zonder extra filterslag is dat niet te bepalen. Ik vind dat overigens een terechte aanpak van Access; bij gelijke stand wil je alle kandidaten zien. Denk aan een sportwedstrijd; als 2 schaatsers exact dezelfde tijd schaatsen op een afstand, en daarmee op de derde plaats eindigen, welke van de 2 krijgt dan de medaille? De korste? De dunste? Degene met het roodste haar? Of wellicht toch maar allebei?

Je krijgt wél een exact aantal terug als je sorteert op een uniek veld. Bijvoorbeeld een autonummerveld. Je zou eens kunnen experimenteren met een extra veld waarin je zowel de datum als het ID veld combineert in één veld. Dan heeft de sortering op dat veld wel altijd unieke waarden. Met dus de restrictie dat je records niet ziet die net zoveel recht hebben om gezien te worden :).
 
We kletsen weer langs elkaar heen, geloof ik. Ik wil dat precies zo..zoals je dat hierboven schetst...ik wil inderdaad 23 records zien ipv 20. Maar ik zag dat nu niet gebeuren..met jouw "nieuwe knop" zie ik er steeds precies zoveel als ik er opgeef. Of is dat steeds toevallig zo...sorry ik kan nog steeds niet zelf in de database...dus ik kan nu niet testen...gisteravond kreeg ik steeds het exacte aantal records dat ik had opgegeven en dacht daarom dat het resultaat mij niet zo beviel als ik in eerste instantie dacht. Ik zal dat vanavond weer gaan testen.... wederom dank.
 
Da's het probleem met voorbeeldjes en productie bestanden :). Als je een in jouw ogen verkeerde selectie krijgt, dan staat er vermoedelijk een filter/sortering teveel op waardoor de query wél exact kan tellen. En dat moet dan weg. Dus alleen sorteren op Datum en het zou weer het gewenste resultaat moeten opleveren.
 
Ik ga testen vanavond ... het zal zo zijn als je zegt. Wellicht staat de zaak nu niet op monsterdatum gesorteerd. Als ik straks zie wat ik wil zien dan sluit ik het item. Wederom bedankt ... ik moet maar wat beter mijn best doen om dit allemaal beter te begrijpen. En de cursussen volgen, natuurlijk. Trouwens, hoe heb je in godsnaam die macro omgezet naar Code? Kan dat ook in Access2007 ... waar wij (nog steeds) mee werken.
 
Volgens mij kan dat nog wel; je kunt macro's exporteren naar VBA procedures. Althans in 2010. Ze staan in een eigen module. Ik heb eerlijk gezegd nog nooit zoveel macro's in één module gezien :). Alleen dat al zegt 3 dingen:
1. je bent bepaald niet lui
2. het kan allemaal een stuk slimmer
3. al die tijd die je in de macro's hebt gestoken, had je ook in VBA kunnen steken. Was je nu waarschijnlijk beter geweest als ik :)

Zo'n macro ziet er toch ook niet uit in dat macro venster? Procedures zijn zoveel makkelijker te lezen en aan te passen.... Ik snap mensen echt niet die lang in macro's blijven programmeren. OK, als je niks van programmeren af weet dan is het wellicht een leuk startpunt, maar er komt toch een moment dat je denkt: waar ben ik mee bezig? :D.
 
Haha... Inderdaad, een lui type ben ik niet. Maar programmeren is ook nooit mijn ding geweest/geworden. Ik probeer het wel, maar loop dan altijd aan tegen een paar onneembare hobbels. Kennelijk zit me dit niet in het bloed....en ja...dan zijn macro soms wel handig als je een aantal queries achter elkaar wil uitvoeren of eens wil regelen dat bij openen van een formulier de focus meteen wordt verlegd naar een bepaald veld. Dat weet ik met Macro's toch echt beter te regelen (of misschien moet ik zeggen 'sneller te regelen') dan met VBA-code. Ik heb wel VBA-cursus(jes) gevolgd maar daar zaten vaak doorgewinterde programmeurs niet niet effe blijven stilstaan bij die sukkel die eerst wil weten wat in godsnaam DIM betekent. Da's voor mij dan al een 'setback'. Dus: ik ben niet lui inderdaad, ik zou het graag anders willen, maar loop vaak tegen lastige (voor mij onoplosbare) zaken aan. Ik kan mij ook niet veroorloven om veel tijd te steken in zo'n probleempje. De oplossing via een Macro is dan snel gevonden. Ik zag er ook nooit kwaad in.... Zoals dit hele item (top 20) eigenlijk al opgelost had kunnen worden na jouw 2e post ... maar voor mij was het nog steeds AbaCaDaBra.

Dus....ik dank je nogmaals...ook voor alle wijze raad....en het woord MACRO dus ik nauwelijks meer uit te spreken. Ben blij dat dit item als opgelost mag worden beschouwd. Tot binnenkort, denk ik.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan