Avatar billede lunddata Nybegynder
12. februar 2002 - 20:19 Der er 11 kommentarer og
1 løsning

Beregning af gennemsnit i formularfelt

Følgende foregår i formular. Hvad skal jeg skrive i udtryksgeneratoren i et felt under egenskab for at kunne beregne gennemsnit af felter i formularen med navnene "1fedtpoint, 2fedtpoint.....7fedtpoint"
12. februar 2002 - 20:22 #1
=(1fedtpoint+ 2fedtpoint+....+7fedtpoint)/7
Avatar billede lunddata Nybegynder
12. februar 2002 - 20:34 #2
formlen dur ikke når alle 7 felter ikke er indtastet. Der skal også kunne beregnes gennemsnit når f.eks kun "1fedtpoint og 2fedtpoint" er oplyst.
12. februar 2002 - 20:49 #3
=(nz(1fedtpoint;0)+ nz(2fedtpoint;0)+....+nz(7fedtpoint;0))/7
Avatar billede lunddata Nybegynder
12. februar 2002 - 22:17 #4
når jeg skriver følgende:
=(nz([1Fedtpoint];0)+nz([2Fedtpoint];0)+nz([3Fedtpoint];0)+nz([4Fedtpoint];0)+nz([5Fedtpoint];0)+nz([6Fedtpoint];0)+nz([7Fedtpoint];0))/7 og
1Fedtpoint = 4
2Fedtpoint = 4
3Fedtpoint = 4 og der ikke er flere fedtpoint fås et gns. på 1,71428571428571 -------- med andre ord et forkert gennemsnit(der er divideret med 7 fremfor 3)
Avatar billede jesperthomsen Nybegynder
12. februar 2002 - 23:05 #5
Jeg ville lave en afterupdate event på alle de syv felter der opdaterede gns-feltet. I afterupdaten ville jeg kalde en rutine der løb alle syv felter igennem som noget i stil med:

Private sub OpdaterGns()
Dim i as integer

  if len(trim$(1fedtpoint) & "") > 0 then
    i = i + 1
  end if
  if len(trim$(2fedtpoint) & "") > 0 then
    i = i + 1
  end if
  osv op til nr. 7
 
  if i > 0 then
    gns = (1fedtpoint + 2fedtpoint + 3fedtpoint....) / i
  else
    gns = 0
  end if

end sub

Som du nok kan se er det uafprøvet kode, men ideen skulle være der.

Jesper
Avatar billede nih Novice
13. februar 2002 - 00:07 #6
Function gennemsnit()
  Dim antal As Integer
  Dim sum As Double
  Dim c As Control
 
  sum = 0
  antal = 0
 
  For Each c In Me.Controls
    If c.Tag = "ind" Then
        If Len(Trim$(Nz(c, "")) & "") > 0 Then
          antal = antal + 1
          sum = sum + Nz(c, 0)
        End If
    End If
  Next c
  TxtRes = (sum / antal)
End Function
Avatar billede nih Novice
13. februar 2002 - 00:11 #7
Dine textfelter der skal beregnes på skal mærkes: ind
Og i hændelsen efter opdatering skal du angive funktionen: =[gennemsnit]
dit textfelt, hvor resultatet skal stå skal have navnet: txtRes.

Så er du heller ikke bundet af 7 felter, men kan nemt udvide din form med flere input txtfelter

Niels
Avatar billede nih Novice
13. februar 2002 - 00:14 #8
du kan selvfølgelig også skrive "=[gennemsnit]" i formens vedaktuel, så sker beregningen også når du skifter mellem posterne

Niels
Avatar billede lunddata Nybegynder
13. februar 2002 - 22:13 #9
endnu er jeg ikke nogen ørn udi access, men jeg prøver mig frem . Hvad er fremgangsmåden? Bruger jeg kodegenerator  og så fremdeles?
Avatar billede jesperthomsen Nybegynder
13. februar 2002 - 23:24 #10
Du skal bruge kode-generatoren både for at lave min og nih's i øvrigt mere elegante løsning.

På hvert af de syv felter kan du så på dets afterupdate-egenskab skrive navnet på din gennemsnitberegningsrutine i []. Jeg er ikke vild med at bruge OnCurrent (VedAktuel) for den fyrer osse når der ikke nødvendigvis er behov for den.
Avatar billede lunddata Nybegynder
14. februar 2002 - 09:51 #11
Til Jesper
Vil du kunne hjælpe yderligere ved direkte kontakt på min mail?
Avatar billede jesperthomsen Nybegynder
14. februar 2002 - 10:02 #12
Jeps - send mig eventuel mdb-filen på jesperthomsen@yahoo.com - så ser jeg lige på den.
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