Avatar billede jenslassen Praktikant
15. februar 2012 - 11:42 Der er 6 kommentarer og
1 løsning

Beregning med og uden moms

Jeg arbejder i access 2007
Jeg har 2 tabeller, en hvor jeg har mit produktregister i og en hvor jeg har mit regnskab i.
I produktregister tabellen, har jeg et afkrydsningsfelt der hedder "med moms", hvis felter er sand skal der regnes moms, hvis felter er falsk skal der ikke afregnes moms
I tabel regnskab har jeg 3 felter "indtægt med moms", "indtægt uden moms" og "moms"
Den fælles reference er "varenummer".
Jeg skal have det sådan i min formular, at når jeg indtaster et beløb i feltet "indtægt med moms", skal den kigge på produktregister tabellen "med moms" hvis sand, skal den beregne moms af beløbet og gemme i tabellen regnskab felt "moms", samt gemme forskellen mellem "indtægt med moms" og "moms" i feltet "indtægt uden moms"
Hvis det er falsk, skal den skrive 0,00 i feltet "moms" og skrive beløbet der står i "indtægt med moms" i feltet "indtægt uden moms" 
Jeg har forsøgt mig med en IIF sætning, men kan ikke få det til at virke
Avatar billede fdata Forsker
15. februar 2012 - 12:09 #1
I AfterUpdate hændelsen til feltet [Indtægt med moms] lægger du noget i stil med:

IIf DlookUp("Med moms","Produktregister","Varenummer='" & Me.Varenummer & "'")=True Then
  Me.Moms=Me.[Indtægt med moms] * 20%
  Me.[Indtægt uden moms]=Me.[Indtægt med moms]-Me.Moms
Else
  Me.Moms=0
  Me.[Indtægt uden moms]=Me.[Indtægt med moms]
End If
Avatar billede jenslassen Praktikant
17. februar 2012 - 16:37 #2
Der er noget galt med den første linie.
Jeg får en fejl Compile error:
Expected: end of statement

Hvad er fejlen ?
Avatar billede fdata Forsker
19. februar 2012 - 18:52 #3
Hm. Jeg skød fra hoften - og tilsyneladende lidt for hurtigt. Sorry.

I første linie har tastaturet smidt et ekstra i ind i ordet If.
De 20% skal nok skrives som 0.20

Derudover gætter jeg på at du måske får lidt problemer med dine feltnavne pga. mellemrummene. Brug underscore i stedet for, altså "Med_Moms" i stedet for "Med moms" osv.
Avatar billede jenslassen Praktikant
22. februar 2012 - 15:25 #4
Hm. det virkede at få fjernet et I, også rette lidt på tabelnavne.

Men jeg for et forsat en fejl" datatype stemmer ikke overens i kriterier udtrykket@ for første linie error code 3464
If DlookUp("Med moms","Produktregister","Varenummer='" & Me.Varenummer & "'")=True Then

Med moms er ja/nej felt
Produktregister er tabelnavn
Varenummer er i begge tilfælde tal, langt heltal

Hvad gør jeg forkert, har kigget lidt på nette og der virker som om der skal nogele andre klammer eller tegn til for at det virker
Kan bare ikke få det til at virke
Avatar billede anlu Nybegynder
22. februar 2012 - 16:11 #5
Når varenummer er et heltal, så skal du ikke have anførselstegn omkring i betingelsen:
If DlookUp("Med moms","Produktregister","Varenummer=" & Me.Varenummer)=True Then
Avatar billede jenslassen Praktikant
22. februar 2012 - 20:21 #6
Tak for hjælpen

Det lykkes at få det til at virke, mange ting man skal have styr på,

Jeg har lagt den kode ind som jeg fik til at virke

If DLookup("Med_moms", "Produktregister", "[Varenummer]=" & Me.Varenummer) = True Then
  Me.Moms = 0
  Me.[Indtægt_uden_moms] = Me.[Indtægt]
Else
  Me.Moms = Me.Indtægt * 0.2
  Me.[Indtægt_uden_moms] = Me.[Indtægt] - Me.Moms
End If
Avatar billede fdata Forsker
22. februar 2012 - 21:59 #7
Takker for point ;O)

... og tak til anlu, som i mit fravær gav dig det sidste lille puf
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