Avatar billede puppetmaster Nybegynder
22. december 2003 - 08:54 Der er 9 kommentarer og
2 løsninger

Problemer med funktionen DAvg

Jeg har en tabel som ser ud som følger:

Varenr  vægt1 vægt2 vægt3 vægt4 vægt5  Andet
1        122  121  123  123  123
1        122  132        123  142
2                                      'Noget'
1        142  153  142  140  132


Nu vil jeg gerne have lagt alle vægte sammen for et givent varenr.
Dvs. 122+121+123+123+123+122+132+123+142 osv.
Resultatet så skal divideres med antallet af vægte.
Jeg troede DAvg kunne klare sagen, men hvis der IKKE er indtastet noget i ALLE felter, "regner den forkert".

=(DAvg("[vægt1]";"MinTabel";"[varenr]=" & [varenr])+DAvg("[vægt2]";"MinTabel";"[varenr]=" & [varenr])+DAvg("[vægt3]";"MinTabel";"[varenr]=" & [varenr])+DAvg("[vægt4]";"MinTabel";"[varenr]=" & [varenr])+DAvg("[vægt5]";"MinTabel";"[varenr]=" & [varenr]))/5
Avatar billede puppetmaster Nybegynder
22. december 2003 - 08:55 #1
Lidt mere overskueligt (nå ja, resultatet skal også divideres med 5!):


=(DAvg("[vægt1]";"MinTabel";"[varenr]=" & [varenr])+
DAvg("[vægt2]";"MinTabel";"[varenr]=" & [varenr])+
DAvg("[vægt3]";"MinTabel";"[varenr]=" & [varenr])+
DAvg("[vægt4]";"MinTabel";"[varenr]=" & [varenr])+
DAvg("[vægt5]";"MinTabel";"[varenr]=" & [varenr]))/5
Avatar billede mugs Novice
22. december 2003 - 09:08 #2
Access kan ikke regne hvis et eller flere felter er Null, så skal du bruge funktionen Nz.
Avatar billede mugs Novice
22. december 2003 - 09:10 #3
I dette eksempel returneres 0 hvis feltet er Null (tomt):
Udtryk1: (Nz([felt1];0)+Nz([felt2];0))
Avatar billede hugopedersen Nybegynder
22. december 2003 - 09:33 #4
Hvis du har angivet en standardværdi i dine felter til nul 0 så burde den regne som du gerne vil have den til.

Som mugs siger, så springes felterne der indeholder Null over ved gennemsnits-beregning (og standardafvigelse) 
Jeg har brugt en del tid på denne problemstilling i et af mine størrere Access projekter og har sagt mange ukvemsord til min skærm i den forbindelse :-)
Avatar billede puppetmaster Nybegynder
22. december 2003 - 10:11 #5
:)
Hvis du mener at jeg skal sætte en default værdi i selve tabellen, så er det desværre ikke en option.
Avatar billede mugs Novice
22. december 2003 - 10:22 #6
Så er der vist ingen vej udenom Nz!
Avatar billede hugopedersen Nybegynder
22. december 2003 - 10:25 #7
Hvorfor kan du ikke sætte en defaultværdi ?
Avatar billede puppetmaster Nybegynder
22. december 2003 - 11:05 #8
Fordi en default værdi bliver vist på formularen, og med mindre den default værdi er  <mellemrumstasten>, kan jeg ikke bruge det. (bossen siger at det kommer til at forvirre brugerne. Samtidig kan feltet både have en "reel" værdi, f.eks. 123 men det kan også have både NULL og tallet 0. Så hvis jeg sætter en default værdi der hedder 0, og brugeren "glemmer" at indtaste noget, går det hele i ged.
Avatar billede mugs Novice
22. december 2003 - 11:31 #9
Kan du ikke køre en validering af felterne i BeforeUpdate i stil med denne:

Is Me.Felt1 = 0 Or If IsNull(Me.Felt1) Then
MsgBox "Bla bla"
End If
Avatar billede hugopedersen Nybegynder
22. december 2003 - 11:33 #10
Så kan du kun gøre som mugs siger - brug nz  hvis værdien skal med i beregningen.  Jeg har selv lavet en gennesnitsberegning hvor jeg har brugt Null som default af den grund at hvis der ikke var indtastet noget, så ønskede kunden det ikke med i beregningen af gennemsnittet.
Avatar billede puppetmaster Nybegynder
22. december 2003 - 11:52 #11
Det kunne jeg måske nok, har i hvert fald givet op på det og laver det på en anden måde. Men tak for hjælpen. Opretter et Access "formatering af felt på formular" spørgsmål om lidt...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester