Avatar billede alessandro Nybegynder
20. oktober 2009 - 12:02 Der er 12 kommentarer og
1 løsning

Formular forespørgsler

I min formular har jeg et felt som hedder "kr"
og et felt som hedder "gj".

Derudover har jeg et felt (dropdown box) som hedder "vaerk".


Jeg kunne godt tænke mig at skrive en formel som gør, at hvis værdien i feltet "vaerk" = BWK så bliver værdien i gj feltet multipliceret med en værdi som jeg har stående i et felt som hedder "pris_gj" i tabellen "varmevaerk" hvor varmevaerk_navn er BWK.

Giver det mening? Kan det lades sig gør?
Avatar billede terry Ekspert
20. oktober 2009 - 12:43 #1
Just a guess

If Me.vaerk = "BWK" then
  me.gj = me.gj * me.pris_gj
End If


Not sure I understand "som jeg har stående i et felt som hedder "pris_gj" i tabellen "varmevaerk" hvor varmevaerk_navn er BWK."

does teh field pris_gj contain a value or does it have to be found in the table "varmevaerk"?
Avatar billede fdata Forsker
20. oktober 2009 - 20:07 #2
I din dropdowns EfterOpdatering/AfterUpdate hændelse lægger du:

If Me.Vaerk="BWK" then
  Me.kr = Me.gj * DLookUp("pris_gj","varmevaerk","varmevaerk_navn='BWK'")
End If
Avatar billede alessandro Nybegynder
21. oktober 2009 - 10:00 #3
Hej begge,

Terry - jeg har rettet lidt i tabelnavnene, men det ser ud således. Jeg har en tabel som hedder: "varmevaerker" under denne har jeg to felter: "navn" og "pris_gj".

Min kombinationsbox i formularen skal have fat i den værdi som står under "pris_gj", hvor navn= BWK i tabellen varmevaerker.

Så fdata, din løsning ser umiddelbart fornuftigt ud, men i feltet Kr kommer der til at stå 0 i formularen, når jeg vælger BWK i kombinationsboxen.

Jeg sidder lige og prøver mig lidt frem. I må gerne komme med forslag :)

På forhånd tak.
Avatar billede fdata Forsker
22. oktober 2009 - 10:54 #4
Så burde det vel spille med:

If Me.Vaerk="BWK" then
  Me.kr = Me.gj * DLookUp("pris_gj","varmevaerker","navn='BWK'")
End If

(er du sikker på at koden står i EfterOpdatering/AfterUpdate?)

NB: Pas på med at bruge feltnavnet "Navn". Det er et udokumenteret, reserveret ord. Hvis du f.eks. refererer til "Navn" i en rapport, kan Access returnere rapportens navn!?!
Avatar billede alessandro Nybegynder
22. oktober 2009 - 12:24 #5
Jo, er helt sikker på at det står i afterupdate, men der sker intet i formularfeltet "kr" og den melder ingen fejl!??!

Kan det have noget at gøre med at jeg har to kolonner i min kombinationsbox?? Den ene, med tal, har jeg skjult.

Underligt, jeg dobbelttjekker lige alt igen.
Avatar billede fdata Forsker
25. oktober 2009 - 14:03 #6
Ja da. I din dropdowns egenskaber har du specificeret hvilken kolonne, der indholder den værdi, som din dropdown skal tildeles. Hvis du her har udpeget den kolonne, som er skjult (altså tallet), er det naturligvis den, du skal måle på.
Hvis værket BWK f.eks. har nummer 3, skal udtrykket altså ændres til:
  If Me.Vaerk=3 Then ...
Avatar billede alessandro Nybegynder
30. oktober 2009 - 12:01 #7
sådan, det fungede.. takker for dit svar.
Lidt dumt af mig ikke at have nævt det med kolonnerne lidt før ;)
Avatar billede fdata Forsker
02. november 2009 - 18:09 #8
No problem. Bare vi når frem til målet.
Takker for point ;o)
Avatar billede alessandro Nybegynder
13. november 2009 - 10:31 #9
Lige en lille ting til fdata, når jeg er inde i min formular og udfylder den, så udfylder jeg den dropdown-box først, inden der kommer nogen værdi i det felt der hedder GJ. Når jeg så udfylder de andre felter og der kommer en værdi frem i GJ feltet, så sker der ikke noget i KR feltet, før jeg går tilbage og vælger noget i dropdown-boxen.

Hvis du forstår hvad jeg mener, hvordan gør jeg, så der med det samme kommer en værdi frem i KR feltet, sådan at jeg ikke behøver at gå tilbage i formularen og vælge en værdi i kombinationsboxen, før at værdien i KR kommer frem?

På forhånd tak
Avatar billede fdata Forsker
15. november 2009 - 10:26 #10
Så lægger du bare den samme kode i GJ feltets EfterOpdatering/AfterUpdate hændelse; men så kan det godt være, at du skal indbygge lidt "forsikring" i stil med:

If IsNull(Me.GJ) Or IsNull(Me.Værk) Then Exit Sub
If Me.Vaerk=3 then
  Me.kr = Me.gj * DLookUp("pris_gj","varmevaerker","navn='BWK'")
End If
Avatar billede alessandro Nybegynder
19. november 2009 - 12:53 #11
øv, det driller stadig, jeg skal gå tilbage og vælge BWK i kombinationsboxen før kr feltet bliver opdateret :( Det er lidt træls. Har du en anden plan? :) Kan det være at det er fordi jeg ikke selv taster noget ind i GJ feltet? Det bliver jo sådan set regnet ud fra en formel og popper frem når jeg har angivet noget i det felt som hedder "fugt" men på samme tid skulle den gerne poppe frem med beløbet i feltet "kr".. hmmm
Avatar billede fdata Forsker
19. november 2009 - 13:10 #12
EfterOpdatering/AfterUpdate bliver jo fyret af, når feltet opdateres. Hvis du slet ikke taster i feltet, ja så sker der naturligvis ikke noget.

Så må du flytte koden til et felt, som du rent faktisk ændrer, og det er vel så "fugt".

Nu ved jeg jo ikke, hvordan du får værdien i GJ til at "poppe frem", som du siger.
Hvis det er en beregning i feltets VBA kode, skal du selvfølgelig lægge ovenstående kode EFTER GJ's beregning.
Sker det via en forespørgsler, kan der jo komme sådan et lille hønen-og-ægget issue, for i så fald ved vi man jo ikke, om forespørgslen eller koden "kommer først i kapløbet".

Det kan være, at du skal anlægge en helt ny strategi og lægge beregningen direkte i KR's Kontrolelementkilde. Her ved jeg bare ikke nok til at give dig den færdige formel. Jeg ved kun, hvad der skal ske, hvis Vaerk er 3. Hvad skal feltet indeholde, hvis Vaerk er alt muligt andet?

I store træk vil Kontrolelementkilden skulle indeholde noget i stil med:
  =IIf(Me.Vaerk=3; gj * DLookUp("pris_gj";"varmevaerker";"navn='BWK'"); "Noget andet")

(bemærk, at IIf er med 2 I'er)
(... og så glemmer du i øvrigt al vores snak om VBA kode, nu står det hele direkte i feltet KR's kilde)
Avatar billede fdata Forsker
19. november 2009 - 13:11 #13
Ups. Var lidt hurtig med klippe/klistre. Det skal jo nok være:

  =IIf(Vaerk=3; gj * DLookUp("pris_gj";"varmevaerker";"navn='BWK'"); "Noget andet")
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