13. november 2003 - 08:48Der 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.
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 "
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?
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.
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???
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
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
Synes godt om
Ny brugerNybegynder
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.