Avatar billede ndh Nybegynder
13. november 2003 - 08:48 Der er 13 kommentarer og
1 løsning

Gentagelse af værdi fra forrige record

Jeg har opbygget en tabel i Access 2000 og hertil en formular, der anvendes til indtasning. Hvordan får jeg Access til at foreslå den sidst indtastede værdi fra den forrige record i dette felt.
Avatar billede mugs Novice
13. november 2003 - 09:23 #1
Dim rs As DAO.Recordset
If Me.NewRecord Then
Set rs = Me.RecordsetClone
re.MoveLast
Me!FELTNAVN.DefaultValue = "'" & rs!FELTNAVN & "'"
rs.Close
End If

Kræver reference til DAO i Tools > References. Indsættes i Formularens Current event
Avatar billede ndh Nybegynder
13. november 2003 - 09:34 #2
Mugs prøv at uddybe. Jeg er ikke vant til at programere i Access
Avatar billede mugs Novice
13. november 2003 - 09:46 #3
Du åbner formularen i designvisning > Klik et udenfor formularen > Tryk på Tryllestaven på menulinien (Ikke tryllestaven i værktøjskassen) > Kodegenerator > Du kommer nu ind i VBA-Editoren. Øverst til venstre kan du se hvilket Objekt du står i (Formularens navn). Øverst til højre ser du "hvornår" du programmerer. Det kan være BeforeUpdate, AfterUpdate o.s.v. Rul op aller ned i listen, til du finder Currentog klik. Det betyder, at du er i færd med at indsætte en kode i formularen når den opnår status Current. Current opstår hver gang formularen åbnes og viser en post, samt hver gang du skifter post.

Her indsætter du koden. Den første linie (Dim rs As DAO.Recordset), kræver at db har en reference til DAO biblioteket. Øverst i VBA-Editoren Har du ounktet "Tools". Rul ned til References og rul ned igennemdine biblioteker og find hvor der står "Microsoft DAO og så noget mere". Bare det står DAO. Sørg for at der er et checkmærke udfor DAO i venstre side.

I linien Me!FELTNAVN.DefaultValue = "'" & rs!FELTNAVN & "'", ufskifter du ordet FELTNAVN med navnet på det felt der skal indeholde din standardværdi.

Hvis du vil have standardværdi i flere felter. indsætter du bare koden een gang til undeen den første, idet du undlader "Dim rs As DAO.Recordset
"

Håber det bragte lidt lys over land
Avatar billede ndh Nybegynder
13. november 2003 - 10:30 #4
I koden Private Sub Form_Current(). Skal formularens navn stå i parantesen. Hvis jeg ikke indsætter den her får jeg fejlen Compile Error can´t find project or library.
Hvis jeg indsætter formularens navn får jeg en Access fejl der hedder: Udtrykket vedindlæsning, du indtastede som indstilling af hændeldelsesegenskabet gav en fejl??

Der er forøvrigt også tre MS DAO referencer jeg kan vælge, hvilken skal jeg tage?
Avatar billede mugs Novice
13. november 2003 - 10:57 #5
Formularens navn behøver ikke at stå i parantesen.

Compile Error can´t find project or library > Du mangler en reference. Prøv at vælge alle 3 referencer til DAO.
13. november 2003 - 11:17 #6
Mugs-> Jeg synes den kodestump ser bekendt ud :o)
Avatar billede ndh Nybegynder
13. november 2003 - 11:44 #7
Mugs.

Hvis jeg vælger mere end en af referencerne får jeg en navnekonflikt!
Avatar billede mugs Novice
13. november 2003 - 11:48 #8
thomas -> Ja - Det skal da ikke undre mig. Jeg har sikkert brugt adskillige, der er specielt dig bekendte. Jeg har et par brugere at takke for, at jeg lærer mere end jeg lærer fra mig.

ndh -> Er det så ikke fordi de er ens? Så blot vælg en af dem.
Avatar billede ndh Nybegynder
13. november 2003 - 11:52 #9
Jeg har nu valgt en af dem men får stadig fejlen compile error.
Hele koden ser således ud:

Private Sub Form_Current()
Dim rs As DAO.Recordset
If Me.NewRecord Then
Set rs = Me.RecordsetClone
re.MoveLast
Me!titel.DefaultValue = "'" & rs!titel & "'"
rs.Close
End If
End Sub

Jeg har indsat titel som feltnavnet.
Koden:
Private Sub Form_Current() farves gul, som om der er noget galt med denne syntaks???
Avatar billede mugs Novice
13. november 2003 - 12:31 #10
re.MoveLast -> rs.MoveLast
Avatar billede ndh Nybegynder
13. november 2003 - 12:47 #11
Det virker!!
Avatar billede mugs Novice
13. november 2003 - 13:28 #12
Ved at "stjæle" lidt af Thomas kode og ved fælles hjælp plejer det at fungere. Tak for point :o)
Avatar billede ndh Nybegynder
13. november 2003 - 14:47 #13
MUGS-Hvordan er det jeg bruger koden i forbindelse med flere felter. Vil du ikke lige give mig et eksempel med min kode:

Private Sub Form_Current()
Dim rs As DAO.Recordset
If Me.NewRecord Then
Set rs = Me.RecordsetClone
rs.MoveLast
Me!titel.DefaultValue = "'" & rs!titel & "'"
rs.Close
End If
End Sub
Avatar billede mugs Novice
13. november 2003 - 16:27 #14
Definitionen på rs, og betringelsen If.... behøver du ikke at gentage. Ligeledes heller ikke Set rs... og Movelast. Det er jo gjort een gang for alle. Efter dine definitioner samt Movelast kopierer du blot sætningen der tildeler standardværdien og udskifter feltnavnet. rs.close samt slut på betingelsen skal også kun skrives een gang:


Private Sub Form_Current()
Dim rs As DAO.Recordset
If Me.NewRecord Then
Set rs = Me.RecordsetClone
rs.MoveLast
Me!titel.DefaultValue = "'" & rs!titel & "'"
Me!felt1.DefaultValue = "'" & rs!felt1 & "'"
Me!felt2.DefaultValue = "'" & rs!felt2 & "'"
rs.Close
End If
End Sub
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