Avatar billede hjk30 Nybegynder
13. september 2001 - 12:46 Der er 7 kommentarer og
3 løsninger

Access og VBA

Jeg er ny inden for Access, så dette lille problem skulle være nemt.
Jeg har en tabel, hvor jeg har lavet en rapport, der trækker nogle tal. Tallene laver jeg nogle beregninger på i selve rapporten (Sum).
Jeg vil gerne lave nogle flere beregninger, blot i VBA, men jeg kan ikke få værdierne fra tabellen/rapporten over i VBA.
Hvordan får jeg et felt fra en tabel, over i VBA - koden.
Avatar billede powell Nybegynder
13. september 2001 - 13:08 #1
Du kan måske gøre sådan her:

Set db = CurrentDb()
Set rs_Telefonliste = db.OpenRecordset(\"tblTelefonliste\", dbOpenTable)

\'Nulstiller tabel
rs_Telefonliste.MoveFirst

If rs_Telefonliste!tblId_Intern <> 0 Then Get_Name

Tabellen hedder tblTelefonliste
Og den kollone jeg er i hedder tblId_Intern
Avatar billede mugs Novice
13. september 2001 - 15:21 #2
Jeg har læst dit spgm. mange gange idag, men jeg forstår det ikke helt:

\"Hvordan får jeg et felt fra en tabel, over i VBA-koden\"

Jamen du skriver blot feltets navn i kode-vinduet som f.eks:

If FELTNAVN = \"A\" Then
gør noget
End If
Avatar billede fdata Forsker
13. september 2001 - 17:31 #3
En metode er at indsætte feltet på normal vis på rapporten (og evt. gøre det usynligt).
Herefter kan du i VBA referere til feltet med et foranstillet Me, f.eks. Me.Salgspris.

Avatar billede hjk30 Nybegynder
14. september 2001 - 07:45 #4
Hej
Ingen af jeres forslag virker!!! Jeg prøver at forklare lidt nærmere.

Jeg har et tidsopsamlingssystem, der gemmer alle komme-,gå tider i en tabel der hedder DinTimeEvents. I tabellen er der en kolonne der hedder Work. (= tiden i minutter).

Jeg har lavet en rapport, der ud fra brugernummeret samler alle tiderne (Work), hvor efter jeg lægger alle tiderne sammen =Sum([Work]).
Det jeg skal have programmeret ind, er en beregning af eventuel overtid.

if work > 420 then
sub1 = work - 420
overtid = sub1 * 2
tidialt = overtid + work

Mit problem er, at jeg får ikke værdien Work med over i koden.
Avatar billede mugs Novice
14. september 2001 - 08:11 #5
I ovenævnte skriver du work med lille w, og andre steder skriver du med stort W. Er det blot en fejl i din kommentar?
Avatar billede hjk30 Nybegynder
14. september 2001 - 08:22 #6
Ja, det er en fejl i kommentaren.
Avatar billede powell Nybegynder
14. september 2001 - 08:23 #7
Din beregning blier først beregnet i øjeblikket, hvis jeg var dig ville jeg lave alle beregningerne enten i access eller i VBA.
Avatar billede mugs Novice
14. september 2001 - 10:56 #8
Jeg er enig med powell: Du bør lave et felt i tabellen der f.eks hedder \"overtid\", og derefter trække det ind i forespørgslen og formularen. din If.. Then kode sætter du ind i feltet \"Work\" i AfterUpdate event. Feltet \"overtid\" vil så blive beregnet og udfyldt, hver gang du ændrer \"Work\".

Du kan så lave en opsummering i din rapport på samme måde som \"Work\".

Data for overtid \"tilhører\" den enkelte post i tabellen, og bør beregnes i posten. Hvis du ikke vil se feltet \"overtid\" i din formular, skal du blot sætte egenskaben synlig i feltets formateringsfane til Nej.
Avatar billede fdata Forsker
16. september 2001 - 21:28 #9
Jeg går ud fra, at du summerer i en gruppefod. Her nytter det ikke at referere til Work. Du skal referere til det felt, som summen er beregnet i. Altså: if SumWork > 420 ....

Avatar billede hjk30 Nybegynder
17. september 2001 - 09:18 #10
Jeg prøver, hvad i har foreslået.
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