Avatar billede hnto Nybegynder
28. februar 2003 - 15:41 Der er 26 kommentarer og
1 løsning

Lille VBA ting Haster venligst

Jeg har en form med nogle textfelter. Da det er er "fortløbende form" ændrer det enkelte elements værdi fra ID til ID.

Det jeg ønsker er at angive værdien i en text100 ud fra en værdi i text1 hvor ID er 1. osv.

Jeg havde forestillet mig noget i stil med dette :

Text100.Value = text1.Value where ID="1"
Text101.Value = text1.Value where ID="2"

( dette virker bare ikke fordi jeg ikke kan sætte en WHERE ind hvor jeg gør dette )

HJÆLP....
Avatar billede somaliomar Praktikant
28. februar 2003 - 15:48 #1
Jeg ved ikke helt, hvad det er du vil! Prøv evt. det her:

If Text100.Value = "ID=""1"""
  text1.Value = "ID=""1"""
ElseIf Text101.Value  = "ID=""2"""
  text1.Value = "ID=""1"""
End IF

Det vil hjælpe en hel del, hvis du viser hele din kode og samtidig giver et eksempel på hvad det er du vil...
Avatar billede mortrr Praktikant
28. februar 2003 - 16:01 #2
Du kan referere til dine textfelter med Controls("Text100")
Eller fx Control("Text" & i).Value=i

- Morten
Avatar billede hnto Nybegynder
28. februar 2003 - 16:02 #3
Jeg har ingen kode endnu andet end en form open.
Et simpelt eks. kunne være.

tabel 1 indeholder
ID  TAL
1    100
2    200
3    300

så laves en form 1 hvor denne baseres på tabel 1, men formen er en 'continious form' det vil sige at der nu kun vises 1 felt per record der vælges i recordselectoren. Dette kalder vi text100.

Jeg ønsker nu at lave 3 stk unbound felter i formen, hvor det første felt (text500) er værdien af text100 hvor ID = "1"

det næste kunne hedde

(text501) er værdien af text100 hvor ID = "2"

Osv.

(text502) er værdien af text100 hvor ID = "3"
Avatar billede somaliomar Praktikant
28. februar 2003 - 16:16 #4
Måske kan du bruge DLookup-funktionen sådan her

  Text500 = DLookup("TAL", "[Tabel 1]", "ID = 1")
  Text501 = DLookup("TAL", "[Tabel 1]", "ID = 2")
  Text502 = DLookup("TAL", "[Tabel 1]", "ID = 3")
Avatar billede mortrr Praktikant
28. februar 2003 - 16:17 #5
Du kunne sætte Control Source:
=DLookUp("TAL";"tabel 1";"ID=1")

Men er du sikker på at det er det du vil?
Det giver ikke meget mening.

- Morten
Avatar billede hnto Nybegynder
28. februar 2003 - 16:21 #6
Shit... Jeg bliver vist nødsaget til t give jer hver 30 point, MEN...
Jeg er en TÅBE idet feltet ikke kommer fra en tabel med er et beregnet felt direkte i formen der ændrer værdi fra ID til ID

Hvordan kommer vi videre med dette når jeg nu er sådan en NAR.
Avatar billede mortrr Praktikant
28. februar 2003 - 16:27 #7
Så skal du jo bare forklare lidt bedre hvad du er ude efter. ;-)

- Morten
Avatar billede somaliomar Praktikant
28. februar 2003 - 16:28 #8
hnto >> Hvorfor er nødsaget til at dele points, når dit problem ikke er løst endnu? Hvordan bliver felterne beregnet?
Avatar billede mortrr Praktikant
28. februar 2003 - 16:30 #9
Eller er du ude efter at de tre felter skal udfyldes alt efter hvilken ID du er på?
Altså:
Hvis ID=1, skal text501 udfyldes
Hvis ID=2, skal text502 udfyldes
osv

- Morten
Avatar billede hnto Nybegynder
28. februar 2003 - 16:34 #10
det drejer sig om et et budget skema. i en tabel er der lagret de relevante poster samt måneder. Da access ikke som excel kan lave en sum i et nyt felt  længst ude til højre har jeg lavet et felt direkte i formen der er summen af jan, feb....dec for hver record.

Nu har jeg så på min continoues form en sum for hver record horisontalt, men man vil jo gerne vide hvad det samlede budget er hvorfor dette beregnede felt nu skal summeres vertikalt for hver record via en ny text element.

