Avatar billede gp Nybegynder
21. oktober 2004 - 21:09 Der er 10 kommentarer og
1 løsning

DLookup formel

Jeg har tre tabeller:

Tabel 1 / tblVare
VareID Navn Pris

Tabel 2/ tblFormler
VareID Varegruppe Formel

Tabel 3 / tblVareforbrug
VareIG Varegruppe Forbrug Pris

I tabel 3 skal jeg beregne forbruget hvis der er Indtastet en formel i Tabel 2 [Formel] hvis værdierne i formelen bliver ænderet skal tabel 3 opdaterer selv.

Jeg er kørt helt fast. HJÆLP Hvis jeg bruger Dlookup tager den formlen fra den post jeg står i på min subform og ikke looper igemmen tabellen.
21. oktober 2004 - 21:16 #1
Du er nødt til at styre det fra en formular (du kan ikke lægge hændelser/triggers på tabeller i Access).

Så hvis du har en tabel, hvor brugeren taster data ind i tblFormler, så kan du lægge kode på formularens EfterOpdatering--hændelse:

Dim SQLStr as String
SQLStr = "Update tblVareforbrug Set Forbrug = " & Me!Formel & " Where VareID = " & Me!VareID & " And Varegruppe = '" & Me!varegruppe & "'"
Docmd.Setwarnings False
Docmd.RunSQL SQLStr
Docmd.Setwarnings True


Metoden forudsætter, at feltet Formel blot skal skrives direkte i feltet Forbrug. Dette er nok ikke tilfældet, men så er det ret let at ændre.
Endvidere forudsættes, at posten findes i tblVareforbrug i forvejen.
Endelige forudsættes at Varegruppe er tekst og VareID er nummerisk.

/Thomas
Avatar billede gp Nybegynder
21. oktober 2004 - 21:28 #2
Jeg har en formular hvor mine værdier indtastes, i formularen har jeg to sub forms sub1 og sub2. I sub2 ligger min vareforbrugsliste "tblVareforbrug" og det er denne liste hvor jeg vil beregne forbruget, når værdierne ænderes på min main formular.
Avatar billede gp Nybegynder
21. oktober 2004 - 21:38 #3
Jeg har til passer den til min db:

Public Function FormelBeregning()

Dim SQLStr As String
SQLStr = "Update tblVareforbrug Set Forbrug = " & Forms![frmHusData]![Customers By Country].Form![subItems].Form![Formel] & " Where ID = " & Forms![frmHusData]![Customers By Country].Form![subItems].Form!ID & " And Varegrupper = '" & Forms![frmHusData]![Customers By Country].Form![subItems].Form!VareGrupper & "'"
DoCmd.SetWarnings False
DoCmd.RunSQL SQLStr
DoCmd.SetWarnings True

End Function

Det virker ikke...
21. oktober 2004 - 21:39 #4
Vil det sige, at din hovedformular indeholder tblFormler? (du skriver: "beregne forbruget, når værdierne ænderes på min main formular")

Hvormange poster ser du i sub2? Og hvordan ved du hvilken af dem, der skal opdateres?
Avatar billede gp Nybegynder
21. oktober 2004 - 21:47 #5
Min main formular hedder frmHusData og indholder de værdier, jeg beregner efter, dem har jeg sat til Public A, B, C, D As Double.

Jeg bruger en knap i øjeblikker til at køre functionen.

Jeg har kun to poster til test i øjeblikket en med en formel værdi i [formel] og en uden, ideen er; at der hvor der ikke er formel værdi tastet ind, skal jeg selv taste forbruget.
21. oktober 2004 - 22:15 #6
hmm...jeg har lidt svært ved at sætte mig ind i problemstillingen.

Har du mulighed for at sende db'en til mig?

Du finder min mailadresse ved at klikke på mit navn.

Jeg er dog pt på vej til at se film med familien, så det bliver nok først i morgen tidlig, at jeg får kigget på det.
Avatar billede pallero Nybegynder
02. november 2004 - 15:33 #7
SÅdan somjeg forstår dit spørgsmål vil du beregne en Total pris, på baggrund af Forbrug(antal?) * (Pris * Formel).
Pris er vel et Tal/Valuta felt
Formel er vel et Tal, evt. med betydningen af Procent der skal lægges til?

Hvis det er korrekt vil jeg mene du kan klare dig med DlookUp.

Noget lignende dette... der mangler selvfølgelig en del...

Dim aktuelFormel as Long
Dim totalPris as Long

aktuelFormel = DlookUp("Formel","tblFormler"," & Me.VareID & ")

totalPris = (Me.Pris * aktuelformel) * Me.Forbrug

..så skal prisen lige opdateres på den rigitge post...
Palle
Avatar billede gp Nybegynder
02. november 2004 - 22:06 #8
Værdien af min formel er lig med me.forbrug. Så hvis

aktuelFormel = DlookUp("Formel","tblFormler"," & Me.VareID & ")

giver aktuelFormel =(A+B) og A = 10 og B = 20

så er værdien af aktuelFormel = 30 og me.forbrug = 30

Jeg håber du forstår det...
Avatar billede pallero Nybegynder
03. november 2004 - 15:46 #9
jeg er nok ikke helt med for jeg kan ikke helt gennemskue strukturen.

Du vil beregne forbruget hvis der er en formel tilknyttet Varen
altså noget med ... Forbrug = (Formel * ?) Hvad er de andre kriterier?

Er det sådan at der kun er 1 post for hvert VareID i tblVareforbrug,
hvor forbruget så efterhånden vokser på?

Den Pris du har i tblVareforbrug, er det den samme som tblVare.Pris,
eller er den beregnet ud fra Forbrug * tblVare.Pris

Og hvis det kan hjælpe så....
DlookUp finder altid den FØRSTE forekomst af et kriterie(VareID),
og returnerer værdien i Udtrykket(Formel). Det vil sige at der kun må være én forekomst af VareID i tblFormler. Du kan ikke 'loope' gennem tabellen med DlookUp.
Avatar billede gp Nybegynder
03. november 2004 - 17:51 #10
Jeg skal bruge db til at udregne forbruget at eks. gipsplader og andre byggematerialer, udfra længde og højde.

Det jeg forstiller mig at er:
At jeg skal 'loope' mig igennem min subfrom og hvergang jeg kommer til et post har jeg min formel tilknyttet posten eller at formlen allerede findes sammen med posten.

Jeg kan sende dig en test db, hvis det har interesse.
Vare ID er unik.

GP;)
Avatar billede gp Nybegynder
22. februar 2005 - 10:44 #11
Jeg lukker
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