Avatar billede avalon116 Nybegynder
23. september 2002 - 14:43 Der er 25 kommentarer og
3 løsninger

Standardværdi

Jeg har en formular, hvor man indtaster dato og så en masse andet. Jeg vil gerne have den til i dato-feltet, at have som standardværdi den senest indtastede dato. Hvordan gør jeg det?
Avatar billede puppetmaster Nybegynder
23. september 2002 - 14:45 #1
Har du prøvet at skrive Now() i egenskaben Standardværdi?
Avatar billede signout Nybegynder
23. september 2002 - 14:45 #2
Det vil ikke give den senest indtastede dato, men datoen det er lige nu.. :)
Avatar billede puppetmaster Nybegynder
23. september 2002 - 14:45 #3
Sorry, prøv med Date()
Avatar billede puppetmaster Nybegynder
23. september 2002 - 14:46 #4
ok :(
Avatar billede puppetmaster Nybegynder
23. september 2002 - 14:47 #5
Det gør du ved at knytte en lille forespørgsel til selve formularfeltet, som kigger i tabellen efter den nyeste indtastede dato
Avatar billede puppetmaster Nybegynder
23. september 2002 - 14:48 #6
Ville f.eks. se sådan her ud i en forespørgsel:

SELECT Last(tabel1.Dato) AS SidsteOfDato
FROM tabel1;
Avatar billede puppetmaster Nybegynder
23. september 2002 - 14:49 #7
Skulle have været et svar
Avatar billede puppetmaster Nybegynder
23. september 2002 - 14:52 #8
Så hvis du sætter formularfeltets data til ovenstående forespørgsels udtryk, selvfølgelig tilpasset navnet på din tabel, så burde det virke
Avatar billede avalon116 Nybegynder
23. september 2002 - 14:52 #9
hvor skal det stå henne?
du er nødt til at skære det ud i pap.
Avatar billede terry Ekspert
23. september 2002 - 15:03 #10
Jeg har en formular, hvor man indtaster dato og så en masse andet. Jeg vil gerne have den til i dato-feltet, at have som standardværdi den senest indtastede dato. Hvordan gør jeg det?

Not quite sure I understand what you wnat to do but IF you want to enter the current date in a field when you start creating a new record, then you set the deafult value for the field in table DESIGN to
date()
Avatar billede avalon116 Nybegynder
23. september 2002 - 15:06 #11
nej, jeg vil have at den som standardværdi foreslår samme dato, som jeg senest har indtastet (altså sidst jeg indtastede noget i datofeltet).
Avatar billede avalon116 Nybegynder
23. september 2002 - 15:07 #12
forestil jer at I skal indtaste en masse forskellige ting under samme dato...så er det irriterende hele tiden at skulle indtaste den samme dato, for hver ny ting der skete på denne dato
derfor mit spm.
Avatar billede terry Ekspert
23. september 2002 - 15:11 #13
OK, in the BEFORE INSERT event for the form you need to place som ecode similar to this

me.TheDateField = DMax("ThedateField", "TheTable")
Avatar billede avalon116 Nybegynder
23. september 2002 - 15:12 #14
men giver det ikke den nyeste dato i tabellen, og ikke den senest indtastede?
Avatar billede avalon116 Nybegynder
23. september 2002 - 15:16 #15
og hvad er me.?
Avatar billede terry Ekspert
23. september 2002 - 15:17 #16
me is just another name for the form

OK make a query and sort by ID DESC if you have an ID then use Dfirst function to get the date.
Avatar billede terry Ekspert
23. september 2002 - 15:21 #17
Dlookup("TheDate", "theTable", "ID = " & Dmax("ID", "theTable"))
Avatar billede mugs Novice
23. september 2002 - 18:47 #18
Hvis du med senest indtastede dato mener den højeste værdi, så kan du bruge terry's forslag. Men du skriver ikke noget om, hvorvidt den seneste indtastede dato altid er højeste værdi. Hvis du f.eks skal ajourføre en db for hændelser der skete tidligere end idag, nytter det ikke at benytte Dmax.

Du er i sådanne tilfælde nødt til at sætte feltets standardværdi (Defaultvalue) til den sidst indtastede værdi i formularen. Nedenstående kode sætter dafaultvalue i tabellen, alt efter hvad du indtaster i formularens felt1. Jeg skal dog tilføje, at koden kun fungerer i en anden tabel end den, der i øjeblikket er åben.

Dim db As DAO.Database
Set db = CurrentDb
Dim tbl As TableDef
Set tbl = db.Tabledefs("Tabel2")
tbl.Fields("felta").DefaultValue = Me.felt1
Avatar billede terry Ekspert
23. september 2002 - 20:06 #19
avalon116>how are things going here?
Avatar billede avalon116 Nybegynder
23. september 2002 - 20:20 #20
pyha...jeg troede det var et let spm., men tak for jeres ihærdige forsøg.
Til mugs: hvor skal denne kode skrives? (jeg er ikke så stiv i det her)
Til Terry: problemet med din løsning er netop at den finder den største dato og ikke den senest indtastede - og det er den jeg er ude efter.

Mine tanker går lige nu på, om man kunne gøre sådan noget i denne retning: når formularen åbnes er det ok at der ikke står noget i datofeltet. man indtaster sine data  (herunder datoen). Når man så går ud af datofeltet kunne den måske gemme/huske det indtastede og indsætte det i næste post (indtil man lukker formularen - så skal man begynde forfra, hvilket er ok). Kan det være vejen frem?
Avatar billede mugs Novice
23. september 2002 - 20:23 #21
Koden kan du skrive i datofeltet, om du vælger BeforUpdate, AfterUpdate eller Exit er nok en smagssag.

Blot skal du huske, at koden ikke kan bruges i den tabel der er åben. så vil du få en fejlmelding, at tabellen er låst.
Avatar billede avalon116 Nybegynder
23. september 2002 - 20:49 #22
jeg har nu prøvet mugs forslag og det virker sådan set...bare ikke helt til det jeg skal bruge det til. Det sætter standardværdien i en ny tabel som jeg har oprettet til lejligheden, men det var jo standardværdien i formularen jeg ville sætte. Kan man ikke få den til at gemme den indtastede værdi i en variabel eller lignende og så sætte standardværdien i formularen til denne værdi?
Avatar billede mugs Novice
23. september 2002 - 21:00 #23
Du har jo fået svaret på, hvordan du får en standardværdi i tabellen. Herefter kan du benytte terry's forslag, til at hente max værdien ind i din formular. I formularens OnCurrent hændelse kan du indtaste terry's kode, og sætte dit datofelt således: 

Dato = Dlookup("TheDate", "theTable", "ID = " & Dmax("ID", "theTable"))

Du bliver dog nødt til at tilføje et ID til den nye tabel, så den højeste værdi findes, f.eks et Autonummereringsfelt så den sidst indtastede dato dermed får det højeste autonummerværdi.
Avatar billede mugs Novice
23. september 2002 - 21:43 #24
Min sidste kommentar mangler noget. Hvis du sætter koden ind i formularens OnCurrent, vil datafeltet få den maksimale værdi. Det betyder, at du ikke kan åbne formularen uden at datofeltet skifter værdi, og det kan ikke være meningen. Derfor er du nødt til at sætte en betingelse på:

If Me.NewRecord Then
Dato = Dlookup("TheDate", o.s.v. o.s.v
End If

Nu vil feltet kun hente en ny dato hvis du opretter en post.
Avatar billede terry Ekspert
24. september 2002 - 08:07 #25
avalon116>
If you do NOT have an autonumber then you CAN NOT find the last inserted record. So you MUST add an ID column to your table and make it an autonumber.
Then thsi WILL find the last inserted record and NOT the highest date.
Dato = Dlookup("TheDate", "theTable", "ID = " & Dmax("ID", "theTable"))
Avatar billede puppetmaster Nybegynder
24. september 2002 - 08:37 #26
avalon116, har du fået svar eller?
Avatar billede avalon116 Nybegynder
24. september 2002 - 11:03 #27
ja det lyder til at det må være løsningen. jeg har ikke haft tid til at afprøve endnu, men I får jeres point. jeg ved ikke hvad der er bedst, sp I må dele. håber det er ok.I hvert fald tak for hjælpen.
Avatar billede avalon116 Nybegynder
24. september 2002 - 11:05 #28
mon man kan få den til at overskrive data i den nye tabel, så der hele tiden kun er et felt (det felt som man henter standardværdien fra)?
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