Jeg ville egentlig lave et element for hver record, hvorfor jeg angav en ID som WHERE clausul.

Er dette bedre at forstå. ( burde måske have skrevet det sådan fra starten)
Avatar billede mortrr Praktikant
28. februar 2003 - 16:38 #11
Hvad med:
Control Source
=DSum("TAL";"tabel 1";"ID<=" & [ID])

- Morten
Avatar billede somaliomar Praktikant
28. februar 2003 - 16:42 #12
Så vidt jeg har forstået, har du en tabel der ligner det her

ID  Jan  Feb  Mar
1    20    30    10
2    50    30    20
3    10    10    10
4    30    30    20

Det, du vil have er at lægge tallene sammen på et nyt felt i din formular sådan her:

ID  Jan  Feb  Mar    Sum
1    20    30    10    60
2    50    30    20    100
3    10    10    10    30
4    30    30    20    80

Har jeg forstået rigtigt?
Avatar billede hnto Nybegynder
28. februar 2003 - 16:43 #13
Morten.
Jeg er ikke med på din løsning da jeg synes at se at denne baseres på tabellen.

Hvorfor dette da den værdi der ønskes summeret ikke er en del af denne tabel, men et beregnet textelement i formen. ?
Eller ser jeg noget galt.?
Avatar billede hnto Nybegynder
28. februar 2003 - 16:45 #14
somaliomar:

Yes det er korrekt. Dit SUM felt beregner nemlig nu værdierne horisontalt for hver record.

Din løsning er også hvor jeg nu er nået til. Det der mangler et at SUM også bliver lagt sammen vertikalt så jeg får et felt med værdien 270
Avatar billede somaliomar Praktikant
28. februar 2003 - 16:47 #15
Så laver du et nyt unbound textbox i din formular og giver tekstboksen værdien

  =[Jan]+[Feb]+[Mar]
Avatar billede mortrr Praktikant
28. februar 2003 - 16:49 #16
Du er nødt til at summere op fra tabellen, da du ikke kan summere op fra de forskellige records på formularen (i det mindste ikke på en fornuftig måde).
Så du er altså nødt til at lave sammentællingen igen udfra de data der ligger i tabellen.

Hvis du vil summere flere tal fra samme record (jan, feb, mar...), så skriver du det ind i din dsum funktion.
=DSum("[Jan]+[Feb]+[Mar]...";"tabel 1";"ID<=" & [ID])

- Morten
Avatar billede somaliomar Praktikant
28. februar 2003 - 16:49 #17
Ups... Læste forkert. Hvor vil du have et felt med værdien 270?
Avatar billede hnto Nybegynder
28. februar 2003 - 16:50 #18
Ikke forstået... det er jo det der sker i feltet SUM ?!?
Avatar billede mortrr Praktikant
28. februar 2003 - 16:54 #19
Ja, men feltet sum eksisterer kun i formularen, og du kan ikke sammentælle på tværs af records i tabellen på en formular, kun på en rapport.

- Morten
Avatar billede hnto Nybegynder
28. februar 2003 - 16:56 #20
Shi... okay... sidste ting

Er der forslag til alternative måder at opbygge et budget skema i access på ( skal være access af andre hensyn )
Avatar billede hnto Nybegynder
28. februar 2003 - 16:57 #21
somaliomar:

Inde i formen
Avatar billede somaliomar Praktikant
28. februar 2003 - 17:00 #22
Prøv at oprette en textbox nederst i din formularfod med værdien

  =Sum([Jan])+Sum([Feb])++Sum([Mar])
Avatar billede somaliomar Praktikant
28. februar 2003 - 17:01 #23
Hovsa... Det skal være sådan her

  =Sum([Jan])+Sum([Feb])+Sum([Mar])
Avatar billede hnto Nybegynder
28. februar 2003 - 17:19 #24
;-))))))))))))))))))))))

Sådan ... takker
Avatar billede somaliomar Praktikant
28. februar 2003 - 17:33 #25
hnto >> Jeg takker for points. Jeg synes, at Morten er blevet snydt for points.

mortrr >> Jeg synes, at du også skal have nogle points. Skal vi dele de 60 points? Jeg kan hurtigt oprette et spm... :)
Avatar billede mortrr Praktikant
01. marts 2003 - 12:59 #26
Nej - det er helt fint.
Jeg troede jo at han var ude efter en akkumuleret sum, og ikke en total-sum.

- Morten
Avatar billede somaliomar Praktikant
01. marts 2003 - 13:15 #27
OK :)
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