Avatar billede celal Nybegynder
17. maj 2002 - 13:52 Der er 26 kommentarer og
1 løsning

Udregn Sum i Rapporten

Jeg har en rapport, hvor jeg har en nogle felter, hvor nogle af disse felter indeholder en pris udregning (Pris2). I detalje sektionen har jeg pris2, men jeg vil nu gerne have en sum af alle Pris2 fra detaljesektionen.

I Sidehovedet har jeg oprettet en tekstbox (totalPris) som skal indholde den totale sum.
Jeg har prøvet at skrive  =Sum([Pris2]) i Tekstboxen, men der står "#fejl" i tekstboxen når jeg køre rapporten.

Det skal lige siges at Pris2 er en tekstbox, hvis værdi er udregnet i VBA under funktionen Detaljesektion_Format.

Hvordan får jeg totalPris til at indholde total sum ?
17. maj 2002 - 13:54 #1
=Sum([Pris2]) kan IKKE anbrings i sidehoved eller sidefod. Du er nødt til at anbringe den i rapporthoved/fod eller i en brugerdefineret gruppehoved/fod
Avatar billede celal Nybegynder
17. maj 2002 - 14:01 #2
Jeg har ikke nogen rapporthoved/fod..hvordan får jeg  det frem?
17. maj 2002 - 14:03 #3
Menuen Vis->Rapporthoved/fod
Avatar billede celal Nybegynder
17. maj 2002 - 14:04 #4
Okay, nu har jeg sat totalPris i RapportHoved, men når jeg køre rapporten, spørger den efter Parameterværdien for Pris2...Pris2 er jo også en teksbox
17. maj 2002 - 14:06 #5
Er det også et felt i tabellen/forespørgslen til rapporten?
17. maj 2002 - 14:06 #6
Eller beregner du det direkte på rapporten?
Avatar billede celal Nybegynder
17. maj 2002 - 14:07 #7
det er noget jeg beregner i Rapporten i VBA
17. maj 2002 - 14:08 #8
I givet fald, vil jeg anbefale dig at flytte udregningen til forespørgslen ved simpelthen at lave en ny kolonne som f.eks. ser således ud:
Pris2: Pris1*Antal*moms

Derved kan du summere på din rapport.
Avatar billede celal Nybegynder
17. maj 2002 - 14:16 #9
Så skal jeg til at lave det hele om, kan jeg ikke lave det i VBA?
Avatar billede celal Nybegynder
17. maj 2002 - 14:18 #10
Udregninger er lidt vanskelig
17. maj 2002 - 14:21 #11
Du kan gemme udregningerne i en funktion i et modul (du kan f.eks. kalde funktionen for GetPris2)
Derved kan du lave din nye kolonne i forespørgslen således:
Pris2: GetPris2()
17. maj 2002 - 14:21 #12
Du får dog nok brug for at parameteroverføre nogle af de felter, som skal bruges i beregningen.
Avatar billede celal Nybegynder
17. maj 2002 - 14:28 #13
Parameteroverføre?
Avatar billede celal Nybegynder
17. maj 2002 - 14:30 #14
Okay, jeg prøver at lave min udregning i Forespørgslen.

Men jeg har et problem....jeg skal finde antalet af dage der mellem to dato´er. Den ene dato ligger i forespørgslen, og den anden skal man selv indtaste. Jeg har pøvet med :antalDage: DateDiff("d", [Dato1], slutDato), men så får jeg en ugyldig syntaks.

Hvad skal jeg gøre?
17. maj 2002 - 14:31 #15
ja, f.eks. skrive din funktion således:

Public Function GetPris2(Pris1 as Single, Antal as Integer)
  GetPris2 = Pris1 * Antal * [Alt muligt andet]
End Function

I din forespørgsel skriver du således:
Pris2: GetPris2([Pris1];[Antal])

