Avatar billede peter_bille Nybegynder
15. februar 2004 - 11:56 Der er 11 kommentarer og
3 løsninger

Makroer, hjælp til selvhjælp

Jeg ønsker hjælp til at komme over de første hurdler mht. makroer. Jeg har lidt kendskab til vba under excel, men rykker ikke meget, når jeg gætter mig frem i access.

Det jeg søger er en guide, der kan hjælpe mig til en grundlæggende forståelse af opbygningen evt. med nogle kodeeksepler, som jeg kan tilpasse og selv implementere i egne databaser. Kodeeksempler alene, kan jeg ikke bruge endnu.
Avatar billede mugs Novice
15. februar 2004 - 12:00 #1
Når du har lavet en makro dr fungerer efter hensigten, kan du lade Access konvertere den til VBA i menuen:

Funkrioner > Makroer > Konverter til VBA.

Når du bruger dette, vil makroens Handlinger / Handlingsargumenter indsættes i en modul. Herefter kan du kopiere modulets VBa-saætning og indsætte på samme sted i din formular som makroen. Vælg hændelsesprocedüre i stedet for et makronavn.
Avatar billede mugs Novice
15. februar 2004 - 12:01 #2
På denne måde kan du selv lave sine kodeeksempler. Bagefter kan du sammenligne VBA-søtningen med din makro og se, hvor og hvordan handlingsargumenterne skal indsætttes.
Avatar billede jkrons Professor
15. februar 2004 - 12:02 #3
Prøv evt. at se på bøgerne

Introduktion til applikationsudvikling med Access 2000, Morten Ditmer (Ingeniøren)
Access 2000 programmering med VBA, Paul Kimmel (IDG)

Begge kan lånes på biblioteker, eller købes vis internettet.
Avatar billede peter_bille Nybegynder
15. februar 2004 - 12:16 #4
Tak mugs, men jeg er stadig ikke med. Lad mig tage et eksempel. Jeg har en kodestump "Ask before saving record" fra mvps.org:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strMsg As String
    strMsg = "Data has changed."
    strMsg = strMsg & "@Do you wish to save the changes?"
    strMsg = strMsg & "@Click Yes to Save or No to Discard changes."
    If MsgBox(strMsg, vbQuestion + vbYesNo, "Save Record?") = vbYes Then
        'do nothing
    Else
        DoCmd.RunCommand acCmdUndo
       
        'For Access 95, use DoMenuItem instead
        'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
    End If
End Sub

Hvordan implementerer jeg denne i en formular?
Avatar billede jkrons Professor
15. februar 2004 - 12:19 #5
Du koperer alt mellem Private og End Sub

Åbn din formular i designvisning. Højreklik på firkanten i formularens øverste venstre hjørne og vælg Egenskaber.  Vælg fanebladet Hændelser. Find hændelse beforeUpdate (Før opdatering). Klik på de tre små priokker til højre for linjen.
Vælg Kodegenerator. Indstæt din kode mellem de to linier, der nu ses i editoren.
Luk editor og egenskabsvindue. Afprøv din formular.
Avatar billede jkrons Professor
15. februar 2004 - 12:20 #6
Undskyld: Kopier alt mellem linierne med Private sub... og End sub.
Avatar billede mugs Novice
15. februar 2004 - 12:23 #7
Her ser du hvor og hvornår koden skal indsættes:

Private Sub Form_BeforeUpdate(Cancel As Integer)

Nemlig i selve formularen i dennes BeforeUpdate.

Åbn din formular i designvisning. Højreklik et sted på formularen (Ikke Detaljesektionen, formularhoved eller fod) > Egenskaber > Kodegenerator. Du er nu inde i selve VBA-editoren. Øverst til venstre ser du en kombinationsboks med de kontroller der findes i formularen. Her vælger du i hvilket kontrolelement du vil indsaææte koden. Til højre vælger du hvornår koden skal eksekveres:

- BeForeUpdate 
- AfterUpdate

o.s.v.

Når du har indsat koden lukker du VBa-editoren og prøver at afspille koden.
Avatar billede mugs Novice
15. februar 2004 - 12:24 #8
Korretk som jkrons skriver. Den første linie Private Sub.. og den sidste skal ikke med.
Disse 2 linier kaldes Procedürekroppen, og al koden skal skrives indenfor disse 2 linier.
Avatar billede peter_bille Nybegynder
15. februar 2004 - 12:35 #9
Herligt, det sparker mig lidt videre. Tak for hurtige svar begge to. Jeg fordeler fluks jeres point. mugs, i dit første svar, skriver du at jeg laver en makro, der fungerer. Gør jeg dette med makrogeneratoren?
Avatar billede mugs Novice
15. februar 2004 - 12:39 #10
Hvis du fra formularen benytter makrogeneratoren, vil makroen automatisk blive indsat i din formular og afspilles, når en bestemt betingelse er opfyldt. Det kan du sagtens gøre. Men jeg forstod dit oprindelige spørgsmål sådan, at du gerne ville se en guide og sammenligne en makro med den tilsvarende VBA-sætning.

Det gør du nemmest ved;

at du åbner db i databasevinduet > Fanen Makroer > Ny.

Og derefter som beskrevet lade Access "oversætte" makroen til VBA.
Avatar billede mugs Novice
15. februar 2004 - 14:38 #11
peter bille > Jeg kan sende dig 13 Word-lektioner om det grundlæggende i at opbygge en Access database samt den færdige database.

Lektionerne er med skærmdumps fra Access97, men de fleste har lavet den i Access 2000. Hvis du vil have materialet skal jeg bruge ca 5 Mb plads i din indbakke.

Blot læg din e-mail.
Avatar billede peter_bille Nybegynder
15. februar 2004 - 14:49 #12
Fedt! Min mail er pekr99ab@student.cbs.dk og der burde være plads. TAK!
Avatar billede mugs Novice
15. februar 2004 - 15:05 #13
Sendt.
Avatar billede peter_bille Nybegynder
15. februar 2004 - 15:25 #14
Tak igen :)
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