Avatar billede ugotabe_kidding Nybegynder
29. juli 2003 - 09:08 Der er 13 kommentarer og
1 løsning

Opdatere værdier for hver record i fortløbende form

Jeg har en form+subform hvor jeg lister en række records - hver record har et felt "ExpirationDate" og når jeg på formen taster en dato vil jeg gerne have udregnet differencen mellem den tastede dato og alle "ExpirationDate"'s i den fortløbende subform - jeg har lavet et unbound-felt i subformen, men jeg får skrevet den samme værdi i alle felterne, selvom datoerne er forskellige:

Private Sub btn_CalcDate_Click()
Me.Remaining = (Me.Expiration - Me.Text23)
End Sub

Skal det ind i en form for løkke, for at få det gentaget for alle records, eller hur?

mvh
U.K.
Avatar billede terry Ekspert
29. juli 2003 - 09:17 #1
You can use the datediff function for this

DateDiff("d", Me.Expiration,Me.Text23)
Avatar billede terry Ekspert
29. juli 2003 - 09:22 #2
You could make the calculation in a query then us the query as the record source for your sub form. Then add an extra field to the detail.

If you enter the ExpirationDate on the main form then you could also get the query to use this field but you will need to requery the sub form IF you alter the value on the main form. You may also need to give the field a default value or you may get an error if the field is empty.
Avatar billede ugotabe_kidding Nybegynder
29. juli 2003 - 09:46 #3
Umiddelbart er jeg størst tilhænger af dit første forslag, men resultatet skrives kun for den 1. record - kan du hjælpe mig med en while/for-løkke, så jeg kommer gennem alle records?
Avatar billede terry Ekspert
29. juli 2003 - 10:07 #4
U.K>You shouldnt need a loop to do this! Is the field Me.Expiration on the main form, and Me.Text23 on the sub form?
Avatar billede ugotabe_kidding Nybegynder
29. juli 2003 - 10:14 #5
Jeg har pt. indtastningsfeltet (me.Text23) i subformens header. Me.Expiration er den ExpirationDate der er for hver record. Me.Remaining skal være differencen for mellem de to for hver record.
Avatar billede terry Ekspert
29. juli 2003 - 10:24 #6
So Me.remaining is also for each record?

In the fields control source you should be able to use

= DateDiff("d", Me.Expiration, Me.Text23)
or
= DateDiff("d"; Me.Expiration; Me.Text23)
Avatar billede ugotabe_kidding Nybegynder
29. juli 2003 - 10:36 #7
Xactly!
Jeg får en #name? fejl, når jeg sætter ovenstående ind i Remainings Control source... Er det fordi Me.Text23 som udgangspunkt er Null indtil man har tastet en dato og trykket på knappen "Calculate!" (Calculate udfører en Me.Recalc)
Avatar billede terry Ekspert
29. juli 2003 - 11:21 #8
It may be easier if you send the dB to me so I can see exactly what your doing eksperten@santhell.dk
Avatar billede ugotabe_kidding Nybegynder
29. juli 2003 - 11:53 #9
Sendt
Avatar billede terry Ekspert
29. juli 2003 - 12:54 #10
This works

=DateDiff("d",[Expiration],[Text23])
Avatar billede ugotabe_kidding Nybegynder
29. juli 2003 - 14:56 #11
It sure does!
Tak for hjælpen.
Ved nogle regnefunktioner står Access og tænker i lang tid, uden man kan gøre noget - kan man evt åbne en boks midt på skærmen, hvor der står "Calculating - Please wait"? Jeg ved godt at der står Calculating nede på statusbaren i venstre hjørne, men brugerne er sjældent klar over dette.
Avatar billede terry Ekspert
29. juli 2003 - 15:04 #12
If you can locate the line of code which is geting performed then you could make a little form which looks like a msgbox and open that BEFORE the line of code and then close the little form AFTER the line of code. Thats about all I can suggest
Avatar billede ugotabe_kidding Nybegynder
29. juli 2003 - 15:06 #13
Det leger jeg lidt med - tak for al din hjælp.

/U.K.
Avatar billede terry Ekspert
29. juli 2003 - 15:36 #14
selv tak :o)
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