20. oktober 2009 - 12:02Der 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.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
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 :)
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!?!
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 ...
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?
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
ø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
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)
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.