Avatar billede hcthorsen Praktikant
30. maj 2012 - 22:06 Der er 20 kommentarer og
2 løsninger

Indsætte dato + x antal dage fra "main form" til "sub form"

I min Access database arbejder jeg med en main form med stamdata, og en subform hvor jeg indtaster data for hver dag. I main form indtaster man en dato (lad os kalde den x). Det ville være en stor hjælp, hvis posterne i subformen kan blive mærket med en dato (x + 1 dag, x + 2 dage, osv). Nogen der har ideer til hvordan man kan lave det?
Avatar billede mugs Novice
30. maj 2012 - 23:00 #1
Ikke afprøvet:


Me.DIT FELT = DateAdd("d";2;[DIT DATOFELT])

Hvor tallet 2 er udtryk for hvor mange dage du vil frem.
Avatar billede terry Ekspert
31. maj 2012 - 07:32 #2
I was wondering why you want to do that?
If you only expect to create one record in the sub form each day then you could just give the date field a default value

Date()

and if you made the date a unique index then you could only create one each day.

Maybe a bit more infor will help...
Avatar billede hcthorsen Praktikant
31. maj 2012 - 21:57 #3
Njah, jeg tror ikke jeg kan bruge jeres svar. Sagen er den, at jeg skal bruge databasen til at indtaste nogle historiske data i forbindelse med et forskningsprojekt. I "main form" indtastes en dato, som ligger noget tid tilbage. I "sub form" skal man så indtaste data for de følgende dage (som ligeledes ligger noget tid tilbage). Det vil være en hjælp hvis der i starten af "sub form" står hvilken dag det præcis drejer sig om, altså x + 1, x + 2 osv.
Avatar billede hcthorsen Praktikant
31. maj 2012 - 22:07 #4
Hej Mugs!

Jeg er for øvrigt så meget novice, at jeg ikke ved hvor jeg skulle sætte din programstump ind? Hvis jeg kunne få et lille hint, så ville jeg kunne prøve det af.
Avatar billede mugs Novice
31. maj 2012 - 22:18 #5
Som postkilde i et ubundet felt i formularen. Men det er avært at give noget eksakt bud, da vi kender alt for lidt til din database.

Du kan også indstte det i en forespørgsel således:

Udtryk9: DateAdd("d";2;[dato1])

hvor dato1 er det felt der indeholder en dato hvor der skal lægges 2 dage.
Avatar billede hcthorsen Praktikant
31. maj 2012 - 22:29 #6
Mener du "Kontrolelementkilde"?
Avatar billede mugs Novice
31. maj 2012 - 22:35 #7
Ja:

= DateAdd("d";2;[DIT DATOFELT])
Avatar billede terry Ekspert
01. juni 2012 - 07:47 #8
You need to calculate the days to add to date by counting number of records already created in sub form and adding 1.

So you need to make some code which counts records in sub form and adds 1 to this. You can use Dcount to do that.

Then get date from main form

Me.parent.NameOfDateField

then use DateAdd to add numbert of days

then finally put it in datefield on subform
Avatar billede hcthorsen Praktikant
02. juni 2012 - 23:53 #9
Hey! Er kommet lidt tættere på en løsning med jeres hjælp:

=DateAdd("d";DCount("*";"tabel";"[Id] = [Forms]![navnmainform]![Id]");[Forms]![navnmainform]![mitdatofelt])

Problemet er bare, at det kan være nædvendigt at køre frem og tilbage mellem de forskellige records (de forskellige dage), og så vender datoen jo ikke tilbage. Nogen ideer til hvordan den fixes?
Avatar billede terry Ekspert
03. juni 2012 - 09:52 #10
"Problemet er bare, at det kan være nædvendigt at køre frem og tilbage mellem de forskellige records (de forskellige dage), og så vender datoen jo ikke tilbage. Nogen ideer til hvordan den fixes?

?

That needs an explanation (vender datoen jo ikke tilbage).
Are you saying that the date is only visible when you are positioned on a record, or when you create the record?

