19. maj 2004 - 13:14Der er
20 kommentarer og 1 løsning
Samme værdi i felt som i forrige post i formularen
I et tidsregistreringssystem bliver man ved åbning af indberetningsformularen bedt om at angive sit sekretærnumer i en boks. Derefter åbnes formularen med den pågældende sekretærs indberetninger for de sidste 2 måneder, vist som en fortløbende formular. Da man jo (næsten)altid indberetter på ens eget sekretærnummer, er det altid samme sekretærnummer som på forrige post i formularen. Er der mulighed for at gentage sætte feltet "sekrnr" fra forrige post i formularen som standardværdi ved oprettelse af nye poster? denne vil så i sjældne tilfælde skulle rette. Jeg er opmærksom på funktionen "Last", men denne kan vist kun anvendes på tabelniveau, dvs. at den tager den sidste post i tabellen, hvor det jo ofte vil være ens kollega, der har lagt posten ind
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Private Sub Form_Current() Dim rs As DAO.Recordset If Me.NewRecord Then Set rs = Me.RecordsetClone rs.MoveLast Me!felt1.DefaultValue = "'" & rs!felt1 & "'" rs.Close End If End Sub
An idea would to have a global variable which you use to save the sekretærnumer which you logged on with. Then in the forms (fortløbende form) before Insert event you set the sekretærnumer to the value in the global variable.
Hej thomasJepsen! Det virker fint når formularen kører, men ved åbning af formularen går det galt, hvis det ikke er mig der har lavet den sidste indberetning til tidsregistreringstabellen - så er det vedkommendes sekretærnummer der står i feltet. Det er samme problemstilling som når hændelsen sættes som standardværdi på feltet.
Hej terry ! Jeg har brugt Mugs løsning, men din virker også spændende, da det faktisk ofte er således, at man har brug for at sætte et felt til en bestemt værdi ved indgang. Håber jeg på et tidspunkt må oprette et spørgsmål om, hvorledes man opretter en global variabel - eller endnu bedre - hvorledes man anvender en værdi fra en inputboks i et felt i den formular eller rapport, der åbnes.
bbkdk->læste du det, som jeg skrev til sidst? Er du sikker på, at du ikke har en standard-værdi defineret på feltet? Der er ingen tvivl om, at min linie kode virker og er den mindst resource-krævende, da den ikke skal slå noget som helst op.
Hej ThomasJepsen !! Du havde ret - ganske som sædvanligt. Der stod en standardværdi på feltniveau. Men samtidig må jeg sige at den ikke virker helt optimalt. Som du selv skriver, er feltet Sekrnr. tomt ved indlæsning, hvorimod Mugs løsning sætter den til det sekretærnummer, der står i den sidste post i den formular som åbnes. Og da kun poster med det sekretærnummer, som skal anvendes ved indberetning, åbnes, er feltet altid korrekt udfyldt fra start.
Hej ThomasJepsen !! Brugerens sekretærnummer indtaster han i en inputboks ved åbning af formularen, således at forespørgslen kun henter netop hans indberettede tidsregistreringsdata for de sidste 2 måneder - derfor kan sekretærnummeret ved åbning af formularen også sættes lig den sidste indberetning. Men ellers kan jeg godt se, at din løsning er mere overskuelig og sparer på systemets resourcer. Hvis du har en løsning på de sidste lille problem, nemlig at sekrnr er tom ved åbning af formularen, er der også points til dig.
Hej ThomasJepsen !! Jo - det giver fint mening og det synes også at virke fint - jeg har ikke haft tid til helt at gennemteste eksemplet. Mit største problem ved anvendelse af VBA er, at jeg altid har arbejdet med forespørgsler som grundlag for formularer og rapporter, og de har en lidt anden syntaks. F.eks. har jeg aldrig før anvendt en inputboks på den måde som du angiver, men hentet [kriteriet] fra forespørgslen. Jeg vil så snart jeg får tid bruge lidt mere tid på dit eksempel, da det faktisk også forklarer en del andre ting, der ofte giver mig problemer, når jeg forsøger at følge med i eksemplerne på "Eksperten" når der anvendes koder, f.eks hvordan men indsætter et modul i en procedure. Hvordan kommer jeg nu af med mine points til dig (er 60 ok?)
Pointene er ikke så vigtige. Jeg følte bare, at du gik glip af en god løsningsmetode, som du også kan bruge i andre henseender. (og min profesionelle stolhed fik sig et knæk, da min løsning blev overset, haha) Og da du allerede har brugt 60 point, synes jeg højest at du skal oprette et nyt spm med et symbolsk antal point (10-20 stykker) og skrive:
Hej ThomasJepsen !! Jeg har lagt denne kode på en kommandoknap:
Private Sub Kommandoknap12_Click() Dim seknr As String seknr = InputBox("Angiv sekretærnummer") DoCmd.OpenForm "Tidsregistreringsbillede", , , "sekrnr = '" & seknr & "'" End Sub
Jeg har også lavet et modul, hvor jeg erklærer seknr as string. Hvis jeg ikke erklærer varialen i ovennævnte kode, for jeg en fejl "Expected variabel or procedure, not modul" selvom den er erklæret i modulet.
I formularens ved indlæsning og efter opdatering har jeg indsat dine forslag til kodelinier.
Når jeg klikker på knappen får jeg så en inputboks hvor jeg så angiver mit sekretærnummer. Så får jeg følgende fejl "OpenForm handlingen blev annulleret" og når jeg debugger, er det følgende linie, der er forkert:
Jeg tror at fejlen er, at du har erklæret variblen forkert i modulet.
Den skal hedde: PUBLIC seknr as String
Hvis du bruger Dim i stedet for Public, så 'huskes' den kun af VBA-kode i samme modul.
Noget andet er, at du jo ikke kan bruge seknr som kriterie i f.eks. en forespørgsel, da VBA-variable kun virker i VBA. Det kan man løse ved at lave en funktion i et modul (gerne det samme modul som det andet) hvos du skriver:
Public Function Getseknr as String Getseknr = seknr End function
Derved kan du bruge GetSeknr direkte i forespørgsler og andre steder (og selvfølgelig også i VBA)
PS: Husk at fjerne 'Dim seknr As String' fra din kommandoknap12_click-procedure.
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.