Ga naar inhoud

Access waarden vervangen?


anoniem

Aanbevolen berichten

Ik heb een query die de scores uitrekent, ja nog steeds voor de sportdag :wink: Maar ik had de waarde opgelost dacht ik maar, ik zit nu met het probleem dat als er bij een onderdeel wat om een tijd vraagt een 0 wordt ingevoerd dan krijg ik een score boven de honderd (omdat 0 niet bij het minimum wordt gerekend) Maar het probleem is dus die scores boven de honderd terwijl ze alleen recht hebben op een score 0. Ik reken de score dynamische uit door gebruik te maken van het minimum en maximum en zo komt er dus altijd een score tussen de null en honderd uit. En als die null waarde uit sluit dan sluit ik die speler helemaal uit en dat mag niet. Ik wil dus nu dat getal wat hoger is dan honderd vervangen door een null, ik heb namelijk een query aan het einde die de score's importeert en de namen erbij zet en als ik daar dan een soort van replace functie in kan plaatsen is mijn probleem opgelost.
Link naar reactie
Hoi Wat ik uit je verhaal kan opmaken weet ik twee opties: 1. een if functie(in vba gewoon if en in expression builder iif). Ik zal expressionvoorbeeld nemen: [code:1:2403c3ca06] IIF(tijd=null;tijd=null;je orginele berekening) [/code:1:2403c3ca06] 2. een if die na je berekening de waarde boven de honderd eruit filterd: [code:1:2403c3ca06] IIF(waarde>100;waarde=null;waarde=waarde) [/code:1:2403c3ca06] Ik hoop dat je hier wat aan heb. Succes StruiS
Link naar reactie
Een select-query is slechts een venster naar (een) tabel(len). Die scores zitten dus eigenlijk gewoon in de tabel die de query raadpleegt. Die tabel moet je dus ook updaten. Dat verhaal over die scores is me een beetje te vaag, maar het ziet ernaar uit dat je eerst die update-query moet uitvoeren om de waarden-boven-100 null te maken en daarna die score-importeer-query...
Link naar reactie
Nou mijn tabel bevat dus gewoon de waarde, die uit de prestaties van de leerlingen afkomstig zijn. Voor de 400m en de sprint komt er een tijd uit en voor de rest een afstand. Bij die tijd heb ik het probleem dat er bij een waarde 0 een te hoge score uitkomt en dat moet ik dus tegen zien te gaan. Maar ik verander geen tabel ik maar gebruik van een query waarin ik de score's omreken.
Link naar reactie
Volgens mij haal je null en 0 een beetje door mekaar, maar goed. Wat je nu doet is je hebt een oplossing bedacht voor het gevolg van je probleem. Beter is natuurlijk een oplossing voor het probleem zelf. Zoals ik het zie heb je dus een soort tabel Resultaten(Speler, Afstand, Tijd). Je hebt verder een query om de scores uit te rekenen. Hoe je dat precies doet is me nog steeds niet duidelijk, maar als het veld Tijd niet ingevuld is (null) of op 0 is gezet (de leerling heeft niet gelopen?) dan klopt de uitkomst van je score niet. Oplossing zoeken in de berekening van de score (rekening houden met null en 0) of het veld Tijd eerst zodanig aanpassen dat de berekening wel het gewenste resultaat geeft, bijv. veld Afstand en veld Tijd op 0 zetten, dus eerst een UPDATE-query uitvoeren en daarna pas de scores uitrekenen.
Link naar reactie
Hij staat standaard al op 0 en niet op null. De score reken ik uit met de volgende query: SELECT leerlingen.volnaam, ((100-Int((leerlingen.sprint-sprint.min)/((sprint.max-sprint.min)/99)+0.5)))AS sprint, ((100-Int((leerlingen.[400 m]-[400m].min)/(([400m].max-[400m].min)/99)+0.5))) AS 400m FROM leerlingen, sprint, 400m; En min is het minimum waarbij 0 wordt uitgesloten.
Link naar reactie
Oke, ik zie dat leerlingen.sprint de variabele is en als die onder het minumum zakt is de uitkomst hoger dan 100. Als je de uitkomst dus 100 wil hebben, dan moet je eerst alle sprint-velden die kleiner zijn dan het minimum gelijkstellen aan het minimum. Wil je die leerlingen als uitkomst 0 geven, dan moet je die sprint-velden aan het maximum gelijkstellen.
Link naar reactie
Als ik hem gelijk stel aan de maximum score dan krijg ik als puntenaantal 1, dus ik moet het gelijkstellen aan de maximumscore + ??. Maar dat zal dus met een update query moeten, en dan krijg ik weer het probleem dat hij toestemming vraagt en ik wil het volledig buiten de gebruiker om laten gaan, want de gebruikers hebben een zeer beperkte computer kennis. [edit] Is dit mogelijk? [/edit] [ Dit Bericht is bewerkt door: mvwinger op 2002-01-27 19:14 ]
Link naar reactie
Lang zoeken heeft het volgende opgelevert het is mogelijk, door het volgende programma fragment: [code:1:df4601ce03]With DoCmd // schakel de waarschuwing uit .SetWarnings False // open de query die gedefineerd is .OpenQuery soort // update de score haal er dus de getallen boven de honderd uit .OpenQuery ("update sprint") .OpenQuery ("update 400m") // update de totaalscore want die is veranderd. Moet beter kunne maar is niet van belang .OpenQuery ("update totaal") // Open nu het rapport, in preview. .OpenReport ("Eind scores"), acViewPreview // zet de waarschuwingen weer aan. .SetWarnings True End With[/code:1:df4601ce03]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...