Hejsa jeg har en formular hvor jeg har et felt som beregner tid ved hjælp af =DateDiff("n";[Start_Tid];[Slut_Tid]) . Dette gøres i Control Source. jeg har så et felt i min tabel hvor jeg vil have overført resultatet af beregningen. Nogen foreslag?
Det er en god tommelfingerregel at du ikke skal gemme noget i din tabel, som kan beregnes via andre felter. Da du formentlig allerede gemmer Start_tid og Slut_tid kan du til hver en tid i en forespørgsel få vist forskellen. Det behøver du ikke gemme det i tabellen for. Hvad så hvis du har beregnet forskellen og Start_tid ændres? Så passer beregningen ikke længere og der er ingen måde at opdage det på (let).
Hvis du alligevel vil gøre skal du have rettet din recordsource/kildedata til dit felt, så det svarer til feltet i tabellen. Så kan du f.eks. på en hændelse indsætte følgende:
Private sub Start_tid_afterupdate() If not isnull(me!start_tid) AND not isnull(Me!slut_tid) Then Me!mitfelt=DateDiff("n";[Start_Tid];[Slut_Tid]) End if End sub
Så beregner den dog forskellen hver gang markøren forlader feltet Start_tid.
Hej Jesper Tak for dit fyldst gørende svar. Kan godt se nu at jeg ikke behøver at gemme det direkte i databasen. Jeg prøvede som du sagde men visuelt basic ville ikke godtage DateDiff("n";[Start_Tid];[Slut_Tid]) hvis jeg ændrede ; med , godtog den det men returneret en dato, istedet for minuter som DateDiff("n";[Start_Tid];[Slut_Tid])gør.
Me hvad står det for i visuelt basic, har det den variabel når jeg har surftet lidt rundt i svarene her.
Først og fremmest er der den forskel at hvis du bruger et udtryk som: Datediff... og andre indbyggede funktioner skal der bruges ; som argument-seperator hvis du indtaster f.eks. direkte som recordsource/kildedata bag et element på din formular (det er det du har været ved). Hvis du bruger det samme udtryk i VBA (visual basic i Access) skal du bruge komma i stedet som seperator. Jeg ved ikke hvorfor det er sådan, men det er det :-)
Me!start_tid er måden du kan referere til feltet "start_tid", NÅR koden kører fra samme formular. Me! betyder altså at feltnavnet skal være at finde på samme formular.
Andre måder at referere til et kontrolelement er: Me!start_tid Me.start_tid Me("start_tid")
Brug den første hvis du kan. Nr. 2 har den fordel af du får hjælp af "intellisense" mens du programmerer. Dvs. du får vist en liste, som hjælper dig, hvis du ikke selv kan huske navnene på alle kontrolelementerne på din formular. Nr. 3 er smart hvis du skal referere dine kontrolelementer i et loop således:
Do while.. Me("boks" & i) i=i+1 Loop
da man så kan f.eks. indsætte noget i felterne boks1, boks2, boks3 osv.
og så var der lige spørgsmålet - hvilket format er Start_tid og slut_tid ?
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.