You need to put the date in the field while you are creating the record, I would think in the before update event.
Avatar billede hcthorsen Praktikant
03. juni 2012 - 22:06 #11
Det jeg mener er, at det hele kører fint så længe jeg tilføjer nye record, men når jeg vender tilbage til en tidligere record, så vender datoen jo ikke tilbage til den dato der passer med den pågældende record, da den lille stump kode jo tæller det antal records der er i tabellen der hører til subform'en.
Avatar billede terry Ekspert
04. juni 2012 - 06:35 #12
do you have a relationship between records in main form and record sin sub form?

If you open table which is used in sub form can you see dates in the field?
Avatar billede terry Ekspert
06. juni 2012 - 18:04 #13
?
Avatar billede hcthorsen Praktikant
10. juni 2012 - 11:59 #14
Sorry! Har været på ferie. Main form og sub form er relateret via ID. Jeg får kun vist den udregnede dato i min sub form. Hvordan får jeg gemt den i tabellen der hører til sub-formen, så den ikke ændres hvis jeg kører tilbage til en tidligere record?
Avatar billede hcthorsen Praktikant
10. juni 2012 - 12:54 #15
Jeg prøver lige at skitsere mit problem igen, for jeg er ikke sikker på at det fremgår tydeligt:

Jeg laver en database til et lille forskningsprojekt. Jeg har lavet en hovedformular, hvor man indtaster nogle stamoplysninger om personerne. Dernæst skal der indtastes nogle oplysninger fra 7 på hinanden følgende dage, startende med en dato som er angivet i hovedformularen. Det er et større arbejde at finde de data, som skal indtastes i de 7 records i underformularen. Det kan være nødvendigt at køre frem og tilbage mellem dagene. For at undgå fejl vil det være en fordel, at der står hvilken dato man arbejder med nu. Jeg skal altså have et datofelt i underformularen.

=DateAdd("d";DCount("*";"tabel";"[Id] = [Forms]![navnmainform]![Id]");[Forms]![navnmainform]![mitdatofelt])

Ovenstående virker fint når man bare indtaster fra en ende af, men hvis man eksempelvis vender tilbage til record 5 fra record 7, så vender datoen jo ikke tilbage, da der nu findes 7 record. Jeg gemmer ikke datoen i tabellen, der hører til underformularen, men viser den bare i et ubundet felt.
Avatar billede terry Ekspert
10. juni 2012 - 12:55 #16
I dont kno whow you are showimng the date in the sub form butif it is being shown in a bound field then I would have assumed that it was also in the table too.

You need to add the date into the field while you are creating the new record in the sub form.
Avatar billede hcthorsen Praktikant
10. juni 2012 - 13:12 #17
Jeg viser datoen i et ubundet felt ved hjælp af ovenstående kode. Jeg har også prøvet at vise datoen i et bundet felt, men det kommer ikke med i tabellen.
Avatar billede terry Ekspert
10. juni 2012 - 13:38 #18
the field must be BOUND otherwise it will not be written to the dB and will therefore not be available next time to go to the record on the main form
Avatar billede terry Ekspert
10. juni 2012 - 13:40 #19
strangem I get an email saying a new comment has been added but its not visible here!

"Jeg prøver lige at skitsere mit problem igen, for jeg er ikke sikker på at det fremgår tydeligt:Jeg laver en database til et lille forskningsprojekt. ..."
Avatar billede hcthorsen Praktikant
13. juni 2012 - 21:10 #20
Selv om jeg bruger et bundet felt, så bliver data ikke gemt i tabellen. Der er skrevet om emnet tidligere (http://www.eksperten.dk/spm/215826). Er ikke blevet så meget klogere af det. Er det OK jeg deler point mellem jer, og så opretter et nyt spørgsmål?
Avatar billede terry Ekspert
14. juni 2012 - 19:11 #21
if you havent found the problem in this question how would creating a new one help?
Avatar billede hcthorsen Praktikant
14. juni 2012 - 20:33 #22
Det var bare for at påskønne den indsats I allerede har ydet. Jeg er jo kommet et stykke af vejen ved jeres hjælp. Kan du gennemskue om løsningen m.h.t. at skrive den beregnede værdi i tabellen skal findes i http://www.eksperten.dk/spm/215826 ?
Jeg er med på at det er en programmeringsmæssig unode at gemme beregnede værdier, men jeg kan ikke lige se hvordan man ellers skal løse problemet.
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