Derved beregnes Pris2 for hver post med udgangspunkt i den aktuelle post.
17. maj 2002 - 14:32 #16
Der skal bruge semicolon i forespørgsler i stedet for kolon
Avatar billede celal Nybegynder
17. maj 2002 - 14:45 #17
jeg skal bruge noget If else i forespørgslen, hvordan er syntaksen for det?
17. maj 2002 - 15:06 #18
iif("kriterie";hvisJa;HvisNej)
Avatar billede celal Nybegynder
17. maj 2002 - 15:56 #19
Hvis jeg skal lave dette her i forespørgslen, hvordan skal det så se ud?:

If Not KontraktIndex = 0 Then

    If slutDato > CDate(Dato1) And slutDato <> #12/31/9999# Then
        antalDage = DateDiff("d", CDate(Dato1), slutDato)
        Pris3 = Format((Val([SM13008]) * 12 * StandardIndex / KontraktIndex) * Val(antalDage) / 365, "###0.00")

    Else
        Pris3 = Format(Val([SM13008]) * 12 * StandardIndex / KontraktIndex, "###0.00")
    End If
Else
    Pris3 = Format(Val([SM13008]) * 12, "###0.00")
End If
Avatar billede celal Nybegynder
17. maj 2002 - 16:01 #20
Jeg har lavet dette her i forespørgslen:


IIf([SM11051]<>0;

  IIf([SM11016]>CDate([Dato1]) OR [SM11016]<>#12/31/9999#;
      Val(([Pris1]*12*[Index]/[SM11051])*[antalDage]/365));

  IIf([SM11016]<CDate([Dato1]) OR [SM11016]=#12/31/9999#;
      Val([Pris1]*12*[Index]/[SM11051]));

IIf([SM11051]=0; Val([Pris1]*12)))


Men jeg får en fejl der siger "Det indtastede udtryk indeholder en funktion  med et forkert antal argumenter"....Hvad er der galt med koden?
Avatar billede celal Nybegynder
17. maj 2002 - 16:04 #21
[SM11051] = KontraktIndex
[SM11016] = slutDato
17. maj 2002 - 16:09 #22
din sidste IIF mangler i hvert fald en Nej-del.

Der skal altid være 3 argumenter i IIF, når du bruger den i forespørgsler (i VBA kan du godt udelade den sidste)
Avatar billede celal Nybegynder
17. maj 2002 - 16:20 #23
men hvordan får jeg det så til at passe i overens med det jeg har skrevet i VBA?
Avatar billede celal Nybegynder
17. maj 2002 - 16:57 #24
Jeg bliver nød til at smutte, men jeg håber at du kan skrive koden i forespørgslen til mig, jeg kigger på det engang i løbet af weekenden
17. maj 2002 - 20:39 #25
Hvis din VBA-funktion virker, så vil jeg hellere foreslå dig at gøre, som jeg skrev tidligere.

Åbn et nyt modul og opret denne funktion:

Public Function Pris3 (StandardIndex as single, KontraktIndex as single, SlutDato as Date, SM13008) as Single
If Not KontraktIndex = 0 Then

    If slutDato > CDate(Dato1) And slutDato <> #12/31/9999# Then
        antalDage = DateDiff("d", CDate(Dato1), slutDato)
        Pris3 = Format((Val(SM13008) * 12 * StandardIndex / KontraktIndex) * Val(antalDage) / 365, "###0.00")

    Else
        Pris3 = Format(Val(SM13008) * 12 * StandardIndex / KontraktIndex, "###0.00")
    End If
Else
    Pris3 = Format(Val(SM13008) * 12, "###0.00")
End If
end function

I din forespørgsel laver du så denne nye kolonne, som f.eks. ser således ud:
Pris: Pris3(StandardIndex; [SM11051]; [SM11016]; [SM13008])


NB: Jeg ved ikke hvad du kalder StandardIndex i tabellen, så den skal lige tilpasses!
Avatar billede fynbohans Nybegynder
21. maj 2002 - 09:29 #26
Har du i stedet for Sum prøvet det simple [Pris2] = [Felt1] + [Felt2] .........
Avatar billede fynbohans Nybegynder
21. maj 2002 - 09:34 #27
Skulle være [TotaLPris2] = ....
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