Avatar billede Bjørn Mester
07. februar 2023 - 17:57 Der er 9 kommentarer og
1 løsning

Lave en beregnet standardværdi i tabel

Hej

Jeg har en tabel med et felt der hedder Fakturarabat.
Jeg vil gerne at dennes standardværdi er [Totalbeløb] *0,05 hvis [start] > 01-01-2023 og [betalingsmåde] = overført.
Jeg har prøvet med: iif([start] > #01-01-2023# and [betalingsmåde] = "overført"; [Totalbeløb] *0,05;0).
Gør jeg noget galt eller kan det ikke lade sig gøre?

Mvh.
Bjørn
Avatar billede Gustav Ekspert
07. februar 2023 - 18:10 #1
Beregnede felter i tabeller er en uskik og er stærkt begrænsede, som du kan se.
Brug en forespørgsel til sådanne beregninger.
Avatar billede Bjørn Mester
07. februar 2023 - 18:46 #2
Hej Gustav

Deri er vi enige, men problemet er at der nogen gange er fakrurarabat, andre gange ikke og heller ikke samme procentsats. Derfor skulle jeg bruge en beregnet standardværdi i Fakturarabatfeltet.

Mvh.
Bjørn
Avatar billede Jørgen Kirkegaard Professor
07. februar 2023 - 18:50 #3
Du skal netop dérfor bruge et query, som Gustav også anbefaler. Du argumenterer næsten selv for det :-).
Avatar billede Jørgen Kirkegaard Professor
07. februar 2023 - 18:50 #4
Hvad er problemet ved at bruge en query?
Avatar billede Bjørn Mester
07. februar 2023 - 19:01 #5
At feltet ligger i tabellen og kan ikke beregnes efter faste regler da.jeg nogen gange skal taste noget andet end standardværdien. Beløbet kan f.eks. være 10% i stedet for de beregnede 5%, kan også være 0% eller alle mulige andre tal. Altså skal STANDARDVÆRDIEN være 5%, men kan overskrives med andre satser.
Hvis det er før 01-01-2023 er standardværdien 0%.
Det med standardværdien gælder selvf. kun nye poster.
Avatar billede Bjørn Mester
07. februar 2023 - 19:05 #6
Det er IKKE et beregnet felt der ikke kan overskrives jeg vil have.
Det er Access forslag til en værdi jeg vil have til de førnævnte 5% hvis osv.
Avatar billede Jørgen Kirkegaard Professor
07. februar 2023 - 19:37 #7
Capiche. Det er ligetil i en form, hvor du så indsætter den ønskede værdi ved indgangen til en ny post. Formen skal nok være en tabel i dit tilfælde.
Avatar billede Gustav Ekspert
08. februar 2023 - 08:20 #8
Du blander noget sammen.

Standardværdien på et felt kan defineres, men bruges kun ved oprettelsen af en ny post, og en ny post ved ikke noget om betalingsmåde eller startdato.

Men i din formular kan du sætte rabatten bestemt af de felter efter opdatering af disse i deres respektive AfterUpdate event ved at lade dem kalde en lille sub, der beregner rabatten og justerer feltet:

Private Sub SetDiscount()

    Dim Discount    As Currency

    If Me!Start.Value > #01-01-2023# And Me!Betalingsmåde.Value = "overført" Then
        Discount = 0.05
    End If

    Me!Fakturarabat.Value = Discount

End Sub


Private Sub Betalingsmåde_AfterUpdate()
   
    SetDiscount

End Sub


Private Sub Start_AfterUpdate()
   
    SetDiscount

End Sub
Avatar billede Bjørn Mester
10. februar 2023 - 10:12 #9
Takker.

Jeg ser lige på det i weekenden.
Det arbejde tager for meget af min fritid. :-)

Mvh.
Bjørn
Avatar billede Bjørn Mester
14. februar 2023 - 18:36 #10
Hej Gustav

Det fungerer forrygende,
Efter jeg fik rettet din formel, altså. :-)
Endnu en gang tak.

Mvh.
Bjørn
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