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

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